Wie funktioniert das Programm?#include
<avr/io.h> #include
<util/delay.h>
// Befehlsbibliothek, die uns den Ich könnte mir denken, daß Dir folgende Befehle auch wie Zauberei vorkommen:
DDRB = 16;
Betrachten wir einmal die
Pinbelegung eines Attiny13:
Vcc ist die Betriebsspannung (Plus) und GND (engl. Ground) ist Masse (Minus). Als digitale Ausgänge können wir die Anschlußpins benutzen, die da heißen: PB0, PB1, PB2, PB3, PB4 und PB5. Es handelt hierbei um sechs digitale Ein-/Ausgänge eines Ports mit Namen PORTB. Vielleicht erinnert Dich das Wort "Port" an einen Hafen, wo die Schiffe ein- und ausfahren - das ist gar nicht mal so falsch. Unser Attiny hat nur einen Port mit Namen B. Andere Mikrocontroller mit mehr Anschlußpins, wie z. B. Atmega8, haben mehrere Ports. Diese Anschlüsse kann man als digitale Ausgänge oder als digitale Eingänge benutzen. (Mann kann auch noch mehr damit machen, doch dazu später.) Zu diesem
PORT B gehört außerdem das
Datenrichtungsregister DDR B
(data direction register B):
Das Datenrichtungsregister legt fest, ob’s rein (Eingang) oder raus (Ausgang) gehen soll. Wenn PB0
(also Anschlußbeinchen 5 des Attiny13) ein Ausgang sein soll, dann muß
im Datenrichtungsregister DDRB das 0. bit gesetzt sein, so wie hier:
In der Programmiersprache C geht das z. B. so: DDRB = 1; Soll PB4
Ausgang
sein, geht es mit: DDRB = 16;
Warum 16? Eine 16 in Binärschreibweise
sieht so aus: 010000 Soll nun der Ausgang PB4 auf HIGH gesetzt werden, geht das mit: PORTB = 16; Soll der Ausgang PB4 auf LOW gesetzt werden, geht das mit: PORTB = 0; Eine am PB4 angeschlossene LED würde nun aus und an gehen - allerdings so schnell, dass man es nicht mehr sehen könnte. Darum enthält das Programm zwei Wartezeiten (engl. delay). Und damit es das Ganze nicht nur einmal tut, passiert das Setzen und Löschen von PB4 in einer Endlosschleife. Du erinnerst Dich: while(1){ // --- diese Schleife endet nie --- } Wenn Dir der Sinn der obigen Zeilen noch nicht so ganz einleuchtet, solltest Du erst einmal diesen C-Kurs durcharbeiten. <----- Falls Du hier links KEIN Menü siehst: KLICK HIER |