make it work

This commit is contained in:
wolfgang
2013-01-28 19:06:45 +01:00
parent 10f22c0784
commit 99a61b356a

View File

@ -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;
}