February 8, 2018
Hello AVR enthusiast,
I have never programmed an Atmel chip. But I have programmed other 8, and 16-bit microcontrollers.
I am seeking advice on a hardware programmer to load a hex file onto my ATMega328p 28-pin DIP microcontroller. I bought the chip that had already been programmed with a bootloader, the so-called "Arduino bootloader-programmed chip".
On my 64-bit linux computer I installed the basic AVR tools from my repository's APT deb packages:
I have the AVR Arduino/Genuino debian version 1.0.5 but have never used it. ARDUINO 1.8.4 2017.08.23 It also installed extra packages called arduino-core extra-xdg-menus libjna-java and librtx-java
I already created the .hex file using a make file and the avr-gcc cross-compiler in 64-bitr Debian Linux. Now I am ready to load the executable onto the IC and run it.
Late last fall I decided to buy the "FTDI Serial - 232 USB Cable" to load the .hex file from my linux PC to the microcontroller through a USB 3.0 cable.
However, it failed miserably using avrdude from the command line. I never found a "hardware programmer" option that avrdude recognized that worked. Later, I found an issue with one horizontal rail on the breadboard, so I rewired the chip onto a new breadboard without issues. All my attempts to program the chip (i.e., load the hex file onto it) since with this device have failed all winter long.
My next thought was getting an Arduino UNO w/ a DIP version of the chip and switching the onboard chip with my ATMega328p DIP IC in order to upload the hex file onto it. Then switch the chip out of the Arduino UNO and snap it back into my bread-boarded circuit in order to test the executable (just the basic flashing LED program). $25
However, since ATMEL dropped the price of the Atmel-ICE programmer device in half, I am wondering if that might be a better option for me? $65
Would this device work w/ Debian linux using USB 3.0 ?
I understand using this Atmel-ICE programmer would enable me to pre-load a bootloader onto a "bare" ATmega328p chip -- is this correct?
Would its JTAG programming be helpful when I become an intermediate AVR programmer?
Am guessing this Atmel-ICE programmer device would allow me to "program" -- in the hardware sense -- other Atmel ICs besides the 8-bit ATmega328p ?
Would this Atmel-ICE programmer be harder to use than an Arduino UNO ?
Are there any other reasons the AVR ICE programmer might be worth the extra cost ? . . .
Would using Atmel-ICE programmer allow me to write a serial stream of data for debugging a running executable on my target chip back to the PC? In other words, does it use the USB channel as a bidirectional data bus for debugging?
Are there any other issues I should be aware of ?
This JTAG stuff is all new to me. I don't understand what it allows.
I looked at the pdf user manual for the ATmel-ICE programmer. But am unfamiliar w/ the alphabet soup -- JTAG, SPI, UPDI, SWD, TPI.
Would somebody familiar with these technologies please point me in the right
Obviously the blinking LED "Hello World" program is only the first step in a long process of developing and troubleshooting C programs and interrupts.
If I omitted anything important information from this introduction, please tell me.