Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

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

Autor


LiFePO4 Speicher Test