I want to start learning and using microcontrollers.
I've a few questions before starting:
- What microcontroller should I be using ? I've seen people everywhere recommend either PIC or AVR... My own friends in the field are divided between fanboys of each so none of them give unbiased answers.
- If it helps, I know C programming pretty well. Is it alone enough for microcontroller programming or do I need to learn assembler ?
- Since C is a standardized language, is it the same for all types of microcontrollers ? If not where does it differ ?
- I use Linux, not windows. Are both PIC and AVR well supported there ?
- Other than the two above mentioned architectures, what other options do I have ?
- Which of the two is the most general purpose ?
1. The biggest decider I find in whether to use any microcontroller is the availability and cost of the development tools (programminghardware and software). If you aren't completely clueless about how things the concept of how to program a microcontroller (coniguration registers and such) and can handle SMD components, I actually think it might be best to go with ARM Cortex M3. THe programming hardware is cheap and the compilers can be cheap or free, and it gives a lot more headroom to grow in since there are much more powerful ARM processors out there.
2. I don't think you need to know assembler...it certainly helps though because it teaches you how the registers have to be manipulated and how things work in the background which can increase the efficiency of your programming.
3. It's basically the same but not all things are supported by every compiler. THe largest variation will be the configuration registers and how they have to bet set up. But that doesn't realy count as part of the programming language itself.
4. I think they are, but I don't use Linux.
5. As I mentioned earlier, ARM.
6. Neither and both. It's like asking what car is better suited for a general use? A Honda or Ford?
Both AVRs and PICs will serve you well.
The last time I checked the programming tools for PICs on linux were not too great. That alone would suggest you go with AVR.
C standards do not cover microcontroller related issues. Processor configurations and device/port names vary be compiler vendor and processor core.
As far as "tools" are concerned, the only thing I need is a free, strong, optimized C compiler...
As far as "tools" are concerned, the only thing I need is a free, strong, optimized C compiler...
Arduino seems to have the most attractive IDE and programming language (wiring) option I've ever seen:
As a uC to start with, I want something which does the same thing that Python did to programming languages. It should be easy to learn, easy (read: QUICK) to code (since time is money), and it should have a strong community support. At the same time it should also be cheap.
Sounds reasonable. You seem to be more in touch so I will step back from this one.Nah, I just thought we convinced him that the choice of IDEs and compilers are very important for embedded. The fact the sescond two quotes coincide with each other to oppose the first, supports that.
The large ST Arm Cortex-M3 100 and 144 pin chips run around $20, at least according to Digikey. THe smaller 36, 48 and 64 pin ones run anywhere from $3 up to $12 depending on memory capacity rather than pin-size. Remember that they are surface mount only- no DIPs if that matters to you.
Yes, a lot of hobbyists do use Arduino because it's programming was made to be user friendly to those unfamiliar with embedded systems. Of course, what you always sacrifice when you do that is versatility and power. In that sense it's different from PIC, AVR, and ARM and so I don't think any bare chip has the same support amateur-support Arduino has. I don't know much about else about Arduino but there are a lot of UAV projects on DIYDrones that use them.
From your Python description it sounds like you want something like ARduino. From there you can move one to whatever you like because by then I would think you woudl have a feel to what everyone is talking about here. I started with OOPic R+ personally, and went onto bare PICs one project afterwards. Let me tell you, though there was a lack of versatility with the OOPic because there were no registers to configure, it was a helluva lot faster and straightforward because I could intantiate objects in the code that represented real hardware and those took care of al the nitty gritty. I think ARduino is lower level than an OOPic though so more versatile, powerful, and more in line with the use of bare chips with more complexity.
EDIT: Yeah, I checked around and it seems OOPic is higher level abstraction than Arduino is. Apparently there is Arduino-like PIC system now called the **broken link removed** that uses the dsPIC33F.
Is there a simple way to interface a small LCD screen with a microcontroller ? I'm looking for a C library to do the work, the way stdout does in vanilla C.
Basically I need to output numbers, words, etc.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?