Moin.
Wieder mal ein neues Problem. An nem ATMega2560-Modul (von Robotikhardware) ist ja an TOSC1/TOSC2 ein 32768Hz-Uhrenquarz. Hab jetzt versucht, den für die Uhr zu verwenden, was aber nicht klappt.
Hier die relevanten Codeteile:
Das Programm selbst bleibt bei der "while"-Anweisung stehen; ohne das while läuft zwar der Rest vom Programm; die ISR wird jedoch nicht angesprungen (was man sonst an einer blinkenden LED sehen würde)Code:void Clock_Start(ui8_t timer) { TIMSK2 |= (1<<TOIE2); } void Clock_Init(void) { TIMSK2 &= ~((1<<OCIE2A)|(1<<OCIE2B)|(1<<TOIE2)); // Disable any interrupts from Timer 2 ASSR |= (1 << AS2); // Select 32768 Hz Clock TCCR2A = 0; // Standard timer (No Counting, No PWM) TCCR2B = 0 | (1<<CS22) | (1<<CS20); // Prescaler = 128 TCNT2 = TCNT2_REL; // Reload while(ASSR & ((1<<TCR2BUB)|(1<<TCR2AUB)|(1<<TCN2UB))); // wait until clock has switched TIFR2 |= ((1<<OCF2A)|(1<<OCF2B)|(1<<TOV2)); // Clear Interrupt flags ONBOARD_LED_DDR |= (1 << ONBOARD_LED_PIN); } ISR (SIG_OVERFLOW2) { TCNT2 = TCNT2_REL; ONBOARD_LED_PORT ^= (1 << ONBOARD_LED_PIN); }
Sieht hier jemand nen Fehler?
mfG







Zitieren

Lesezeichen