summaryrefslogtreecommitdiff
path: root/timebase.c
diff options
context:
space:
mode:
Diffstat (limited to 'timebase.c')
-rw-r--r--timebase.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/timebase.c b/timebase.c
index 3b97e2b..ee58bf1 100644
--- a/timebase.c
+++ b/timebase.c
@@ -24,6 +24,7 @@ void timebase_init( void )
TIMSK = 1<<TOIE0; // interrupt enable
}
+extern uint8_t waitctr;
SIGNAL (SIG_OVERFLOW0)
{
@@ -31,7 +32,7 @@ SIGNAL (SIG_OVERFLOW0)
// DCF77 receive
if( dcf77_time != 0xFF ) // stop on 0xFF
dcf77_time++; // count ticks
- if( (DCF77_PIN ^ old_dcf77) & 1<<DCF77 ){ // pin changed ?
+ if( ~(DCF77_PIN ^ old_dcf77) & 1<<DCF77 ){ // pin changed ?
old_dcf77 ^= 0xFF; // change old flag
if( old_dcf77 & 1<<DCF77 ){
dcf77_period = dcf77_time; // store ticks of period
@@ -40,16 +41,19 @@ SIGNAL (SIG_OVERFLOW0)
dcf77_pulse = dcf77_time; // store ticks of pulse
}
}
+
+ if (waitctr)
+ waitctr--;
// time base 1 second
TCNT0 = (u16)(256 - T0COUNT); // reload per tick: -183
if( ++ct_64Hz & 0x3F ){ // 64 ticks = one second
timeflags = 1<<ONE_TICK; // one tick over
- return;
+ } else {
+ TCNT0 = (u16)(256 - T0COUNTSEC); // reload per second: -189
+ if( timeflags & (1<< ONE_MINUTE ))
+ TCNT0 = (u16)(256 - T0COUNTMIN); // reload per minute: -234
+ timeflags = 1<<ONE_SECOND^1<<ONE_TICK; // one tick, one second over
}
- TCNT0 = (u16)(256 - T0COUNTSEC); // reload per second: -189
- if( timeflags & (1<< ONE_MINUTE ))
- TCNT0 = (u16)(256 - T0COUNTMIN); // reload per minute: -234
- timeflags = 1<<ONE_SECOND^1<<ONE_TICK; // one tick, one second over
}