(kein Unterschied)
|
Version vom 29. Juli 2008, 19:59 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).
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
Autor