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 (z. B. 16V) 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):

 

oder wenn ihr lieber eine Platine dafür ätzen wollt, könnt ihr diese Fritzing Vorlage nutzen:

 

 

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)

 

Hinweis: In den neueren Versionen findet sich dieser Menüpunkt unter "Sketch":

 

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  

#51 Jörg 2017-06-26 13:32
oh oh, das klappt bei mir nicht, das mit Bootloader.
Deine Bilder sind anders als meine Bildschirmanzeige.
Bei mir gibts es z.B. keine Rubrik Platine.
Als Fehlermeldung kommt
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
#52 Jörg 2017-06-26 13:33
System wide configuration file is "H:\Ardunio2017 \Programm\Ardui no\hardware\too ls\avr/etc/avrd ude.conf"

Using Port : COM3
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync( ) attempt 1 of 10: not in sync: resp=0xcb
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync( ) attempt 2 of 10: not in sync: resp=0xcb
( Nur ein Teil, die Zeilen sind fast gleich)

Zum Schluß eben: Fehler beim Hochladen.
Was tun? wo ist mein Falscher Fehler?
wbr. J.
#53 Jörg 2017-06-26 13:58
mmmhm, Fehler beim Brennen das Bootloaders.
dann sind da Vorneweg quasi Tabellen.Dann kommen send/ reccv Listen, anschliessend
avrdude: PAGEL and BS2 signals not defined in the configuration file for part ATtiny85, using dummy values, später dann avrdude: PAGEL and BS2 signals not defined in the configuration file for part ATtiny85, using dummy values.
Gefolgt von avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override this check.
Soll ich den gesamten Fehlercode mal via E-Mail senden?
#54 Jörg 2017-06-26 14:52
hach, nach dem xten Versuch klappts dann doch noch mit dem Bootloader, frag mich nicht was es war, kann den Fehler nicht reproduzieren.
Dafür klappt aber das Einspielen eines Testprogrammes nicht.
Beim Hochladen des Sketches ist ein Fehler aufgetreten
Reading | ############### ############### ############### ##### | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
kryptisch, für mich nicht auflösbar.
Hardware-Verdrahtung 10 mal( bestimmt) kontrolliert, ATtiny ausgetauscht, nix.
Kennst du ein Lösungsansatz?
Danke.
j.