diff --git a/src/main.c b/src/main.c index 853b2f1..c964b98 100644 --- a/src/main.c +++ b/src/main.c @@ -64,6 +64,9 @@ volatile uint8_t valid = 0; volatile uint8_t tack = 0; volatile uint8_t step = 0; +extern uint8_t bufferReadIdx; +extern uint8_t bufferWriteIdx; + ISR(TIMER2_OVF_vect) { clock.second++; @@ -508,20 +511,22 @@ int main() { break; } - printf("% 4d:%02d:%02d %02d:%02d:%02d %02d.%02d.%02d %d %d %02d %d %d %d %d %d\n", + printf("% 4d:%02d:%02d %02d:%02d:%02d %02d.%02d.%02d %d %d %02d %d %d %d %d %d %d %d\n", opTime.hour, opTime.minute, opTime.second, clock.hour, clock.minute, clock.second, clock.day, clock.month, clock.year, clock.weekday, - valid, state, bit, pulse, gap, validCnt, timeValidCnt); + valid, state, bit, pulse, gap, validCnt, timeValidCnt, + bufferReadIdx, bufferWriteIdx); state++; } else { - printf("% 4d:%02d:%02d %02d:%02d:%02d %02d.%02d.%02d %d %d %02d %d %d %d %d %d\n", + printf("% 4d:%02d:%02d %02d:%02d:%02d %02d.%02d.%02d %d %d %02d %d %d %d %d %d %d %d\n", opTime.hour, opTime.minute, opTime.second, clock.hour, clock.minute, clock.second, clock.day, clock.month, clock.year, clock.weekday, - valid, state, bit, pulse, gap, validCnt, timeValidCnt); + valid, state, bit, pulse, gap, validCnt, timeValidCnt, + bufferReadIdx, bufferWriteIdx); } } @@ -539,44 +544,48 @@ int main() { static uint8_t stepperState = 0; static uint8_t currentMinutePosition = 0; - uint8_t minuteStepPosition = 0; - int8_t minuteDirection = 0; + static uint8_t minuteStepPosition = 0; + static int8_t minuteDirection = 0; static uint8_t currentHourPosition = 0; - uint8_t hourStepPosition = clock.hour * STEPS_PER_HOUR; - int8_t hourDirection = 0; + static uint8_t hourStepPosition = 0; + static int8_t hourDirection = 0; switch (stepperState) { case 0: + //printf("0 "); // is current minute position different from desired one? + minuteStepPosition = clock.minute * STEPS_PER_MINUTE; + if (currentMinutePosition != minuteStepPosition) { - printf("M: "); + printf("M:\n"); stepperState = 1; } break; case 1: + printf("1 "); // switch on the minute motor and set the direction PORTA |= (1 << PA1); - minuteStepPosition = clock.minute * STEPS_PER_MINUTE; - if (currentMinutePosition > minuteStepPosition) { - printf("b "); + printf("b\n"); minuteDirection = -1; - PORTC |= (1 << PC2); - } else { - printf("f "); - minuteDirection = 1; PORTC &= ~(1 << PC2); + } else { + printf("f\n"); + minuteDirection = 1; + PORTC |= (1 << PC2); } stepperState = 2; break; case 2: + printf("2 "); + // move one step - printf("d: %d, c: %d, ", minuteStepPosition, currentMinutePosition); + printf("d: %d, c: %d\n", minuteStepPosition, currentMinutePosition); currentMinutePosition += minuteDirection; @@ -589,15 +598,21 @@ int main() { } break; case 3: + printf("3\n"); + // switch off the minute motor PORTA &= ~(1 << PA1); stepperState = 4; break; case 4: + printf("4 "); + // is current hour position different from desired one? + hourStepPosition = clock.hour * STEPS_PER_HOUR; + if (currentHourPosition != hourStepPosition) { - printf(" H: "); + printf(" H:\n"); stepperState = 5; } else { @@ -607,17 +622,17 @@ int main() { } break; case 5: + printf("5 "); + // switch on the hour motor and set the direction PORTA |= (1 << PA0); - hourStepPosition = clock.hour * STEPS_PER_HOUR; - if (currentHourPosition > hourStepPosition) { - printf("b "); + printf("b\n"); hourDirection = -1; PORTC |= (1 << PC0); } else { - printf("f "); + printf("f\n"); hourDirection = 1; PORTC &= ~(1 << PC0); } @@ -625,9 +640,11 @@ int main() { stepperState = 6; break; case 6: + printf("6 "); + // move one step - printf("d: %d, c: %d, ", hourStepPosition, currentHourPosition); + printf("d: %d, c: %d\n", hourStepPosition, currentHourPosition); currentHourPosition += hourDirection; @@ -640,17 +657,21 @@ int main() { } break; case 7: + printf("7\n"); + // switch off the hour motor PORTA &= ~(1 << PA0); stepperState = 8; break; case 8: + printf("8\n"); + // done - printf("\n"); stepperState = 0; break; default: + printf("default\n"); stepperState = 0; break; }