(→Beschreibung) |
|||
Zeile 1: | Zeile 1: | ||
=Beschreibung= | =Beschreibung= | ||
− | Das kleine Programm lässt eine LED an einem AVR ohne Timer blinken und ist somit einfacher zu verstehen als [[Hallo Welt für AVR (LED blinken)]]. | + | Das kleine Programm lässt eine LED an einem AVR ohne Timer blinken und ist somit einfacher zu verstehen als [[Hallo Welt für AVR (LED blinken)]]. Wegen der delay - Funktion muß das Programm mit Optimierung übersetzt werden, also der Option -os , -o1, -o2 oder -o3 nicht aber mit -o0. |
=Das Programm= | =Das Programm= |
Version vom 14. August 2010, 16:08 Uhr
Inhaltsverzeichnis
Beschreibung
Das kleine Programm lässt eine LED an einem AVR ohne Timer blinken und ist somit einfacher zu verstehen als Hallo Welt für AVR (LED blinken). Wegen der delay - Funktion muß das Programm mit Optimierung übersetzt werden, also der Option -os , -o1, -o2 oder -o3 nicht aber mit -o0.
Das Programm
#include <avr/io.h> #include <util/delay.h> #include <stdint.h> //Prototypen void sleep_ms(uint16_t ms); //LED Defines //Hier müssen die richtigen Angaben hin #define LED_DDR DDRC //DDRA, DDRB... #define LED_PORT PORTC //PORTA, PORTB... #define LED_PORTPIN PC1 //PA0, PA1..., PB0, PB1..., ... int main(void){ /*Den Pin wo die LED angeschlossen ist als Ausgang setzen */ LED_DDR |= (1<<LED_PORTPIN); //Die LED die ganze Zeit an und aus schalten while(1){ LED_PORT |= (1<<LED_PORTPIN); //Den Portpin auf high setzen sleep_ms(1000); //1sek warten LED_PORT &= ~(1<<LED_PORTPIN); //Den Portpin auf low setzen sleep_ms(1000); //1sek warten } } /* Diese Funktion lässt den Controller "ms" Millisekunden warten. Die while-Schleife wird so oft durchlaufen, wie der Funktion übergeben wurde. Bei jedem Duchlauf wir noch 1ms gewartet. */ void sleep_ms(uint16_t ms){ while(ms){ ms--; _delay_ms(1); } }
Makefile
Im Makefile müssen noch die Einträge MCU, F_CPU und TARGET an die Schaltung angepasst werden.
MCU: der verwendete Prozessor F_CPU: Quarzfrequenz in Hertz TARGET: der Dateiname des Programms ohne Endung
Beispiel
//Der verwendete Prozessor MCU = atmega32 //Ein Atmega 32 wird verwendet //Die Quarzfrequenz in Hertz F_CPU = 16000000 //16 MHz //Name des Programms ohne die Endung TARGET = main //Das Programm heißt main.c
Weblink
Das Programm kann als zip-Datei von meiner Homepage heruntergeladen werden. led_blinken.zip