LED mit sleep() blinken lassen
Das berühmte Hello-World-Programm sieht bei einem Mikrocontroller zum einen komplizierter aus, bewirkt aber keinen Text auf dem Bildschirm, sondern lediglich ein simples blinken einer angeschlossenen LED.
Im Folgenden wird ein Beispielprogramm gezeigt, das auf einem ATMega32 ausgeführt wird. Als Experimentierboard wurde das STK500 benutzt. Hierbei wird eine Schleife durchlaufen, in der Einschalten der LED, 1000 ms Warten, Ausschalten der LED und nochmals 1000 ms Warten endlos lange ausgeführt wird.
Das Programm kehrt nie zurück.
Um möglichst genau eine Zeit von 1 Sekunde warten zu können, benötigt die Datei "delay.h" die Festlegung der Quarzfrequenz, hier 1MHz.
#define F_CPU 1000000UL // Frequenz des Quarzes, ohne Quarz standardmäßig 1MHz
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
// 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
_delay_ms(1000); // 1 sec warten
LED_PORT &= ~(1 << LED_PORTPIN); // Den Portpin auf low setzen
_delay_ms(1000); // 1 sec warten
}
}
Download |