| Electronics > Beginners |
| Help a beginner get started with mcu's |
| << < (5/6) > >> |
| Nominal Animal:
--- Quote from: Doctorandus_P on July 12, 2018, 10:41:39 pm ---... avrfreaks.net ... Saleae clone ... Fun --- End quote --- Absolutely agreed! I would recommend the $5 Pro Micro (ATmega32u4) clones from eBay and elsewhere. They have the same bootloader and hardware as Arduino Leonardo, so if you do use the Arduino environment, you just select Arduino Leonardo from the board list. You can reprogram it via USB using AVRdude (software), so all you need is the board and an USB cable to get going. You can also just drop the Arduino environment, and do your development on bare metal, using just avr-gcc (as the compiler), avrdude to upload the firmware, and whatever editor you want to use for C or C++ code. (You can also grab Arduino library sources, and edit them and use in your own programs, but if you distribute the modified sources, do remember to abide by the licenses.) The Atmel ATmega32u4 microcontroller on Pro Micro clones has native USB 1.1 (2.0 compatible) interface, which allows you to experiment with creating your own USB HID widgets (keyboards, mice) without needing any kind of drivers on the computer it is connected to. It can easily reach a megabyte per second transfer rates using USB bulk endpoints (like serial port emulation), so all sorts of data transfer stuff is possible. Pro Minis (ATmega328p) use an UART-USB bridge, and cannot be used as HID devices. For really small stuff, I've been experimenting with DigiSpark clones. These are ATtiny85 microprocessors with a software-based USB implementation. Some are with an USB cable, others implement the male USB connector on the circuit board itself. There are only a few I/O pins, and very limited peripherals, but they're interesting if you want to learn how to utilize a small microcontroller fully. As a first project, something like a Pro Micro with an SPI or I2C connected display module (TFT or OLED), a few buttons, and HID interface (joystick? macro buttons?) to a computer should be really fun! |
| Mattjd:
--- Quote from: agehall on July 12, 2018, 02:33:50 pm ---Why do you feel you are not learning from playing with an Arduino? If anything, Arduino has made learning basic embedded development trivial. You can easily buy a standardised board, use an IDE that is trivial and work your way up from there. Once you are comfortable with the Arduino platform, you can start tinkering with moving outside out Arduino but still use Arduino boards. From there, start designing your own boards as you need them... --- End quote --- Its for these reasons specifically that I disagree with starting with an arduino. Arduino should never be used in a real product, its for hobbyist. More importantly the amount of abstraction in the arduino platform is bad for beginners, imo. If you want to learn embedded programming you should learn how to read datasheets and interact with the registers, for this, I suggest the MSP. Once you have done this with basic peripherals in raw code (ie no libraries) then try your hand at using the msp430 libraries to get a really good grasp of just how memory mapped peripherals work. At this point you should start using an arduino. |
| Raj:
First choose a line of mcu, then choose a language then get a basics book that meets those requirments They usually contain information of archetectures too.Microcontrollers don't run on operating system unless you go into advanced rtos or arm stuff. Also,Do you know any programing language apart from 'c'? if yes,which ones? I suggest looking at sample pdfs of pearson's books and see which one you're most comfortable with. I also suggest you get into atmels and start by downloading the atmel studio I'D NEVER SUGGEST PIC TO A BIGGNER,STARTING WITH ATMEL IS WAY CHEAPER,YOU JUST NEED 4 RESISTORS AND A PARARELL PORT PLUG INSTEAD OF A COMPLICATED PROGRAMMER. And apparently,you don't know how circuits work and hence the statement that you want to create your own boards. If your laws allow,get ferric chloride,toner transfer paper or oil paint, a drill , a soldering iron and simply start making circuits.go in this order- flashlights 555 circuits copy other's circuit diy led light bulbs transistor based stuff (simple oscollitors,then simple logics) 4000 type logic 7400 type logic microcontrollers If you're smart,I think you should get into AI instead. Unless you are really dedicated and ready to work real hard,you won't generate profit or go anywhere. |
| Raj:
--- Quote from: rstofer on July 12, 2018, 03:55:22 pm ---I simply can't use the Arduino IDE. The text is too small to read on a very high resolution display and I have to mess around and change the colors because I can't see red or orange. The Arduino IDE is truly trash! --- End quote --- Jeez.Had you been in a company doing work on there computers,you would have had to buy new pairs of glasses every year. |
| rstofer:
And I disagree with NOT starting with the Arduino. Starting with a bare chip of dubious support can be a high mountain to climb. Think like a beginner! Toolchain to install ("what's a toolchain?"), datasheets to read ("what's a UART?", "do I need to know?"), code to write ("what's a pointer?" or worse, "what's an object?"), device programming ("JTAG? ICSP?") and inevitable failure ("why doesn't it work?"). Sure, we all overcame this but we soon forget just how long that process took. It's particularly onerous if you happen to make the mistake of starting with the PIC 16F with assembly language. Paging? Banking? What a PITA! The other mistake might be starting with the full featured ARM chips. There are just too many possible pin configurations and it takes hours of reading to get the chip to start. This can be particularly problematic for the older arm7tdmi where the startup code MUST be written in assembly language. Abandon hope all that enter here! The ARM Cortex chips are easier in that regard. I like the mbed platform myself, especially the original LPC1768 variant. Of course the online toolchain comes with a lot of libraries - I sure don't want to write my own TCP/IP stack! When I started playing with the ATmega128, I was using Linux, 'make' and AVRdude. AVRlib was available so things weren't hopeless but still, it took a ton of reading to get my project to work. I had the advantage of knowing what to look for and where to look. Lacking that, creating a Makefile can be a daunting task and, worse, it has essentially nothing to do with the project at hand. Which AVRdude options to use? Well, that's anything but straightforward! Newcomers want results, not an MS in EE or CS! The Arduino is easy to use, the toolchain is simple to install and every possible application has already been created and it's on Google. It's a perfect learning environment just because every conceivable library is already provided. Now, once having gotten results and with a new application beyond the Arduino's capability, it's time to branch out. But there is now an experience base and if the newbie has spent any time with the datasheet alongside the code they will know what to look for. How to set baud rate, where the UART comes out, UART level translation, how to configure pins for input/output and so on. They might understand I2C and SPI, they have something to build on. Anybody want to code their own I2C state machine? Isn't that ATmega328P datasheet about 442 pages? Just a little light reading! At some point, every single page is important! The ARM datasheet and user manual are separate documents and they are each voluminous. Everybody has to start somewhere. I started with the IBM 1130 and CDC 6400 back in '70 and it's been a fun ride. The early days of microcomputers was an interesting time but I do not want to go back to using something like SID for debugging - step by step. There were only a very few chip sets: 8080/8085, z80, 6502, 1802 and essentially no help. Here's the chip (board?), knock yourself out! I fully support the idea of starting with the Arduino and getting results fast. The rest of the stuff will come along when it does. |
| Navigation |
| Message Index |
| Next page |
| Previous page |