Ich habe mir den Source von Ulrich Radig angeguckt.
Code:
//############################################################################
//Overflow Interrupt wird ausgelöst bei 59Sekunde oder fehlenden DCF77 Signal
SIGNAL (SIG_OVERFLOW1)
//############################################################################
{
struct DCF77_Bits *rx_buffer;
rx_buffer = (struct DCF77_Bits *)(unsigned long long)&dcf_rx_buffer;
//Zurücksetzen des Timers
TCNT1 = 65535 - (SYSCLK / 1024);
Wie wird sichergestellt das SIG_OVERFLOW1 ausgelöst wird bei 59 Sekunde oder fehlenden DCF77 Signal?
Code:
//Diese Routine startet und inizialisiert den Timer
void Start_Clock (void)
//############################################################################
{
//Interrupt DCF77 einschalten auf ansteigende Flanke
DCF77_INT_ENABLE();
INT0_CONTROL = INT0_RISING_EDGE;
//Interrupt Overfolw enable
timer_enable_int(_BV(TOIE1));
//Setzen des Prescaler auf 1024
TCCR1B |= (1<<CS10 | 0<<CS11 | 1<<CS12);
TCNT1 = 65535 - (SYSCLK / 1024);
return;
};
Wird hier ein 16Bit Timer verwendet?
Lesezeichen