Einen Attiny45 programmieren (ArduinoISP)



Manchmal würde für ein Mikrocontrollerprojekt auch ein billiger winziger achtbeiniger Mikrocontroller ausreichen,
z. B. ein Attiny 45 für unter 1 Euro:

 

Folgende Vorteile sehe ich da sofort:

  • man kann eine Menge Geld sparen, wenn man einen kleinen Mikrocontroller für seine Projekte benutzt.

  • man kann eine Menge Platz sparen, wenn man einen Attiny statt eines "großen" Atmega328 benutzt

  • man kann die vereinfachte Version der Programmiersprache C benutzen, wie sie die Arduino IDE bereitstellt

... und es ist wirklich sehr einfach!


Ich habe beim MIT (Massachusetts Institute of Technology) eine Anleitung gefunden.

Was Du brauchst:

1 Arduino
1 Steckbrett
1 Mikrocontroller Attiny45 oder Attiny85
1 Kondensator 10µF
Verbindungsleitungen

... und was Du für Dein Projekt brauchst - wir nehmen: 1 LED mit 220 Ohm Vorwiderstand.


Vorgehensweise:

1. Lade Dir beim MIT diese Datei runter:
    ATtiny (oder von dieser GitHub-Seite)
    Du erhältst eine .zip-Datei, die als Ordner entpackt heißt: damellis-attiny-6bff522 (oder ähnlich)
    in diesem Ordner findest Du den Unterordner: attiny
 

2. Finde den Ordner mit Deinen Sketches (Betriebssystemabhängig, bei mir: Dokumente/Arduino/Sketchbook/)!
    Erstelle im Sketchbook den Ordner: hardware !
   
Verschiebe den Ordner attiny, den Du runtergeladen hattest, in den Ordner hardware !


5. Starte Deine Arduino IDE! Du findest nun unter Tools -> Board jede Menge Attiny44/45/84/85, die Du dann
    programmieren könntest. Wähle davon nocht nichts aus!







6. Dein Arduino-Board wird zum Programmiergerät, indem Du das Programm "ArduinoISP" in Deinen Arduino schiebst:









7. Um Deinen Attiny45 programmieren zu können, verbindest Du ihn wie folgt mit dem Arduino-Board:



Oder gleich mit der LED, die dann später blinken soll:



Die Kennecke des Attiny ist im Bild links!!!








8. Attiny45-Blinksdings in das Attiny45 Board schieben. Dazu musst Du noch sagen, dass Dein Arduino jetzt als Programmiergerät benutzt wird:




/*
  Blinksdings für Attiny45
  LED am Ausgang PB3 über 220 Ohm blinkt im Sekundentakt bzw. 1 Hz
   
  www.arduinospielwiese.de 
*/
 
 
void setup() {               
  pinMode(3, OUTPUT);    
}


void loop() {
  digitalWrite(3, HIGH); delay(500);          
  digitalWrite(3, LOW);  delay(500);          
}



Die 3 im digitalWrite(3, ...)  entspricht dem Attiny45-Pin PB3. Du kannst PB0 bis PB4 benutzen. Also digitalWrite für 0 bis 4. Für PB5 wären gesonderte Maßnahmen erforderlich, weil das eben auch der Resetanschluss der Attiny ist. Wenn Du ihn unbedingt benutzen musst, steht die Lösung in der Mikrocontrollerspielwiese. 

 







9. Jetzt kannst Du Deinen Arduino vom Steckbrett trennen. Was übrig bleibt, wäre dies:





(Batterie: 3..5V oder Du nimmst 5V vom Arduino-Board)




Jetzt sag bitte nicht: "So ein Aufwand für einen einfachen Blinker!"
Immerhin hast Du es geschafft, einen Blinker mit nur drei Bauelementen zu bauen.
Erweitere doch das Programm zu einem kleinen Lauflicht!
Du kannst auch gerne mit der Schaltung vier Servomotoren ansteuern oder einen kleinen Roboter bauen!


Das ist Kurt von der Mikrocontrollerspielwiese.
Als Gehirn (links im Bild) hat er einen Attiny13 oder einen Attiny45.



"Klein" bedeutet ja nicht, dass unser Attiny nix kann. Schau Dir mal die vollständige Beschriftung an:





Folgende Befehle aus dem Arduino-Befehlsvorrat funktionieren:

pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()

Hinzu kommen natürlich die Befehle des avr-gcc.




Ich hatte übrigens noch die Idee, ein aufsteckbares Prototype-Shield aus der Geschichte zu machen.

Zum Schluss noch die Quelle meiner Inspiration vom Massachusetts Institute of Technology

Bei manchen Computern wird es bei dieser Schaltung eng, was den Strom betrifft, den die USB-Buchse Deines Computers liefern kann. Schließ einfach eine Spannungsquelle an Deinen Arduino!


.