Gast
#1494485
Hallo Leute!
Hab da ein kleines Problem. Ich will eine 7-Segment Stoppuhr
programmieren, die den CTC Counter verwendet. Ein und ausgeschalten wird
das ganze über den externen Interrupt INT0. Mit einem normalen Counter
hat das ganze schon funktioniert. Allerdings war das viel zu ungenau.
Also wollte ich es mit CTC versuchen.
Das Problem: Beim Betätigen der Taste kommt er zwar in die ISR von INT0
aber startet den Timer nicht!
Hier mal der relevante Code:
ISR(INT0_vect)
{
if(OCIE1A) //Wenn timerinterrupt läuft
{
TIMSK= (0 << OCIE1A); //Timerinterrupt ausschalten
}else
{
TIMSK= (1 << OCIE1A); //ansonsten Timerinterrupt einschalten
}
_delay_ms(20); //Schalterentprellen
}
int main (void) {
//*****************
// Initialisierung
//*****************
DDRB = 0xFF; //PORTB auf Ausgang setzen (7-Segmente)
DDRC = 0xFF; //PORTC auf Ausgang für Segmentwahl
//Interrupt konfigurieren
MCUCR = (1<<ISC01); //Int0 auf fallende Flanke konfigurieren
GICR = (1<<INT0); //Int0 aktivieren
//Timer Configurerien
OCR1A = 39999;
TCCR1B=( 1 << WGM12 ) | ( 1 << CS10 );
TIMSK= (0 << OCIE1A);
sei();
Was mach ich falsch?
Grüße
Markus