Hello World - Attiny2313 !



Mit einen sogenannten "Hello-World-Programm" bezeichnet man häufig den ersten Test von Programmiersprachen oder programmierbaren Geräten - in diesem Falle also ein Attiny2313.

Ziel: eine LED am Attiny2313 blinken lassen.

Der Attiny2313 ist von seiner Größe, Pinzahl und seinen Fähigkeiten zwischen Attiny13 und Atmega8 einzuordnen.

Schau Dir die Anschlußbelegung (engl. "pinout") an:


pinout

Du erkennst bestimmt:

  • Vcc (Betriebsspannung, wir nehmen 5V)
  • GND (Ground, also "Betriebsspannungsminus")
  • PB0 ... PB7: PORT B
  • PD0 ... PD6: PORT D

Die Programmierschnittstelle kommt an die Pins 10, 19, 18, 17, 1



Wir stecken folgende Schaltung auf einem Steckbtrett auf, um die an PD5 angeschlossene LED1 blinken zu lassen.



Gehen wir mal die Schaltung von links nach rechts durch:

  • Du erkennst die Anschlüsse für die Betriebsspannung (5V, GND).

  • R1 verbindet den Reseteingang mit 5V (also High).

  • C1 beseitigt Störfrequenzen, die der Attiny erzeugt.

  • R2 begrenzt den Strom, der durch die LEDs fließt.

  • JP1 ist einfach eine fünfpolige Buchse, wo der Programmieradapter drangesteckt werden wird.
    Auf einem Steckbrett brauchst Du natürlich keine solche Extrabuchse.

  • LED1 ist an PD5 angeschlossen und wird dann blinken.
    LED2 und LED3 sind nur deshalb schon vorhanden, weil wir sie in den nächsten Experimenten benutzen werden.




Schau Dir den Programm-Quelltext an:


#include 

#define F_CPU 8000000UL        // 8 MHz (fuer delay.h)
#include 

int main(void){
    DDRD |= _BV(PD5);          // PD5 ist jetzt Ausgang
   
    while(1){
       
        PORTD |= _BV(PD5);     // PD5=High -> LED an
        _delay_ms(250);        // Warte 250ms
        PORTD &= ~_BV(PD5);    // PD5=Low -> LED aus
        _delay_ms(250);        // Warte 250ms
    }
 

    return 0;
}



Wie gelangt das Programm in den Mikrocontroller?

Für die Programmierschnittstelle JP1 benutzen wir den im Einstiegsprojekt Blinksdings gebauten DAPA-Programmieradapter oder den USB-Programmieradapter.


Du hast alles richtig gebaut? Alles richtig zusammengestöpselt? Betriebsspannung OK?  Dann gehts jetzt los:


Vorgehensweise mit DAPA-Programmieradapter

  1. Lade Dir dieses Softwarepaket: hello_world_attiny2313_parallel_code.zip in Dein Home-Verzeichnis!

  2. Entpacke es! Es entsteht der Ordner hello_world_attiny2313_parallel_code.

  3. Öffne eine Konsole bzw. ein Terminal!

  4. Werde root: mit su und dann Passwort eingeben (nein, es kommen keine Sternchen)!

  5. Gehe in den Ordner hello_world_attiny2313_parallel_code mit:
    cd hello_world_attiny2313_parallel_code

  6. Aktiviere die Nutzung des Parallelports für unser Programmierkabel mit: sh Parallelport_aktivieren.sh
    (Das mußt Du nur jeweils einmal nach dem Starten Deines Computers tun. Bei einigen Linuxen ist es nicht nötig - schadet aber auch nix!)

  7. Kompiliere den Programmquelltext und schiebe das so entstandene Programm in den Mikrocontroller mit: make load

Und? Blinkts?

Du kannst jetzt den Programmquelltext test.c mit Deinem Lieblingseditor verändern.
Alles, was Du dann jeweils tun mußt, ist einfach (als root) make load einzugeben.


Vorgehensweise mit USBASP-Programmieradapter

Hier gibt's zum Runterladen den Code-Ordner "hello_world_attiny2313_usb_code.zip", der mit dem USB-Programmieradapter der Mikrocontrollerspielwiese funktioniert.



Anmerkungen:

  • Wenn Du hier irgendwas nicht verstehst, solltest Du Dir unbedingt das Projekt Blinksdings ganz durchlesen und vorher natürlich das Kapitel C für Mikrocontroller durchgearbeitet haben.

  • Wenn Dein Attiny nun nach Wunsch programmiert ist, kannst Du Du die Programmierschnittstelle wieder entfernen und den 10K-Widerstand durch einen Draht ersetzen. Selbst den Kondensator könnte man jetzt weglassen, wenn die vom Attiny produzierten hochfrequenten Schwingungen keine Rolle spielen. Du hättest dann einen Blinker aufgebaut, der aus 3 Bauelementen besteht.


Aufgaben:

  • Verändere doch mal die Leuchtzeit so, daß eine Art Blitzeffekt entsteht!