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?
Schau mal wie du TIMKS lädst! Siehst du die Veroderung das eine mal, das andere mal nicht!
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!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.