make it work
This commit is contained in:
69
src/main.c
69
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user