Hier sind meine ersten Versuche mit den Chips ATtiny 85, 44 und 2313.
Dazu muss man die Chips entsprechend verkabeln, wiederum das Arduino Board als Programmierer verwenden (siehe Arduino-ISP2 im früheren Post) und dann noch die passenden Definitionen der Chips ins IDE einbauen.
Fangen wir mit dem einfachen Teil an: Die Verkabelung läuft eigentlich genauso wie im vorangegangenen Post zum ATMega beschrieben. Hier dennoch ein paar Bilder, reine Fleissarbeit, aber wenns mal schnell gehen soll, vermeidet man so vielleicht Probleme.
ATtiny85 verkabeln:
Hier sind noch zwei alternative Anleitungen (inkl. Setup mit 10uF Kondensator statt den Widerständen)
..
Sicherheitshalber nochmal die Pinouts, um SCK, MISO,MOSI,Reset,Clock und die Stromversorgung richtig an den Chip anzulegen:
Natürlich ginge es auch mit ASCII-Art - das nächste Mal vielleicht :-)
// ATMEL ATTINY2313
//
// +-\/-+
// PA2 1| |20 VCC
// RX (D 0) PD0 2| |19 PB7 (D 16)
// TX (D 1) PD1 3| |18 PB6 (D 15)
// (D 2) PA1 4| |17 PB5 (D 14)
// (D 3) PA0 5| |16 PB4 (D 13)*
// INT0 (D 4) PD2 6| |15 PB3 (D 12)*
// INT1 (D 5) PD3 7| |14 PB2 (D 11)*
// (D 6) PD4 8| |13 PB1 (D 10)
// *(D 7) PD5 9| |12 PB0 (D 9)
// GND 10| |11 PD6 (D 8)
// +----+
//
// * indicates PWM port
---------------- 2313 --------
RST - - VCC
P0 - - P16
P1 - - P15
P2 - - P14
P3 - - P13*
P4 - - P12*
P5 - - P11*
P6 - - P10
*P7 - - P9
GND - - P8
Stared pins (7, 11, 12, 13) are PWM pins.
Einen schönen Überblick als Din-A4 Referenzblatt mit allen gängigen Pinouts habe ich hier gefunden: http://electronicavm.files.wordpress.com/2012/06/microcontroller-reference-sheet-a4.png
Arduino IDE Vorbereiten
Um Programme für die ATtiny Chips zu programmieren, muss man entsprechende Board-Beschreibungen und Core-Definitionen im IDE hinterlegen. Ich habe zwei Pakete ausprobiert, die sich auch parallel installieren lassen:
1.) "attiny" (wird nach "arduino-1.0.3\hardware\attiny" installiert):
ATtiny (siehe GitHub repository, beschrieben in: "Programming an ATtiny w/ Arduino 1.0",
2.) "arduino-tiny" (wird nach "arduino-1.0.3\hardware\tiny" installiert - nur tiny-Ordner entpacken):
Zu 1: Es existieren einige Forks zu dem Projekt. Ich habe einen gewählt, der auch mit dem ATtiny2313 funktioniert: https://github.com/fschaefer/attiny/archive/master.zip
Einen kleinen Fix muss man noch von Hand nachführen: https://github.com/damellis/attiny/issues/8
High Low Tech hat auch noch eine schöne Beschreibung und einen Überblick:
http://hlt.media.mit.edu/?p=1229 (inkl. LED Beschaltung)
Wichtig: nicht vergessen, das IDE neu zu starten, nachdem man die Hardware-Pakete oben ergänzt hat, damit die zusätzlichen Boards in der Auswahlliste auftauchen.
Zum Laden eines Programmes dann den entsprechenden Chip auswählen und erst den "Bootloader" programmieren (setzt nur die Fuses), dann das Programm kompilieren und hochladen:
["ArduinoISP" Programm auf das Board geladen?]Board: ATtiny85 (internal 8Mhz clock)Port: COMProgrammer: Arduino as ISP
Wenn man in der Auswahlliste der Boards zu viele Einträge hat, kann man die "boards.txt" Dateien in den Unterordnern von arduino-1.0.3\hardware\* etwas entrümpeln. Insbesondere kann man sich alle Einträge mit externer Clock sparen.
Für einen ersten Versuch eignet sich das Demo-Programm "Blink":
- Den Pin im Programm entsprechend anpassen (z.B. Pin 0).
- Eine LED mit einem 1k Ohm Vorwiderstand an den Pin anschliessen
- Programm kompilieren und auf den Chip laden.
Die Led sollte nach dem Hochladen zu blinken beginnen.
Bei einem ersten Versuch hatte ich ein sehr langsames Blinken - delay(1000) sollte im Sekundentakt blinken - Irgendwie lief es nach dem 2. Flashen besser.
Eine mögliche Erklärung: Die Definitionen in boards.txt und in den Definitionen enthalten Angaben zum Takt und zum Timing (Einfluss der Fuses?). Kann durchaus sein, dass ein Programm, das für ein 8 Mhz "Board" kompiliert wurde, anders als gedacht läuft, wenn man die Fuses für den 1Mhz Boardeintrag gesetzt hatte.
Troubleshooting
ATtiny85: Wenn es beim Programmieren zu einer Fehlermeldung kommt:
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
Ignorieren!
ATtiny2313: Hier funktioniert das "Brennen" des Bootloaders (d.h. letztlich nur das Setzen der Fuses) problemlos. Beim Programm-Upload mit dem Arduino-ISP2 hab ich dann lange versucht einen Fehler zu beheben, der anscheinend gar keiner ist. Die Fehlermeldung
Binary sketch size: 912 bytes (of a 2,048 byte maximum)
avrdude: stk500_initialize(): programmer not in sync, resp=0x15
kann man getrost IGNORIEREN.
Weitere Troubleshooting-Quellen:
Baud-Rate fix für die ISP Programmierung der ATtiny Chips: http://www.sirmc.net/view/2002/
Referenzen und Ideen für künftige Projekte:
Falls es doch ein Bootloader für die ATtiny Serie sein darf:
- TinySafeBoot — A tiny and safe Bootloader for AVR-ATtinys http://jtxp.org/tech/tinysafeboot_en.htm
- ATtiny45 Bootloader http://www.mikrocontroller.net/topic/72308
Den ATtiny85 als USB Gadget verwenden:
- VUSB - Virtual USB port for AVR microcontrollers http://www.obdev.at/products/vusb/index.html
- USBtiny - A software implementation of the USB low-speed protocol for the Atmel ATtiny microcontrollers http://dicks.home.xs4all.nl/avr/usbtiny/
...braucht dann allerdings wohl doch einen externen 12 Mhz Quartz als Taktgeber für das USB-timing.
Konkreter Einsatz (lässt sich aber auch für wenige EUR fertig kaufen):
- USBtinyISP - Inexpensive USB AVR Programmer http://www.ladyada.net/make/usbtinyisp/
Hallo Michael
AntwortenLöschenIch habe deinen Block mit viel Interesse gelesen.
Leider habe ich ein Problem mit dem ich nicht weiterkomme
Mein Attiny 4313 sagt mir:
unknown MCU 'attiny4313' specified
Mit dem 2313 klappt alles...
Ist dir der Fehler auch schon mal untergekommen?
Gruß
Andreas
Hallo Andreas,
Löschenich habe gerade mein Arduino-IDE nicht zur Hand.
Vermutlich fehlen die Definitionen für den 4313.
Schau doch mal nach, ob einer der Hardware-Unterordner die Definitionen enthält (siehe auch "Arduino IDE Vorbereiten"). Möglicherweise gibt es auch mittlerweile aktuellere Versionen mit weiteren Chips.
Viel Erfolg,
Michael