|
|
Absolute Beginner-AVR SteckbrettprojekteAls einfacher Anfang ist ein Steckbrett und ein USB Programmer erst mal ausreichend. Dazu ein Atmel Mega 88 und ein bisschen Hühnerfutter und los geht es. Auf dem PC muss das AVR-Studio, WinAvr und ggf. Ponyprog zum Übertragen der Hex-Files installiert sein. Die Beispielprogramme sind in C geschrieben.
[Bearbeiten] LED einschaltenSiehe auch: AVR-GCC-Tutorial Die Fuse Bits bleiben auf Auslieferungszustand. Der Mega 88 wird aus einer 9V Block-Batterie und dem 7805 mit 5V Spannung versorgt. Eine LED wird nach GND geschaltet, diese leuchtet wenn der Portpin auf 1 oder High liegt. Die andere LED wird nach Vcc geschaltet, diese leuchtet wenn der Portpin auf 0 oder Low liegt. (Der Taster im Bild wird erst später gebraucht) Im Programm wird im DDRD festgelegt, dass der alle Pins des Port D Ausgänge sind. Durch den unterschiedlichen Anschluss der LED muss der Port D0 auf 1 und der Port D2 auf 0 gesetzt werden, damit beide LED leuchten. Download Software: C Programm Download Software: Hex-File Aufgaben: [Bearbeiten] Eingang abfragenIn der Initialisierung wird mit dem DDRD festgelegt, dass Port D0 bis 3 Ausgänge und D4 bis 7 Eingänge sind. Der interne Pull Up Widerstand Port D7 wird eingeschaltet. Der Taster ist an Pin D7 angeschlossen. Der Taster schaltet nach Masse, daher ist der Pin D7 bei unbetätigtem Taster durch den internen Pull Up Widerstand (nach Vcc) auf High.
Aufgaben: [Bearbeiten] LED blinken lassenDie Fuse Bits bleiben auf Auslieferungszustand. Dadurch läuft der Controller auf 1Mhz internen Takt. Genutzt wird der Timer 1 . Der Takt-Vorteiler (pre-scaler ) wird auf 1024 eingestellt. Zeit = 1 / (1.000.000/(1024*488) = 0,4997sec. Das heißt: die Timerinterrupt-Routine 1 wird alle 0,5 Sekunden aufgerufen, die LED blinken mit 1Hz. Download Software: C Programm Download Software: Hex-File Download Software: C Programm mit Timer 0 und 1
[Bearbeiten] LCD ansteuernMan mag sich fragen, warum die Ansteuerung eines LCD so weit am Anfang kommt. Ich halte die Vorteile für eine einfache Fehlersuche recht groß. Oft sag man nach ein paar Stunden Fehlersuche: „kaum macht man es richtig, schon funktioniert es“. Einfach ein paar Variablen aufs Display und schon gibt es ein Ahhaaa. Da man ein LCD häufig braucht und die benötigten Programmblöcke immer gleich sind, werden sie sinnvoller Weise in separate Programme ausgelagert. Die Bibliothek ist dann einmal getestet und kann wieder verwendet werden. In diesem Fall sind es die: lcd-routines.h und lcd-routines.c. Das LCD wird im 4Bit Modus betrieben. Es kommt das Programm und der Anschluss hier aus dem Forum unter AVR-GCC-Tutorial/LCD-Ansteuerung zum Einsatz.
[Bearbeiten] Taster abfragen
Um für Programmerweiterungen Ports frei zu bekommen wird das LCD nun auf Port B angeschlossen. In der lcd-routines.h Datei werden die entsprechenden Änderungen vorgenommen.
[Bearbeiten] Analogeingang einlesenEs kommt das Programm und der Anschluss hier aus dem Forum unter AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29 zum Einsatz. Das LCD ist jetzt am PortB angeschlossen.
Aufgaben:
[Bearbeiten] PWM Pulsweitenmodulation
Durch den Timer Vor-Teiler von 256 (TCCR0B =(1<<CS02);) ist die PWM Frequenz sehr niedrig, sodass man mit dem Auge ein Flackern an der LED erkennen kann. fOCnxPWM=( fclk_I/O)/(Pre-Teiler * 256)
[Bearbeiten] Interrupt |