I was able to use the MIT HLT ATtiny85 tutorial to program the 85 on a breadboard without any problems using Arduino as an ISP. I can't figure out how to do the same with the 328. But, of course I am able to program the 328 (since it has the bootloader) by placing it in the Arduino socket.
I want to have standard 2x3 headers on my projects so that an end user can plug in (USB) and upload new firmware that I post or email to them.
i. can buy a bootloaded chip or bootload it with my hardware programmer and then routine firmware updates can be done without the programmer using serial programming.
ii. I was able to program the ATtiny85 because the Arduino as ISP sketch made the Arduino function as a hardware programmer.
USB to serial converter to establish hardware link to the boot loaded chip. ... i. This is built into the Arduino board
ii. It can be a separate piece plugged between a boot loaded chip and the PC.
It can cost as much as a hardware programmer
but it should be "safer" and simpler for end user.
iii. There are many available and they seem to support different subsets of the AVR family. Which ones are inexpensive (for end user) and will work with 85
and 328 chips?
Software to load hex file to chip. ... i. avrdude
ii. I assume one could right a "batch" file (Windows) with avrdude command lines to automate this for the end user.
They would need to install winavr
download the hex file and batch file, plug in their USB to serial adapter, and execute the batch to program the chip.
iii. Could it be done from the Arduino IDE by plugging directly from PC to serial converter to project ISP?
I assume I would need to develop the Arduino suport files so that my project (chip, clock speed, etc.) would appear as a menu choice on the boards menu.
A chip specific "core"? ... i. I don't know what this is unless it is a port of Arduino commands to make them work on different AVR's.
ii. Is it used by the compiler?
iii. Are they specific for different compilers or different IDE's or different programming (as in chip uploading) methods or just different chips?
iv. Was this part of the HLT files I downloaded to program the ATtiny using Arduino as ISP?
v. Is this what the Arduino Tiny project is?
vi. When I compile a sketch in Arduino IDE does it use this core to create the appropriate hex file for the target chip?
vii. Would I then need to edit board.txt and other files for each chip I want to create hex files for?
Is this what HLT did for the 85?
Can it be done for the 328 to generate hex files for ISP loading into stand alone 328's?
iii. There are many available and they seem to support different subsets of the AVR family. Which ones are inexpensive (for end user) and will work with 85 None. The ATtiny85 processor does not have a serial port and really does not have enough memory or support for a bootloader.
I assume I would need to develop the Arduino suport files so that my project (chip, clock speed, etc.) would appear as a menu choice on the boards menu.If you use the 328 processor and an Arduino bootloader (like Optiboot), one of the existing choices will work just fine.
So, for the ATtiny85 the other person would also need a hardware programmer?
Something like what simplesi posted
or this Pocket AVR Programmer from Spark Fun http://www.sparkfun.com/products/9825?
attiny85dragon.name=ATtiny85 1Mhz (w/ Dragon via ISP)attiny85dragon.upload.using=dragonattiny85dragon.upload.maximum_size=8192attiny85dragon.build.mcu=attiny85attiny85dragon.build.f_cpu=1000000Lattiny85dragon.build.core=attiny45_85
dragon.name=Atmel AVR Dragon in ISP modedragon.communication=usbdragon.protocol=dragon_isp
Binary sketch size: 1690 bytes (of a 8192 byte maximum)java.lang.NullPointerException at processing.app.debug.AvrdudeUploader.getProgrammerCommands(AvrdudeUploader.java:106) at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:68) at processing.app.Sketch.upload(Sketch.java:1603) at processing.app.Sketch.exportApplet(Sketch.java:1568) at processing.app.Sketch.exportApplet(Sketch.java:1524) at processing.app.Editor$DefaultExportHandler.run(Editor.java:2293) at java.lang.Thread.run(Thread.java:619)
Maybe there is an override in the Dragon that could get past that problem?
I tried editing the boards.txt and programmers.txt as in the suggested links but get java errors when I try to upload a sketch using my edited entries and the Dragon.
I wonder if this explains a lot of the reliability during programming complaints about AVR Dragon on the forums.