Arduino, Hardware- und Softwareentwicklung, Mikrocontroller

ATTiny2313 mit Arduino ISP programmieren

Zeitgleich zu meinem Arduino Board hatte ich mir auch einen ATTiny2313 und das Evaluations-Board von Pollin gekauft. Leider funktioniert der ISP bei mir nicht, da der USB-Adapter Windows7 64 Bit nicht unterstützt.

Darum war es eines meiner ersten Ziele, die ich erreichen wollte, dass ich den ATTiny2313 mit meinem Arduino Board programmieren kann.  Nach langem Ausprobieren und Tutorials durcharbeiten habe ich es endlich geschafft. Es funktioniert :-)

Hardwareaufbau

Auf dem Arduino-Board sind folgende Ports für die Programmierung vorgesehen:

  • 13: SCK
  • 12: MISO
  • 11: MOSI
  • 10: RESET
  • 5V: VCC
  • GND:GND

Die Pin-Belegung für den ATTiny2312 finden man z.B. hier.

Angeschlossen habe ich den ATTiny über ein BreadBoard.

Hardwarespezifischen Einstellung und Core-Modul

Um Arduino-Code und den Arduino ISP für ATTiny nutzen zu können, muss zum einen ein spezielles Core-Modul hinzugefügt werden und die Bord-Konfiguration (boards.txt) erweitert werden. Dies passiert im Sketchbook-Verzeichnis (findet man im Menü Datei/Einstellungen unter Sketchbook Speicherort). Bei mir ist das (D:\Users\[ICH]\Documents\Arduino\)

/[Sketchbook-Verzeichnis]
  |--hardware
  |   |--attiny
      |   |--core
          |--boards.txt

Die Daten (core und boards.txt) findet man in folgendem SVN-Repository.

cd /[Sketchbook-Verzeichnis]
svn checkout http://arduino-tiny.googlecode.com/svn/trunk/hardware

# Hinweis:
# Dafür benötigt man allerdings ein SVN-Client.

Danach muss man die Arduino IDE neu starten.
Im Menü unter Tools/Boards sieht man jetzt:

Blinkende LED

Jetzt kann es losgehen.
Zuerst mus das Arduino-Board ein ISP (In-System-Programmierung) werden. Dazu läd man das Sketch ArduinoISP in der IDE und überträgt dieses auf das Arduino Board (die Einstellung unter Menü Tools/Boards bleibt noch auf Arduino Uno!).

Danach wechselt man das Boad auf z.B. ATTiny2313 @ 1MHz und läd das Sketch 01Basics/Blink. Jetzt kann der Code auf den ATTiny übertragen werden. Wenn man jetzt noch einen Wiederstand (ca. 170 Ohm) und eine LED zur Hand hat, kann man den Erfolg überprüfen.

int led[] = {9,8,7,6};

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led[0], OUTPUT);
  pinMode(led[1], OUTPUT);
  pinMode(led[2], OUTPUT);
  pinMode(led[3], OUTPUT);
 digitalWrite(led[0], HIGH);
 digitalWrite(led[1], HIGH); 
 digitalWrite(led[2], HIGH); 
 digitalWrite(led[3], HIGH); 
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led[0], HIGH);
  delay(1000);
  digitalWrite(led[0], LOW);
  delay(1000);
}
Share on FacebookTweet about this on TwitterPin on Pinterest

3 Kommentare

  1. hill-pohl@t-online.de'
    Erich Hill sagt

    Hallo Marco, ich finde Ihre ausführungen recht gelungen,aber kann man mit Ihrer Methode auch Fußbits bei Attiny 2313 einstellen? ich würde gerne diese Schaltung Realisieren ( http://www.avr-projekte.de/timer.htm ) kann aber noch nicht den attiny programmieren.
    Für eine Antwort wäre ich dankbar, gruß erich hill

  2. Pingback: Atmel ATTINY | Andreas' Blog

Kommentare sind geschlossen.