diff --git a/src/main.c b/src/main.c index 4a9db66..9f564fb 100644 --- a/src/main.c +++ b/src/main.c @@ -44,8 +44,6 @@ typedef struct clock_s { uint8_t weekday; uint8_t month; uint8_t year; - uint8_t minuteStepPosition; - uint8_t hourStepPosition; } clock_t; typedef struct opTime_s { @@ -67,8 +65,6 @@ volatile uint8_t tack = 0; volatile uint8_t step = 0; ISR(TIMER2_OVF_vect) { - cli(); - clock.second++; if (valid != 2) { @@ -85,8 +81,6 @@ ISR(TIMER2_OVF_vect) { } } - sei(); - opTime.second++; if (opTime.second >= 60) { @@ -134,8 +128,6 @@ int main() { clock.hour = 0; clock.minute = 0; clock.second = 0; - clock.minuteStepPosition = 0; - clock.hourStepPosition = 0; opTime.hour = 0; opTime.minute = 0; @@ -484,8 +476,6 @@ int main() { clock.month = rd.monthDigit0 + rd.monthDigit1 * 10; clock.year = rd.yearDigit0 + rd.yearDigit1 * 10; - clock.minuteStepPosition = clock.minute * STEPS_PER_MINUTE; - clock.hourStepPosition = clock.hour * STEPS_PER_HOUR; valid = 2; timeValidCnt++; @@ -523,25 +513,31 @@ int main() { printf("POS: %02d\n", positionSwitch); } - static uint8_t currentMinutePosition = 0; - static uint8_t currentHourPosition = 0; - if (step != 0) { - step = 0; - if (currentMinutePosition != clock.minuteStepPosition) { - printf("Minute: "); - if (currentMinutePosition > clock.minuteStepPosition) { - printf("steps backward, "); + if (timeValidCnt > 0) { + if (step != 0) { + step = 0; + + static uint8_t currentMinutePosition = 0; + uint8_t minuteStepPosition = clock.minute * STEPS_PER_MINUTE; + if (currentMinutePosition != minuteStepPosition) { + printf("Minute: "); + if (currentMinutePosition > minuteStepPosition) { + printf("steps backward, "); + } + currentMinutePosition++; + printf("desired: %d, current: %d\n", minuteStepPosition, currentMinutePosition); } - currentMinutePosition++; - printf("desired: %d, current: %d\n", clock.minuteStepPosition, currentMinutePosition); - } - if (currentHourPosition != clock.hourStepPosition) { - printf("Hour: "); - if (currentHourPosition > clock.hourStepPosition) { - printf("steps backward, "); + + static uint8_t currentHourPosition = 0; + uint8_t hourStepPosition = clock.hour * STEPS_PER_HOUR; + if (currentHourPosition != hourStepPosition) { + printf("Hour: "); + if (currentHourPosition > hourStepPosition) { + printf("steps backward, "); + } + currentHourPosition++; + printf("desired: %d, current: %d\n", hourStepPosition, currentHourPosition); } - currentHourPosition++; - printf("desired: %d, current: %d\n", clock.hourStepPosition, currentHourPosition); } }