Danke für Deine Antwort..
hmm...
wo starte ich denn den Timer?
Indem ich die TCCR-Register beschreibe?
Gruß
kesandal
Danke für Deine Antwort..
hmm...
wo starte ich denn den Timer?
Indem ich die TCCR-Register beschreibe?
Gruß
kesandal
Habe es ausprobiert.
Die ISR von Timer 0 wird jedoch nach wie vor nicht aufgerufen
Code:#include <avr/io.h> #include <avr/interrupt.h> int main(){ DDRC=0xff; DDRA=0x00; DDRD=(1<<PD5); // sound output TCNT0=0; TCNT1=0; TCCR0=(1<<WGM01)|(1<<CS02)|(1<<CS00); // pr 1024 - ctc => 3600hz TCCR1A = (1<<COM1A0); TCCR1B= (1<<WGM12)|(1<<CS10); // pr 1024 - ctc TIMSK = (1<<OCIE1A)|(1<<OCIE0); OCR1A=0; OCR0=200; // *18 = 3600 => 1sekunde DDRB=0xff; PORTB=0xff; sei(); while(1){ } return 0; } ISR(TIMER1_COMPA_vect){ // PORTB=0x0f; } ISR(TIMER0_COMP_vect){ PORTB=0xf0; }
Auch das funktioniert leider nicht
Zum OCF0 bit steht folgendes im Manual:
The OCF0 bit is set (one) when a compare match occurs between the Timer/Counter0 and the
data in OCR0 – Output Compare Register0.
Hi,
wenn Timer1 auf CTC eingestellt ist und Du OCR1A auf 0 setzt, tritt der Interrupt eventuell so oft auf, daß immer nur der Interrupt von Timer1 abgearbeitet wird. Dieser steht in der Interrupt Vector Tabelle weit vor dem OVF Timer 0 und wird deshalb immer als erster dran kommen.
Wie sieht es aus, wenn OCR1A nicht 0 ist?
PS Mit welcher Taktfrequenz läuft der µC? Ist der erste Code vom ersten Beitrag genau der Code mit dem Du auch testest? Wie überprüftst Du, daß Timer0 ISR nicht aufgerufen wird? (LEDs?)
Gruß
Searcher
Geändert von Searcher (24.06.2011 um 11:59 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hallo Searcher,
dein Hinweis brachte mich zur Lösung.
Deine Vermutung hat sich bestätigt![]()
Lesezeichen