Dies ist ein Beispiel wie ich einen ATTiny85 programmiere. Der ATTiny hat nur 8 Pins und ist ein kompakter Microcontroller.
Hat je nach Ausführung 8192 Byte Flash Memory als Programmspeicher und 512 Bytes dynamischen Speicher für Variablen.
Um den ATTiny zu programmieren benötigt man nicht unbedingt spezielle USB-Adapter oder Programmer. Es reicht ein Steckbrett und ein Arduino UNO. Der Arduino wird quasi als ISP-Programmer benutzt. Die Informationen hier sind nicht neu und im Internet findet man alle notwendigen Informationen dazu. Ich beschreibe hier meinen Weg und versuche es ein wenig zu veranschaulichen.
Quellen:
Voraussetzung und Vorbereitung
Es gibt die Möglichkeit eine Bootloader (Micronucleus) auf dem ATTiny zu installieren. Der Bootloader stellt durch den ATTiny eine USB Schnittstelle zur Verfügung worüber der Tiny Programmiert wird. Da der Bootloader aber selber Speicher benötigt verwende ich die ISP Programmierung über einen Arduino Uno mit dem ArduinoISP Sketch.
Wir benötigen eine aktuelle Arduino IDE. Ich habe derzeit die Version 2.0.4 von der Arduino Download Seite.
Auf einem Arduino Uno den ISP Code hochladen
Um den Arduino als ISP-Programmer benutzen zu können laden wir auf den Arduino UNO selber ein Sketch hoch.
Dazu öffnen wir im Menü „Examples -> 11.ArduinoISP -> ArduinoISP“.
Danach das Board Arduino UNO und den richtige Seriellen Port auswählen und dann „Upload“ auswählen. Es ist sehr unscheinbar, geht sehr schnell und nach ein paar Sekunden sollte eine Bestätigung erscheinen.
ATTiny Boardmanager einstellen
Danach müssen wir die Arduino IDE um die ATTiny Boards erweitern. Dazu verwende ich das ATTinyCore Github Projekt. Um die Installation durchzuführen müssen wir in der Arduino IDE den Punkt „File -> Preferences…“
Danach gehen wir in den Board Manager über den Punkt „Tools -> Boards -> Boards Manager…“ . Dort geben wir oben in der Suchmaske ATTiny ein und wählen dann „ATTinyCore by Spence Konde“ aus und klicken auf „Install“. Während der Installation werden Treiber für die USB-Bootloader Variante installiert. Diese sollte man mit installieren auch wen wir Sie hier nicht benötigen.
Damit sind wir mit den Vorbereitungen fertig.
Verkabelung
ATTiny85 Pinout
Ich verwende hier den ATTiny85 dieser hat 8 Pins und reicht für meine Aufgaben. Es gibt aber auch größere Bauformen. Die folgende Grafik und für die anderen Versionen findet ihr auch auf der Github Seite … ziemlich weit unten.
Verkabelung zwischen dem UNO und dem ATTiny85
Nun benötigen wir eine Verbindung zwischen dem Arduino Uno (unseren Programmer) und dem ATTiny. Die gelbe Verkabelung ist für die Programmierung notwendig, plus die 5V und die GND Verbindung. Die LED und der Wiederstand sind lediglich für ein Beispielprogramm. Also einfach nur um zu testen ob es funktioniert.
Board Einstellungen für den ATTiny85
Für die Auswahl ist es wichtig ist das man vorher weiß, dass ein ATTiny werksseitig auf ein 1 Mhz clock frequenz eingestellt ist. Wir gehen nun unter Tools und wählen folgende Einstellungen aus:
- Board ist „Attiny25/45/85 (No bootloader)
- Port ist der USB-Port des Arduino UNO den wir als Programmer benutzen.
- Chip ist ein „ATtiny85“
- Clock ist wie gesagt werksseitig „1 Mhz (internal)“
- Bei Programmer wählen wir „Arduino as ISP“ aus.
Beispiel hochladen
Ist alles eingestellt, können wir das Blink Example laden. Dort muss lediglich in den drei Zeilen der PIN von „LED_BUILTIN“ in „PB0“ geändert werden.
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(PB0, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PB0, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(PB0, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Nun unter „Sketch -> Upload Using Programmer“ auswählen und damit das Sketch auf den ATTiny hoch laden. Gibt es beim Hochladen einen Fehler sollte man die Verbindung zur LED trennen. Das trennen von angeschlossenen Komponenten gilt generell beim Hochladen von Programmcodes. Diese können zu problemen führen.
Wenn alles geklappt hat sollte die LED in ein Sekunden Intervallen blinken.