I/O Pin und C Programmierung
Gemäss Atmega8 Schema haben wir 3 Data Direction Register. Wir
bezeichnen Sie DDRB , DDRC und DDRD. Jede der 3 Register hat wiederum
8 Pin mit den Bezeichnung PB0, PB1 usw. Nun können wir die
I/O Pins wahlweise als Ausgang oder Eingang nutzen.
Dies funktioniert folgenderweise zB. PB0 :
DDRB =
DDRB &= ~(1<<PB0); Eingang
Wenn jetzt eine LED leuchten soll setzen wir den Pin auf Ausgang und
danach:
PORTB =
PORTB &= ~(1<<PB0);
Nun der Ablauf eines Taster nachdem wir den Pin auf Eingang setzen :
PORTB |= (1<<PB0);
if(!(PINB & (1<<PB0))) Mit dieser Abfrage warten wir bis der Pin
Allgemeiner Ablauf eines Mikrokontroller Programm
Mit Include Dateien werden dem Compiler verschiedene Informationen oder
mehr Funktionsumfang bereitgestellt. Diese erlaubt uns fertige Funktionen
einzubinden. Die wichtigste ist:
#include <avr/io.h>
Die io.h gibt uns Zugriff auf einfache Konstrukte zu verschiedene Funktionen
und Variablen des Atmega8. Wie zB. DDRB, PINB usw. Mit der Delay.h
#include <util/delay.h>
erhalten wir Funktionen auf Wartefunktionen in Milli – oder Mikrosekunden.
Mit Defines geben wir Pins, Zahlen oder Einstellungen einen Vernünftigen
Namen. Hängt zB. eine rote LED am PIN5 ist es einfacher mit:
#define ROT_LED PIN5
(1<<PB0); Ausgang ( dem Register eine 1 zuweisen)
(1<<PB0);
PIN High (es liegen 5 Volt an)
PIN Low (es liegen 0 Volt also GND an)
Interne Pull-Up einschalten
auf GND gezogen wird um danach eine
Aktion zu Starten. (Ampel)
( dem Register eine 0 zuweisen)