Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Laderegler Test Tueftler Seite

 
(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

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