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.
#55 Jonas 2017-07-31 06:04
@Jörg
Hi , benutzte mal diese URL: githubuserconte nt.com/damellis /attiny/ide-1.6 .x-boards-manag er/package_dame llis_attiny_ind ex.json .
füge diese einfach in Datei/Voreinste llung/Einstellu ng dann in das Feld Zusätzliche Boardverwanlter-URLs:

Wenn du das gemacht hast gehe zu Werkzeuge/Board /Boardverwalter und installiere die "attiny by ..."(ich benutze vs.1.0.2).

Als nächstes die Arduino ISP auf den Arduino Uno hochladen. Dannach wieder ganz gewohnt nach Anleitung bei mir ging es dann wieder.
Info bei Upload eines Programms auf dem tiny
1.) muss die Bootloader-Scha ltung vorhanden sein.
2.) muss der Arduino Uno noch die ISP drauf haben.
3.) muss der richtige Tiny in den Werkzeugen Eingestellt sein.
(Das waren die Voraussetzungen bei mir.)

Gruß
#56 Jörg 2017-08-06 16:56
@ Jonas,
DANKE!
step 1- 3 von dir: läuft.
ca. 5 Attiny beschrieben und bereits in Betrieb.
Laufen störungsfrei.
4 Tage später:
no response beim Brennen des Bootloaders.
alle bekannten Fehlerquellen wie Hardwareverdrah tung, Sitz des Attiny, Spannung (ja...sach nix), Resetleitung (Kondensator) gecheckt.
nix. keine Übertragung möglich.
Programm selber läuft auf(im) UNO problemlos.
wenn die Haare nicht schon so kurz und weiß wären...
#57 postmaster-ino 2017-10-06 19:17
Hi

Tolle Anleitung! Bis jetzt klappt das 'Spielen' mit den ATtiny45.
Mal schauen, wie stark die Einschränkungen auf den ATtinys sich auswirken.

Hatte noch ein 'JOTKA-AVR-ICSP ' rumfliegen und versucht, Diese per 6pin-Flachband- Kabel zu verbinden, dafür die beiden Platinen nebeneinander gesetzt, daß man mit dem 6-pin-Kabel auch auf die Steckpins für die ATtiny 44/48 kommt :)
Leider hatte ich Da einen kleinen Denkfehler, denn auf dem ICSP des Arduino liegt der Arduino-Reset - es ist also leider nicht so leicht, daß man nur zwei ICSP-Anschlüsse verbinden muß um den Arduino 'ICSP-sprechen zu lassen'.

Lange Rede, fast kein Sinn: Jetzt zieren Duppon-Steckbrü cken den Platinen-Verhau - Funktion passt - sieht aus, wie 'bei Bastlers' :o

Tolles Tutorial, interessant geschrieben, schön bebildert.

Gerne Mehr :-*

MfG
#58 helmukaufnix 2017-11-15 09:58
Eine ganz grandiose genaue Anleitung!
Das Brennen des Bootloaders funktioniert.
Allerdings kann ich kein Programm hochladen. Beim 'Hochladen mit Programmer' (AVA ISP) kommt die Fehlermeldung: stk500_getsync( ) not in sync und
stk500_recv(): programmer is not corresponding.
Beim normalen Menuepunkt 'Hochladen erscheint:
stk500_getsync not insync.
Wer kann mir helfen!!!
Gruß Helmut
#59 helmukaufnix 2017-11-15 10:07
Sorry,
habe noch etwas wichtiges vergessen.
Der ATtiny ist auf einem Digispark Board installiert und icj versuche das Programm über den USB-Anschluss hochzuladen.
Gruß
Helmut