Hallo Leute,
ich habe mir einen Atmega 16 zugelegt und schon einiges programmiert. jz möchte ich mir eine Stopp uhr aus meinen 7-Segmenten basteln und da komme ich mit der Funktion _delay_ms() nicht mehr weiter. So hab ich auf mikrocontroller.net das Timer-Tutorial durch gearbeitet. Leider funtioniert mein Programm nicht, vielleicht könnt Ihr mir weiterhelfen!
Danke schon im vorhinein!
Hier ist mein Code:
Das Problem ist das die LEDs sofort zu leuchten beginnen.Code:#define F_CPU 1000000 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int zaehler=0; ISR (TIMER0_OVF_vect) { zaehler++; } int main() { //Timer konfigurieren //Prescaler = 1024 TCCR0 = (1<<CS02)|(1<<CS00); //Overflowinterrupt erlauben TIMSK |= (1<<TOIE0); //Aktivierung der Interrupts sei(); //Ports konfigurieren DDRB = 0xFF //PortB sind Ausgänge für LEDs while(1) { if(zaehler==12) { PORTB = 0xF0; } } return 0; }
Wenn ich eine Frequenz von 1MHz habe und eine Prescaler von 1024
heißt dass das der Timer 976 mal erhöht wird pro sekunde=> darausfolgt das ich 976/256=3,81 Overflows habe.
Wenn ich die Variable zaehler dann bis 12 zählen lasse heißt, das das ich ungefähr 3sekunden warten muss bis die LEDs leuchten
MFG
fulltime







Zitieren

Lesezeichen