Track My Order
Frequently Asked Questions
International Shipping Info
Mon-Fri, 9am to 12pm and
1pm to 5pm U.S. Mountain Time:
Chat With Us
January 2, 2020
about 2 months ago
I have been using this board for some years now, various projects from logging/monitoring to replacement washing-machine controller. I was using it with an older Arduino IDE (1.6.3) and older board defs for all that time, with no trouble (except the delay caused by ModemManager - ubuntu 14.04). After updating OS and IDE to the newer version with the boards-manager in it, the newer board defs define the board as ProMicro with the difference between 5V,16Mhz and 3.3V,8Mhz being on a separate menu, with a default of 3.3V. This makes it WAY TOO EASY to write the wrong settings to the promicro, would be much harder to get wrong if they were still separate boards rather than defined as different processors. Needless to say, I bricked the Promicro when I wrote a 3.3V program to a 5V board. Or did I?
starting upload from the ISP before plugging the board just complained that there wasn't a port there, pressing it as I plugged in took too long before starting the upload and the port was already gone.
I noticed that it still would flash TX and RX LED's for half a second when plugged in, and then noticed that /dev/ttyACM0 appeared briefly too, so the 5V bootloader was there for a moment before the 3.3V program messed up the clocks. I was thinking to try something USB before going the SPI ISP route.
so I found the avrdude bin in the arduino program folder, built the blink example and found the .hex file in /tmp, made a one-line script with an avrdude command to write blink.hex to /dev/ttyACM0 and hovered over the enter key as I plugged in the promicro. I got the timing just right and the led started to blink :)
the avrdude command:
$ sudo /home/jeremy/arduino/arduino-1.8.9-linux64/arduino-1.8.9/hardware/tools/avr/bin/avrdude -C /home/jeremy/arduino/arduino-1.8.9-linux64/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P /dev/ttyACM0 -b 57600 -D -U flash:w:/home/jeremy/arduino/arduino_build_546872/Blink.ino.hex:i
obviously you'd need to change the paths to whatever they are on your system.
I continued to experiment, and discovered that this only works for very small programs. even avrdude on its own takes too long between checking the port exists and starting to upload if the program code is longer (blink worked at 4128 bytes, the code I actually wanted was more like 22k and that didn't work with avrdude in the command line. The ISP does a different upload sequence which stops the normal code running, so it can take longer and works, most of the time, though sometimes I get a 'permission denied' error that goes away if I try again after 20 seconds.
In short, the newer IDE seems less well set up for using this board, causing issues and seeming unstable.
I still recommend starting with 8-bit avr for a first try at going beyond the basics though, because the datasheets for the older 8-bit AVR processors and their peripherals are so much better written than the docs for other 32bit processors (I started using STM32 boards recently and the difference in the documentation is huge).
No public wish lists :(