ATtiny Programmer

31. Januar 2015 at 17:01
Print Friendly, PDF & Email

Das Vorgehen mit der Arduino IDE ist im Internet oft zu finden.

Diese IDE ist aber für mich eher abschreckend und resultierte am Ende auch noch mit der Fehlermeldung:

avrdude: stk500_getsync(): not in sync: resp=0xff

Mein Aufbau basiert auf folgender Anleitung : http://www.instructables.com/id/How-to-program-attiny-using-arduino-uno

Zusätzlich habe ich noch drei LED’s für den Status eingefügt, die im upload Programm kommentiert sind:

// ISP: Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave

85-ISP-photo2

85-ISP

Als Entwicklungsumgebung verwende ich Eclipse.

Eclipse IDE for C/C++ Developers / Version: Luna Service Release 1a (4.4.1)

85-ISP-eclipse1

Bei den Projekt-Einstellungen habe ich die Version 1MHz ausgewählt:

85-ISP-eclipse2

Eclipse legt alle Dateien im workspace ab. Die Arduino IDE legt viele build-Ordner im temp-Verzeichnis ab.

Leider funktioniert bei mir das programmieren des ATtiny mittles eclipse nicht.

Damit avrdude nicht nur diese kryptische Fehler “avrdude: stk500_getsync(): not in sync: resp=0xff” zeigt, habe ich die Grundeinstellungen verändert.

In der Datei  arduino-1.5.2\lib\preferences.txt fügt man folgenden Parameter ein:

upload.verbose = true

Zwei kleine Batch-Dateien starten den upload. Dies hat auch den Vorteil, das man sehr einfach den Uno als ISP vorbereiten kann.

isp.bat – hier für ein Arduino Uno als ISP

@echo off
 
set avr_dir=C:\arduino\arduino-1.5.2/hardware/tools/avr
set workspace_dir=E:\Daten\Arduino\workspace
set hex_file=ArduinoISPUno\Release\ArduinoISPUno.hex
set txspeed=115200
 
%avr_dir%/bin/avrdude -v -C%avr_dir%/etc/avrdude.conf -q -q -patmega328p -carduino -PCOM3 -b%txspeed% -D -Uflash:w:%workspace_dir%\%hex_file%:i

85.bat – bitte beachten: die baudrate muss hier auf 19200 stehen. Die default-Rate von 9600 funktioniert bei mir nicht.

@echo off
 
set avr_dir=C:\arduino\arduino-1.5.2/hardware/tools/avr
set workspace_dir=E:\Daten\Arduino\workspace
set hex_file=ATtiny85Blink\Release\ATtiny85Blink.hex
set txspeed=19200
 
%avr_dir%/bin/avrdude -v -C %avr_dir%/etc/avrdude.conf -q -q -p attiny85 -c stk500v1 -P COM3 -b %txspeed% -U flash:w:%workspace_dir%\%hex_file%:i 

rem Burn fuses: -b 19200 -B 250 -u -U lfuse:w:0xfd:m -U hfuse:w:0xdf:m

rem -v // Enable verbose output. More -v options increase verbosity level.
rem -C config-file // This file contains all programmer and part definitions that AVRDUDE knows about. 
rem -q // Disable (or quell) output of the progress bar while reading or writing to the device. 
rem -c programmer-id // stk500v1 Atmel STK500 Version 1.x firmware
rem -P port // COM3
rem -b baudrate // 19200
rem -U memtype:op:filename[:format] 
rem // flash The flash ROM of the device
rem // efuse, fuse, hfuse, lfuse: extended, single, high, low fuse byte
rem // w read the specified file and write it to the specified device memory
rem // i format = Intel Hex 
 
rem -l logfile // Use logfile rather than stderr
rem -n // No-write - disables actually writing data to the MCU (useful for debugging AVRDUDE).
rem -B bitclock //
rem -u // Required for burning fuses. Disables reading out the fuses 3 times bf programming.
rem http://www.nongnu.org/avrdude/user-manual/avrdude_4.html#Option-Descriptions

Dies Ausgabe von 85.bat sieht dann wie folgt aus:

 

85-ISP-batch1

 

85-ISP-batch2