Dieser Eintrag widmet sich dem programmieren eines ATtiny 85 mittels eines Arduino UNOs. Ziel ist es, den "kleinen Bruder" des ATMEL 328p für seine Arduino Projekte nutzen zu können um dadurch den Stromverbrauch zu reduzieren, Kosten zu senken und mit minimalem Platz auszukommen.

Update 16.03.2015: Dieses Tutorial wurde am 16.03.2015 aktualisiert um die Arduino IDE 1.6.1 zu verwenden.
Update 23.10.2015: Leichte Anpassungen an der Formulierung, Beispiel Eingefügt, die Arduino IDE 1.6.4 getestet.

Achtung: Es wurde auf Basis eines Arduino UNOs als ISP gemacht. Mit einem Leonardo klappt es nicht, andere habe ich nicht getestet!

 

# Bezeichnung ~Preis
1 ATMEL ATtiny85 (Alternativ ATtiny 45) 1,00 €
1 Elektrolytkondensator 10uF 0,04 €
1 IC-Sockel 28 Polig (Optional) 0,10 €
    ~ 1,20 €

 

Benötigte Werkzeuge:
# Bezeichnung
1 Breadboard und Steckverbinder oder Lötkolben und Lochrasterplatine
1 Arduino UNO
1 Netzteil 5V - 12V DC

 

Als erstes muss der Atmel ATtiny 85 dem Arduino Bootloader beschrieben werden. Die Komponenten müssen nach folgender Schaltzeichnung aufgebaut werden:

 

Das kann auf einem Breadboard so aussehen:

 

oder auf eine Streifenrasterplatine (mit einer zusätzlichen LED an PIN3):

 

Als nächstes kopiert ihr die Hardware-Support Dateien für die Arduino IDE, in diesem Fall Version 1.6.1.

Diese bekommt ihr aus diesem Github Archiv. Hier ein aktueller Mirror.

Die dort enthaltenen Dateien kopiert ihr in den "arduino-1.6.1\hardware"-Ordner. Vorher solltet ihr die IDE beenden.

Die Dateistruktur sollte dann so aussehen:

  • arduino-1.6.1\hardware\attiny\avr\boards.txt
  • arduino-1.6.1\hardware\attiny\avr\platform.txt
  • arduino-1.6.1\hardware\attiny\avr\variants

 

Als nächstes muss der Arduino (in meinem Fall ein Uno auf Port COM8) als ISP programmiert werden. Dazu öffnet ihr das ArduinoISP Beispiel und uploadet es wie gehabt:

 

Nun muss der Bootloader auf den ATtiny geladen werden.

Dazu muss als erstes im "Werkzeuge -> Platine"-Menü der Eintrag ATtiny gewählt werden:

Nun muss im "Werkzeuge - Prozessor"-Menü der Controller gewählt werden. Ich verwende den Attiny85:

Als nächstes wählt ihr die gewünschte Taktfrequenz unter "Werkzeuge - Clock". Ich nutze soweit es ausreicht den 1MHz internen Clock, da der 8 MHz Clock bei mir vereinzelnt zu Problemen geführt hat. So konnte ich die Sketches bei 8 MHz teilweise nicht hochladen.

Der serielle Port muss unverändert bleiben.

Nun müsst ihr im "Werkzeuge - Programmer"-Menü den "Arduino as ISP" auswählen:

Nun kann der "Bootloader gebrannt" werden über "Werkzeuge - Bootloader brennen". Dabei wird nicht wirklich ein Bootloader auf den Chip übertragen, sondern es werden lediglich die Fuses und die Taktrate gesetzt:

Der folgende Status müsste nun einige Sekunden lang angezeigt werden:

Nach einer Weile kommt dann folgende Meldung, wenn alles erfolgreich war:

Nun ist der ATtiny bereit für sein erste Programm. Am besten ihr testet ihn direkt mal mit dem "Blink"-Beispiel ("Datei - Beispiele - 01.Basics - Blink").

Dazu müsst ihr lediglich den zu blinkenden Port von 13 auf beispielsweise 3 ändern:

const int PIN_LED = 3;

void setup() {
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  digitalWrite(PIN_LED, HIGH);
  delay(1000);
  digitalWrite(PIN_LED, LOW);
  delay(1000);
}

Nach dem Upload sollte eine LED an dem Port (Belegung siehe oben) blinken.

Blinkt die LED zu langsam, ist etwas beim flashen des Bootloader schiefgelaufen. Prüft eure Verkabelung und Lötstellen und wiederholt die o.g. Schritte insbesondere das Setzen der Taktrate.

Den Upload über den Programmer startet ihr über "Datei - Hochladen über Programmer" (1):

Nach erfolgreichem Upload erscheint die Meldung "Hochladen abgeschlossen" (2)

Für eure eigenen Projekte stehen euch nur die folgenden Befehle zur Verfügung:

pinMode()
digitalWrite()
digitalRead()
analogRead() (Nur PIN 2,3 und 4)
analogWrite() (Nur PIN 0 und 1)
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()
SoftwareSerial 

Wenn ihr den Arduino Uno wieder verwenden wollt, vergesst nicht im Board-Menü wieder das richtige Board einzustellen.

Ein mögliches Programm zum testen findet ihr hier.

Weitere Ressourcen:

Kommentare  

#31 Fritz Neese 2016-01-19 16:41
Toll, die erste Anleitung, die funktioniert. Vielen Dank! :roll:
#32 Dietrich Kern 2016-02-23 11:11
Super, ich bin fast verzweifelt, keine Anleitung hat funktioniert, dann endlich diese.
Vielen Dank! :cry: :sad: :-x :roll: :-) :lol: :D
#33 Matthias Bender 2016-03-24 20:56
:D :D :D Echt eine super geile Anleitung!!!
Danke für deine Mühe!!!
#34 dasrogli 2016-04-11 14:27
Endlich mal eine Anleitung die funktioniert! :D :lol: :-)