Microcontroller for students- Suggestions please! - Page 1
Forum section: electronics / general

author: McPete
author_rank: Regular Contributor
timestamp: April 18, 2011, 01:43:13 pm
content: Hey all,I'm after some advice to pass on to my microcontrollers teacher- we need a MCU and development board to replace the Motorola/Freescale MC68HC11.It needs to be cheap in small quantities, and easy to work with in assembler, and probably connect via USB.I have suggested the MSP430 Launchpad, but he found the IDE too complicated for students, and the devices too limited. Others in my class are suggesting ARM based devices, but that sounds to me like using a sledgehammer to open a walnut.What do people rate for learners?

author: firewalker
author_rank: Super Contributor
timestamp: April 18, 2011, 01:54:23 pm
content: Have a look at Arduino.http://arduino.cc

author: Scrts
author_rank: Frequent Contributor
timestamp: April 18, 2011, 02:59:02 pm
content: Quote from: firewalker on April 18, 2011, 01:54:23 pmThe hardware is OK, like all AVRs, but DON'T USE THAT SKETCH PAD!!!

author: Zad
author_rank: Super Contributor
timestamp: April 18, 2011, 04:29:47 pm
content: How is the Arduino at assembler? I know it uses its own C-like language but is there an assembler for it too?

author: Bored@Work
author_rank: Super Contributor
timestamp: April 18, 2011, 05:05:33 pm
content: Arduinos have Atmel AVR MCUs. There are two main issues here:1) The whole Arduino environment is made for hand holding artists and similar people who "won't get it". It is totally unusable for teaching engineering students how things really work.2) Native Atmel tools are also not good, since Atmel released a new IDE called AVR Studio 5.So with AVRs you have on one child toys catering for the idiots (Arduino), on the other end you have a 0.5 GB IDE (AVR Studio 5), completely out of tune with reality. And not much any more in between.IMHO this makes AVRs (in the form of Arduinos or otherwise) totally useless for teaching engineering students.

author: TheDirty
author_rank: Frequent Contributor
timestamp: April 18, 2011, 06:30:52 pm
content: LPCXpresso seems like a good fit as long as you don't mind being stuck with CodeRed.You can also try the STM32 Valueline Discovery kit.I assume they used CCS with the Launchpad. If that's the case, I'm not certain what you are going to do, because it's not that complicated.

author: Mechatrommer
author_rank: Super Contributor
timestamp: April 18, 2011, 09:55:46 pm
content: how about PIC? and imho, you dont need to buy the development board. just ask the student to connect to proper ICSP pin from programmer, and few resistors and LED to play with. you need a breadboard or something though.

author: Unknown
author_rank: Unknown
timestamp: April 18, 2011, 11:10:59 pm
content: Quote from: BoredAtWork on April 18, 2011, 05:05:33 pmAVR Studio 4 is not dead (yet), it's still supported as long as AVR Studio 5 is still in beta (which could easily take another year, given Atmel's track record for timely releases).The LPC Xpresso seems like a good option to me: choice of various ARM Cortex M0 and M3 models, with lots of peripherals. I think the LPC1769 with USB host and ethernet is also available, but for beginners the smallest Cortex M0 should be fine. STM32 is another option: cheaper devboard, more restricted IDE (I think the license was limited to something like non-commercial use?), less powerful MCU. Make sure the license of whatever development board and IDE/compiler you use allows you to use it, I remember one of them being considered unsuitable for training purposes because of the license, at least for commercial courses.The advantage of ARM is that it's (kind of) vendor-neutral and gaining popularity, which in my eyes is better than some proprietary architecture like the 8/16-bit PICs, MSP430 or AVR, which are losing market share to the new cheap low-power 32-bit parts (at least that's what the various ARM manufacturers are telling us).

author: frank26080115
author_rank: Regular Contributor
timestamp: April 19, 2011, 06:24:26 am
content: Hey I'm an university student myself and my product, a AVR dev-kit with USB, is sold on Seeed Studio herehttp://www.seeedstudio.com/depot/usnoobie-kit-p-708.html?cPath=104_128Oh, also I have a MBED, which has been pretty nice

author: Neganur
author_rank: Unknown
timestamp: April 19, 2011, 10:00:53 am
content: People here use AT90USBKEY (27€, AT90USB1286, 8-bit) with WinAVR and AVRStudio 4. I think the reason is the debugger, pretty useful while learning/teaching.They also use the mbed (50€, LPC1768, 32-bit) and LPCXpresso (LPC1769).I could ask them why they chose this hardware if you like. I remember that the main criteria were software and debugger or something.The current microcontroller lecturer has no PIC experience and hence avoids it.I personally disliked the MSP430 IDE too. Installing it was really annoying.

author: alvarop
author_rank: Contributor
timestamp: April 19, 2011, 11:05:29 am
content: The best thing about the MBED is how it's programmed. It connects through USB as a mass storage device and you just drag and drop the binary file, that's it! That being said, the compiler is online (although I hear you can download a standalone one). Some more information on Assembly and MBED:http://mbed.org/cookbook/Assembly-LanguageOne maind drawback is the lack of debugging. You'd have to run it in a simulator, make sure it works, then program the actual device.In my university, they use a non-launchpad MSP430 dev kit to teach assembly.

author: logictom
author_rank: Unknown
timestamp: April 19, 2011, 12:45:00 pm
content: How about the microstick from Microchip?http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en548414At $25 it comes with a pic24 and a dspic33, in built programmer/debugger and plugs into a breadboard.MPLab is free and there's a free compiler for academic use. Universitys also get a 25% discount on development tools.Anyone would think I work for microchip.....

author: McPete
author_rank: Regular Contributor
timestamp: April 23, 2011, 05:43:17 am
content: Hi Guys,Thanks for the suggestions!The MBED does look nice, but at ~$100 per unit, it's a bit pricey for technical college students! Arduino and stand-alone ATMEL hardware has been suggested in the past, but again, our teacher regards them as difficult for teaching assembler.The Microstick though, that looks about right. Limited device support, but heck, it's a fairly powerful 16 bit MCU, with options for doing DSP work as well, it's USB connected and it plugs right onto a breadboard for debugging. At ~$25 Australian, it isn't out of reach either. I think the trade classes (I'm doing an associate degree/diploma) use PICs, so all the computers already have MPLAB on them, so that's less hassle- the college IT department is a bit funny about that sort of thing.I'll definitely be passing that along to my teacher. Thankyou all!P.

author: sigxcpu
author_rank: Regular Contributor
timestamp: April 23, 2011, 08:53:24 am
content: Quote from: BoredAtWork on April 18, 2011, 05:05:33 pmHave you ever used GCC for AVR? I'm asking because I've never used anything else.

author: Mechatrommer
author_rank: Super Contributor
timestamp: April 23, 2011, 02:31:55 pm
content: Quote from: sigxcpu on April 23, 2011, 08:53:24 ami think he meant this... (picture) can do C as well, but i did it in asm (thats the way i prefer for this particular task) and still, using AVRStudio4

author: apex
author_rank: Regular Contributor
timestamp: April 23, 2011, 08:55:18 pm
content: I really don't get what people don't like about the AVR Studio 5."Oh my god, it's 0.5GB large!"Well, if you buy a computer today, you have at least 80GB.It is really user-friendly, does Code Completition and looks nicer than the old one.It is that retro-love again.Or just being a PIC/NXP/STM/...-Fanboy.Now, back to the topic.I would recommend using an Arduino.It uses a 8-bit microcontroller (using just 8 bits is something other than using 32 bits), is relatively cheap but also of a high build quality and you can start really easy but go in detail very quick. With the shields, you have a simple option to use advanced hardware configurations. And if you want to teach them how to make their own boards, they can still program their chips with the Arduino Hardware and the AVRDude Companion.The toolchain of the AVRStudio 4, well, you could call it "good for teaching purposes" and the AVRStudio 5 looks really good, since it is Visual Studio based.On the other hand, you do have a quite powerful tool with the LPCXpresso.You do have an ARM system with all the extra functions.The development platform is Eclipse based, so it also looks reasonable good, but from my perspective not as good as the AVRStudio 5.The point against it is the hardware.No DIP package, at least two power rails and a really complicated setup.PICs are also nice, a bit like the AVRs, but I don't really know them.Other µControllers like the RC8 or the STM series, well, if you like them, you could use them too.Please choose.I hope you'll find a good setup for your students.Apexys

author: Neganur
author_rank: Unknown
timestamp: April 24, 2011, 12:23:18 am
content: Not sure how it's for other universities, but at least two I've been at had very strict policies (read: prohibit) about students installing any software on uni computers. AVR Studio 5 is beta still, that alone makes it impossible to even suggest it to the IT department. We have a pretty comprehensive software bundle otherwise and there's always the virtual desktop to run eclipse et al.How's it at your uni?

author: philbx1
author_rank: Regular Contributor
timestamp: April 26, 2011, 06:59:24 am
content: Quote from: McPete on April 18, 2011, 01:43:13 pmI remembered this one from a Silicon Chip article, and although there are Arduino boards out there, this onemight be more applicable for teaching.http://www.siliconchip.com.au/cms/A_111673/article.htmlhttp://pjradcliffe.wordpress.com/open-usb-io/

author: Bored@Work
author_rank: Super Contributor
timestamp: April 26, 2011, 07:25:57 am
content: Quote from: apex on April 23, 2011, 08:55:18 pmLike, for example, that it doesn't work?Granted, that is only a minor issue in the light of the polished, Code-Completion doing graphical user interface. But call me old fashioned, I prefer tools that do work anytime over tools that are shiny.You can insult people over this all the time ("fanboy", "retro-love"), but I just call people who not only prefer, but even recommend non working tools, stupid, incompetent, clueless assholes. You get the idea?

author: metalphreak
author_rank: Frequent Contributor
timestamp: April 28, 2011, 07:10:18 am
content: Not entirely sure what the focus of the unit is, but most of the embedded systems units I've done at uni focus on how the microcontrollers work, ie Assembly, learning opcodes etc. Basically bare metal workings of the devices. The whole Arduino environment is targeted at end product results with various levels of abstraction away from the low level stuff. We used the Atmel Butterfly development boards and the unit coordinator had everything setup so you could plug them into various circuits.

author: Trigger
author_rank: Regular Contributor
timestamp: April 30, 2011, 05:17:20 pm
content: If you want a serious foundation in microcontroller programming you'll need to focus on something that makes you write in real C. That rules out the Arduino, Basic chips, Propeller, etc. If it's for education use then I'd say Microchip. Their Academic department is friendly and very helpful. They'll often send a bunch of seed hardware for a class for free and give the instructors free training at a local training center. A 25% discount on all development tools they don't send you for free is a nice perk as well especially when you get up in the $400+ range for the high end debuggers and programmers.Once you have a good foundation in C and in manipulating registers in micros it's easy to switch to TI, Atmel, Energy Micro, NXP, etc. Microchip is just really cost effective to learn with because of their excellent academic department.I really like AVRs but Atmel's Academic department will only deal with universities and schools, not individual teachers or hobbyists looking to teach others.Don't even bother learning assembly until you understand microcontroller programming in general and settle on your favorite. If you focus on too much assembly then you just lock yourself into a specific microcontroller family which is just a bad engineering practice. With C you can choose the best part for the job and be able to quickly spin up on programming it.

author: Trigger
author_rank: Regular Contributor
timestamp: April 30, 2011, 05:38:30 pm
content: Quote from: apex on April 23, 2011, 08:55:18 pmReally? It doesn't quite work yet and on top of that their craptastic IDE killed my Visual Studio install.Your tossing of the 'fanboy' tag only tags you as an AVR fanboy 'dickhead' defending broken tools that shouldn't be out of beta yet.

author: Mechatrommer
author_rank: Super Contributor
timestamp: April 30, 2011, 05:58:45 pm
content: Quote from: Trigger on April 30, 2011, 05:17:20 pmwhy C? and how are you going to manage porting your code to other mcu (i mean anything other than the original intended chip) without any modification?and what makes you think (assuming, since you mentioned it) arduino is not a real C?ps: why beginners dont have respect to seniors nowadays? i got three hit tonight!

author: Trigger
author_rank: Regular Contributor
timestamp: April 30, 2011, 06:53:25 pm
content: Quote from: Mechatrommer on April 30, 2011, 05:58:45 pmArduino hides too much from the programmer. It may be C syntax but it hides the workings and understanding of what's going on with the pins and registers.Instead of all of the pinMode(), digitalWrite(), etc, you need to understand how to set the chip register bits to control the ports. The ATMega328P has features that the Arduino IDE doesn't even touch. The Arduino environment also severely limits your chip choices. It doesn't make sense to use an ATMega328p when an ATtiny13 does the job.You'll never use the chip to it's full potential unless you learn how to manipulate the registers directly and C is the industry standard.I never said anything about porting code to another MCU. I meant the engineer having the ability to choose the best part for the job. If you know C and are familiar with register manipulation it's easy enough to pick up programming another MCU. If you've been working with PICs you still have the ability to use an AVR with little difficulty. There are compiler and minor syntax differences but you're still manipulating registers and coding in C. It's the same with an MSP430 once you learn the syntax for register manipulation it's back to C programming. Yes, each microcontroller has it's own particularities but the point is that you have the ability to switch when you need to.

author: logictom
author_rank: Unknown
timestamp: April 30, 2011, 07:05:43 pm
content: Quote from: Trigger on April 30, 2011, 06:53:25 pmI definitely agree with you there. If the person is happy using Arduino and doesn't plan to progress to other micros then fair enough but if you do change and all your experience is with the Arduino setup, where you have all the functions for the hardware written, it will be quite a leap to then have to manipulate all the registers yourself.I'm trying to move from the Microchip architecture to Arm and it's making my head spin all the options you have.With Microchip there's primarily one IDE, a couple of compilers and the standard development tools (and their clones) where as Arm there seems to be a 101 options for each part of the process. I'm getting there..... slowly.

author: Trigger
author_rank: Regular Contributor
timestamp: April 30, 2011, 07:33:19 pm
content: Quote from: logictom on April 30, 2011, 07:05:43 pmI'm using an IAR toolchain for ARM, but that's the company standard. It's a huge jump to go from something like an 8 bit PIC to a 32 bit ARM, especially if the ARM chip in question has a large feature set which means a huge number of registers to look up for development.

author: Mechatrommer
author_rank: Super Contributor
timestamp: May 01, 2011, 07:37:17 am
content: i read this thread later from the other one. yes you are correct about your point about hiding registers etc. arduino->microchip, microchip->arm, arm->spartan whatever = headache? learning curve? thats the normal circumtances i guess. but some people want to stick within their "comfort zone", any more progress, or further knowledge development is not in that "zone" anymore. and/but we cannot blame them. different people with different needs. that was my whole point.btw: i forgot one more point. why dont assembly? if all you want is registers manipulation? and what favorite you talking about? everybody's favorite (artist) is arduino?and for the pop quiz: whats the difference between a "language" and a "library"?... your catch!Quote from: Trigger on April 30, 2011, 05:17:20 pm

author: Trigger
author_rank: Regular Contributor
timestamp: May 01, 2011, 02:58:15 pm
content: Quote from: Mechatrommer on May 01, 2011, 07:37:17 amThat can be answered from a person's goals in learning. If one desires to learn from the practical standpoint and get on with building cool things then spending time on assembly at first is a delaying effort. It's best to wait until they settle into an architecture that is comfortable ("favorite") and then they can spend the time learning how to manipulate things in greater detail with assembly to compliment their skills.Then again if someone is learning from the theory standpoint, or computer science, then learning assembly is a good fit to the bottom up philosophy of education.Assembly is a very useful skill, but it depends on a persons goals as to when they should learn it.

author: jasonh
author_rank: Contributor
timestamp: May 01, 2011, 10:02:58 pm
content: Being new to this I have just had a bit of a look around about port manipulation as my understanding is that arduino is using C and that the code you write is compiled by the gcc compiler. Given that I wondered why you could not do things directly.As it turns out there is no reason why you need to use the higher level libraries that make life easier for you 99% of the time.if pinMode or digitalWrite turn out to be to much overhead for you, or if you just want to see how it is done you can do it exaclty as you would using avr studio.Having said that, from my pc development I prefer to use a higher level math library most of the time and only go to the low level when absolutely necessary. That seems to be the case here. Easy to use libraries with the option to go as low level as you need when ever you want to?Perhaps it should be made clearer that arduino is not a language that looks like C - it is C and you can go low level.I am new to the environment so I am prepared to be shown up as wrong but thats what I have found.Trigger, I am wondering if you have used arduino much as some of what you are saying could look correct to a casual user but does not seem binding as to it's restrictions?

author: Trigger
author_rank: Regular Contributor
timestamp: May 02, 2011, 12:23:30 am
content: I have a few Arduino boards laying around and I do use them if I need to put something together quickly.Maybe I've been trying to go about explaining my point the wrong way. I never said it was impossible to go low level on the Arduino though.Ok, let me try to explain it this way.As a hobbyist the Arduino is probably going to cover about 90% of what you want to do, not counting the advanced stuff for the sake of simplicity in explanation. You can make your own boards but if you're using the Arduino libraries you're pretty much stuck with the AVR chips they support. (yes you could port the library but that's beyond the scope of this and if you can port it then you obviously know the core C and registers bit so it's a moot point)As an EE/CE professional or someone on the path to be one, start with C and register manipulation. This way you have a huge variety of tools available to you from the start. I think a lot of the fun of a project is doing the research to find the microcontroller that best fits the project, or better yet a number of possible ones. That of course gives you the chance to get different microcontrollers (and free dev kits if you're good at social engineering the sales guys) and experiment with them. I geek out like a lot of engineers when I get that new dev board in hand and start playing with it. If you're going to be or aspire to be an engineer then why not start by investing the time to learn that core professional skill that you can apply throughout your career, and put on your resume.So understand that I look at the question from a professional's viewpoint, not a hobbyist.Though on a very loosely related note if you've only learned Arduino you won't be able to participate in the badge hacking at DEFCON! (The badges have used Freescale micros the past few years) Joe's probably going to design an Arduino based badge one year just to spite me if he knew I said that.

author: jasonh
author_rank: Contributor
timestamp: May 02, 2011, 01:10:15 am
content: Trigger, yes I would agree with you. If you are starting out a career in this area then arduino should not be your only tool, but it could still be useful for mucking around with. I am in tune with what you are meaning.It is in the marketing with arduino, they market it as a simple way to get in to this area but I was trying to make it clear that you still have a lot of freedom to go low level with the chips that they support.I agree that they would primarily be used at a hobby level but it wouldn't surprise me one bit to find they are at the heart of some small quantity/niche commercial products.Slightly to the side of this, when I joined the board from looking at the blogs, I thought this board was a lot about hobbyists, although I get your specific points when addressing questions like the OP. I guessed that the content Dave was delivering wasn't aimed at already established EE's.What I don't get is stuff like BoredAtWork says about it in this thread i.e. 'The whole Arduino environment is made for hand holding artists and similar people who "won't get it"' or 'So with AVRs you have on one child toys catering for the idiots (Arduino)'This may be my wrong perception of what this forum is about but I didnt join because I am an EE. I am no idiot as either, with my background this already seems quite intuitive. I have done a lot of bitshifting in the past in the computing space.You pick the right tool for the job and sometimes that could be the idiots tool but I have seen many an 'idiot' sitting waiting for the expert to finishI only look at the forums to see that the beginners section has the second highest number of posts behind general, and I would think most of them will never have a career in EE. So while I see comment like BoredAtWork may be more appropriate at a forum for professional engineers I don't see how it fit's in with the audience here?Anyway, my 2c.

author: Tony R
author_rank: Regular Contributor
timestamp: May 04, 2011, 04:16:15 pm
content: It seems that people assumed that this was for university level, but could it be for high school? I would assume that if it was a university level class your prof would know off hand what he wanted to teach.with that said, if this is some high school class the PIC offers some great features... and they are easy to get free samples from.If this is a university class, ARM is the way to go.

author: Mechatrommer
author_rank: Super Contributor
timestamp: May 04, 2011, 11:34:26 pm
content: Quote from: Tony R on May 04, 2011, 04:16:15 pmi had friend(s) back in U whose mentally a bit lower than high school people.

author: McPete
author_rank: Regular Contributor
timestamp: May 08, 2011, 10:51:02 am
content: Hey all,The Microstick looks great- I'll be passing that along tomorrow.As I said, I'm studying at a TAFE (Technical And Further Education) College, at an associate level. TAFE, sadly, gets stuff-all funding and as a result has limited and aged resources (staff included). My plan is to get my bachelor's after my Adv. Diploma, but that's a way off yet...I did an electronics class in high school- that was mostly electronic literacy (reading colour codes, basic electrical theory) and basic assembly skills. Maybe things have changed in four years, but I doubt many schools in this country would be set up to teach anything so lofty as microcontrollers.

author: Trigger
author_rank: Regular Contributor
timestamp: May 08, 2011, 09:45:14 pm
content: Quote from: Mechatrommer on May 04, 2011, 11:34:26 pmAgreed, and ARM is not the end-all-be-all of microcontrollers.

author: Bloch
author_rank: Unknown
timestamp: June 07, 2011, 09:12:41 pm
content: QuoteThen a newbee want to learn his first programing language. Then there is only one and thatPascalQuoteQuoteThen the students are ready to do "bad"and "unsafe"programs then please move to C or that they fancy.So i will point tohttp://www.mikroe.com/eng/categories/view/2/compilers/as in good/freeThey can use PIC / PIC24 / PIC32 / AVR / 8032 That they select I dont thinks matters that much !But one commes to mind PICKIT 2 / 3 cheap ok for newbeeLars

author: westfw
author_rank: Super Contributor
timestamp: June 13, 2011, 09:13:28 am
content: So I don't get it.What's wrong with using Arduino hardware because it's cheap, readily available, reasonably usable, and populated with a relatively popular and usable microcontroller, and then having your class program it in Assembler or C as appropriate to the other content and aims of the class? All things considered, it's just an AVR chip with a power supply, USB/Serial converter, and a bootloader. You can stick to the Arduino IDE if you decide to teach C (ignoring the arduino libraries), or use something else. (The bootloader is a big help; you won't need programmers PLUS development boards.) For example, people have set up Eclipse, Netbeans, Visual Studio, and Geany (??) to work with Arduino. If you don't need the Arduino SW handholding, it would be considerably easier to set up. (OTOH, Arduino has no debugger support...)Likewise, why argue about the merits of AVRStudio 5 when there are so many development boards out there that will work fine with AVR Studio 4 ?You could put together a simplified development environment for LaunchPad, too. (But there have been LONG delays actually getting launchpads.) I would say that the MSP430 is probably closer to the 6811 than most other modern microcontrollers. TI has several other reasonably-priced development boards for the 430...

author: Psi
author_rank: Super Contributor
timestamp: June 13, 2011, 09:49:43 am
content: Personally, id give them a commonly available atmega and get them to build the dev board themselves, then they can write the demo code and tools too. Then pick out the best of what they produce and use it for next years students.There's nothing like making your own stuff to learn on. i'm not really a fan of premade demo boards.I'd probably just teach C, ASM would be an optional course.But again, that's just me.