Gast
#76157
Hallo,
ich versuche gerade krampfhaft den 16 Bit Timer des Atmega8 zu
programmieren, nur irgendwie ist der Wurm drin.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
unsigned char time_ist = 0;
SIGNAL (SIG_OVERFLOW1) {
time_ist++;
}
void timer (unsigned char time_soll) {
unsigned char time_ist = 0;
TCNT1 = 0; //Rücksetzen des Timers
TCCR1B = _BV(CS11) | _BV(CS10); //Prescaler 64
TIMSK = _BV(TOIE1); //Timer Overflow Interrupt enable
sei ();
while (time_soll >= time_ist) {}
}
int main (void) {
DDRB = 0xff;
for (;;) {
PORTB = 0xff;
timer (1);
PORTB = 0x00;
timer (1);
}
}
Eigentlich sollten die LEDs ca. im Sekundentakt blinken. 4MHz/64/2^16
liefert ungefähr eine Frequenz von einem Hertz.
Wo liegt nun der Fehler?
Thomas