folgende beiden kleinen funktionen habe ich mir laut dem tutorial
gebastelt:
void initTimer0 (void)// TIMER_0 8bit, overflow
{
TCCR0 = (1<<CS02)|(1<<CS00);
TIMSK |= 1<<TOIE0;
}
void initTimer1 (void) //TIMER_1 16bit
{
TCCR1B = (1<<WGM12); // CTC Modus
TCCR1B |= (1 << CS11) | (1 << CS10);
OCR1A = 125-1;
TIMSK = (1<<OCIE1A);
}
rufe ich initTimer0 vor initTimer1 auf, geht der timer0 nicht, umgekehrt
schon. Warum?
Gast
#2101363
Schau mal wie du TIMKS lädst! Siehst du die Veroderung das eine mal, das andere mal nicht!
Gast
#2101365
Hi >rufe ich initTimer0 vor initTimer1 auf, geht der timer0 nicht, umgekehrt >schon. Warum? Geht nicht: TIMSK |= 1<<TOIE0; TIMSK = (1<<OCIE1A); Geht: TIMSK = (1<<OCIE1A); TIMSK |= 1<<TOIE0; Fällt dir etwas auf? MfG Spess
immer diese kleinen tippfehler. warum funktioniert eigentlich TCCR1B = (1<<WGM12); und TCCR1B |= (1<<WGM12); kann man das auch anders schreiben?
Weil das eine das ganze Register einfach nur beschreibt, während das andere das Register ausliest, mittels oder das 1 Bit setzt und dann das Ergebnis wieder ins Register zurückschreibt. Völlig analog dazu, wie man 1 Bit an einem Ausgangsport setzt.
ich habe alles auf |= gesetzt und es scheint zu funktionierenn... danke!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.