AdSense

Mittwoch, 28. August 2013

Arduino-Code auf dem ATtiny

Wer meine letzten Beiträge aufmerksam verfolgt hat weiß, dass ich gerade an einer Funkfernbedienung für meinen Rolladen arbeite. Für diesen Zweck ist der "normale" ATmega8 eher nicht geeignet (zu groß, 5V Betriebsspannung, teuer). Das Projekt soll also auf einem ATtiny basieren. Trotzdem möchte ich den gewohnten Komfort und die Libraries der Arduino-Entwicklungsumgebung nutzen. Wie man die Arduino IDE nutzen kann, um einen "nackten" ATmega8 zu programmieren, habe ich in meinem ersten Gastbeitrag hier beschrieben. Hierfür waren keine weitere Schritte nötig, da Arduino den ATmega8 von Haus aus unterstützt.
Für den ATtiny gilt das nicht, allerdings lässt sich die Arduino IDE mit wenigen Schritten mit dem ATtiny "vertraut" machen. Mit der folgenden Anleitung könnt ihr ATtiny45 und ATtiny85 sowie ATtiny24, ATtiny44 und ATtiny84 zur Arduino IDE hinzufügen.

Als erstes ladet ihr diese Datei herunter und entpackt sie. Den enthaltenen Ordner "attiny" kopiert ihr dann in den Ordner "hardware" eurer Arduino-Installation. Ihr solltet dann also z.B. folgende Ordnerstruktur haben: "C:\Programme\Arduino\hardware\attiny".

Der Ordner enthält eine Datei "boards.txt". Die Datei enthält alle Infos zu den verwendeten "Boards" - in diesem Fall natürlich nur ein "nackter" ATtiny. Dazu zählen Fuse-Einstellung, Taktfrequenz usw. Nur die in dieser Datei gelisteten "Boards" erscheinen nachher auch in der IDE. Die Datei enthält allerdings nur die Einstellungen für den Betrieb mit interner Taktquelle.

Natürlich könnte man den Tiny auch mit einer externen Taktquelle und entsprechendem Takt betreiben. Dann müsste eben ein weiterer passender Eintrag eingefügt werden.

Wichtig ist aber in jedem Fall, dass die Fuses für die Taktfrequenz am ATtiny auch entsprechend richtig eingestellt sind, sonst passt das Timing nicht!

Nun muss man der IDE natürlich noch die Pin-Belegung des ATiny beibringen. Dazu ist der Ordner "variants" mit den Unterordnern "tiny8" und "tiny14" enthalten. Sie enthalten jeweils die Datei "pins_arduino.h" in der die Pin-Belegung festgelegt ist. Der Datei kann auch entnommen werden, welcher Pin des ATtiny mit welchen Arduino-Funktionen belegt ist. Beim ATtiny24/44/84 wäre das z.B.
                                          +-\/-+
                                VCC  1|    |14  GND
                      (D 10)  PB0  2|    |13  AREF (D  0)
                       (D  9)  PB1  3|    |12  PA1  (D  1)
                                 PB3  4|    |11  PA2  (D  2)
    PWM  INT0  (D  8)  PB2  5|    |10  PA3  (D  3)
       PWM        (D  7)  PA7  6|    |9   PA4  (D  4)
       PWM        (D  6)  PA6  7|    |8   PA5  (D  5)        PWM
                                          +----+
Mit (D x) sind die entsprechenden Arduino-Pins bezeichnet.

Wenn die Arduino IDE nun gestartet wird, sollten unter Tools-Board die neu eingefügten ATtinys auftauchen:


Nun kann wie gewohnt programmiert werden. Je nach Funkstionsumfang des verwendeten ATtinys kann es natürlich Einschränkungen geben, z.B. bei den Interrups. Außerdem muss zum Programmieren ein Programmer wie z.B. der USBasp verwendet werden.

Die Anleitung gilt so im Prinzip auch für alle anderen ATtinys (und auch ATmegas) - man muss lediglich die passende "pins_arduino.h" auftreiben bzw. selber erstellen.

Keine Kommentare:

Kommentar veröffentlichen