Electric-T
- Jun 4, 2017
- 212
- Joined
- Jun 4, 2017
- Messages
- 212
I want to start getting into microcontrollers. Where is a good place to start? Arduino? And what are some useful languages to know? Ive already started on assembly.
ooooo.....are you trying to start a fight? LOL
There are 'fans' of all forms of micro controllers and each has its pro's and con's.
It will boil down to what you want to do with them - and, to some extent, how you feel about the support that each type attracts. The Arduino support base is massive, as are the applications for it.
Assembly is the 'base' language (other than binary, you can't go any lower) but a lot of modern processors use C (in its many forms) for coding through their respective interpreters and it's very 'portable' between architectures too so consider C (a high level language) as a requirement.
I guess i should experiment a little. Assembly is one i want to know for sure. I guess i was wondering if arduino was a good starter mc. Lets say i wanted to include one in an motion alarm and i wanted to store the times the alarm is triggered and make them accessible via usb.Purists will use assembly and there is no more intimate way to program any form of processor than via assembly. It makes for the most compact coding (hence speedy processing) than any other high level language and, being an old fart myself, I was brought up on assembly through the 6502/8088, PICs (the 68705 in particular) so appreciate Minder's thoughts on the matter.
But if you want to talk to other users you have to use their language and for most this will mean C or its derivatives.
Thank you this is exactly what i was looking forTo do the functions you want - especially accessing USB - you'll struggle doing it with assembly language. This is where high level languages come into their own and, for the Arduino (and others) there will inevitably be library routines that handle the complex parts of the programming to avoid having to re-invent the wheel. Such libraries will also be available in assembly but specific requirements you may have will involve some complex reprogramming that high level languages tend to manage far easier.
Similarly, accessing the Arduino at assembly level won't be easy, PICs are very much more suited to this sort of programming. I could suggest you download the datasheet for the main processors of the various platforms that are commonly used and see for yourself the number of 'commands' they each use. The PIC is very, very capable and has a low instruction set (RISC) making assembly programing a breeze - sort of....
Here's the datasheet for the very common PIC16F84 - a very capable device with many useful examples already across the web.
http://pdf1.alldatasheet.com/datasheet-pdf/view/74975/MICROCHIP/PIC16F84.html
If you want the best from any platform then going it at the register level via assembly will make you a very proficient user.
This IDE plus the WINAVR plugin (for GCC) workes great. The libraries avilable are imho considerably less extensive than those available for the Arduino. But the code you can create with the ATMEL studio in C is typically much faster than the code generated by the Arduino IDE. It seems to be mainly a matter of the underlying libraries and the way an Arduino sketch tries to simplify programming for the inexperienced (see e.g. this discussion).Atmel (the Arduino processor manufacturer) does have a more complex IDE that is a free download:
http://www.atmel.com/microsite/atmel-studio/default.aspx
I've never used it.
1. you need development board,I want to start getting into microcontrollers. Where is a good place to start? Arduino? And what are some useful languages to know? Ive already started on assembly.
Huh?The bad part is that information on these (mostly Chinese) parts can be difficult to find,
Writing code without specs is difficult in any language.For someone just starting out, writing device drivers in assembly language without specs is going to be a bit overwhelming.
It's usually easy to find the main controlling device part number on any of those modules and downloading the data sheet for them tells you everything you need to know.I was specifically referring to the peripherals (sensors and displays).