Danke für Eure Hilfe
Ich werde mal so etwas in der Art versuchen
Code:
#include <avr/io.h>
#include <stdlib.h>
#include<avr/interrupt.h>
#include<avr/signal.h>
//Definition einiger Datentypen, reine Geschmacksache
#define uchar unsigned char // 1 Byte ohne Vorzeichen 0 bis 255 erlaubt
#define uint unsigned int // 2 Byte ohne Vorzeichen 0 bis 65535 erlaubt
//Definition der Konstanten
#define reload 100 // Reload Wert für Timer0 256 - 100 = 156
// Defintion der globalen Variablen
volatile uchar count_10ms; // Zähler für die 10ms INT
// Timer0 Overflow Routinen, Aufruf alle 10 ms
SIGNAL (SIG_OVERFLOW0 )
{
TCNT0 = reload; //Timer0 neu einstellen auf 100
count_10ms++; //Zähler um 1 erhöhen
if(count_10ms >= 100) //Abfrage 1 Sekunde vorbei, 100 * 10 ms
{
//dann LED umschalten
if(bit_is_set(PORTB,1)) //PIN gesetzt ???
PORTB = 0x00;
else
PORTB = 0x01;
count_10ms = 0; //Zähler löschen
}
}
//Einstellen der Hardware des AVR +++++++++++++++++++++++++++++++++++++++++++++
void init(void)
{
//Port einstellen
DDRB = 0x01; //PortB.1 auf Ausgang
//TimerO einstellen
TIMSK = _BV(TOIE0); // Timer0 Overflow INT erlauben
TCNT0 = reload; // TIMER0 vorladen mit 100
TCCR0 = _BV(CS02) ; // Vorteiler auf 256, ab hier läuft der TIMER0
// Global Interrupts freigeben
sei();
}
//Hauptprogramm, hier startet der uC ++++++++++++++++++++++++++++++++++++++++++
void main (void)
{
init(); // Hardware einstellen gehen
for(;;) // Endlosschleife
{
}
}
Lesezeichen