zeroing
This commit is contained in:
parent
16f109fb80
commit
cea727198a
114
src/stepper.c
114
src/stepper.c
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
|
#include "validLed.h"
|
||||||
|
|
||||||
#define STEPPER_REG_1_DIR DDRC
|
#define STEPPER_REG_1_DIR DDRC
|
||||||
#define STEPPER_REG_1 PORTC
|
#define STEPPER_REG_1 PORTC
|
||||||
@ -50,19 +51,19 @@ static inline void minuteMotorDisable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline void hourMotorForward() {
|
static inline void hourMotorBackward() {
|
||||||
STEPPER_REG_1 &= ~(1 << HOUR_MOTOR_DIRECTION);
|
STEPPER_REG_1 &= ~(1 << HOUR_MOTOR_DIRECTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void hourMotorBackward() {
|
static inline void hourMotorForward() {
|
||||||
STEPPER_REG_1 |= (1 << HOUR_MOTOR_DIRECTION);
|
STEPPER_REG_1 |= (1 << HOUR_MOTOR_DIRECTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void minuteMotorBackward() {
|
static inline void minuteMotorForward() {
|
||||||
STEPPER_REG_1 &= ~(1 << MINUTE_MOTOR_DIRECTION);
|
STEPPER_REG_1 &= ~(1 << MINUTE_MOTOR_DIRECTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void minuteMotorForward() {
|
static inline void minuteMotorBackward() {
|
||||||
STEPPER_REG_1 |= (1 << MINUTE_MOTOR_DIRECTION);
|
STEPPER_REG_1 |= (1 << MINUTE_MOTOR_DIRECTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,12 +114,6 @@ void stepperInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//static uint8_t oldPositionSwitch = 255;
|
|
||||||
//uint8_t positionSwitch = PINB & ((1 << PB1) | (1 << PB2));
|
|
||||||
//if (oldPositionSwitch != positionSwitch) {
|
|
||||||
// oldPositionSwitch = positionSwitch;
|
|
||||||
// printf("POS: %02d\n", positionSwitch);
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
void stepperEnable() {
|
void stepperEnable() {
|
||||||
@ -127,22 +122,111 @@ void stepperEnable() {
|
|||||||
}
|
}
|
||||||
void stepperEngine() {
|
void stepperEngine() {
|
||||||
|
|
||||||
static uint8_t stepperState = 0;
|
static uint8_t stepperState = 100;
|
||||||
|
|
||||||
static uint8_t currentMinutePosition = 0;
|
static uint16_t currentMinutePosition = 0;
|
||||||
static uint8_t minuteStepPosition = 0;
|
static uint16_t minuteStepPosition = 0;
|
||||||
static int8_t minuteDirection = 0;
|
static int8_t minuteDirection = 0;
|
||||||
|
|
||||||
static uint8_t currentHourPosition = 0;
|
static uint16_t currentHourPosition = 0;
|
||||||
static uint8_t hourStepPosition = 0;
|
static uint16_t hourStepPosition = 0;
|
||||||
static int8_t hourDirection = 0;
|
static int8_t hourDirection = 0;
|
||||||
|
|
||||||
|
|
||||||
if (clockNextStep()) {
|
if (clockNextStep()) {
|
||||||
|
|
||||||
|
static uint8_t oldPositionSwitch = 255;
|
||||||
|
uint8_t positionSwitch = PINB & ((1 << PB1) | (1 << PB2));
|
||||||
|
uint8_t minutePositionSwitch = (positionSwitch & (1 << PB2)) != 0;
|
||||||
|
uint8_t hourPositionSwitch = (positionSwitch & (1 << PB1)) != 0;
|
||||||
|
if (oldPositionSwitch != positionSwitch) {
|
||||||
|
oldPositionSwitch = positionSwitch;
|
||||||
|
printf("POS: %02d\n", positionSwitch);
|
||||||
|
printf("MinuteSwitch: %d\n", minutePositionSwitch);
|
||||||
|
printf("HourSwitch: %d\n", hourPositionSwitch);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
clock_t clock = clockGetClock();
|
clock_t clock = clockGetClock();
|
||||||
|
|
||||||
switch (stepperState) {
|
switch (stepperState) {
|
||||||
|
case 100:
|
||||||
|
printf("100 Minute zeroing ");
|
||||||
|
minuteMotorEnable();
|
||||||
|
minuteMotorBackward();
|
||||||
|
currentMinutePosition = 0;
|
||||||
|
stepperState = 101;
|
||||||
|
break;
|
||||||
|
case 101:
|
||||||
|
printf("101 ");
|
||||||
|
currentMinutePosition++;
|
||||||
|
printf("%d\n", currentMinutePosition);
|
||||||
|
minuteMotorPulse();
|
||||||
|
if (minutePositionSwitch == 0) {
|
||||||
|
stepperState = 102;
|
||||||
|
}
|
||||||
|
if (currentMinutePosition > 500) {
|
||||||
|
stepperState = 200;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 102:
|
||||||
|
printf("102 Minute zeroed\n");
|
||||||
|
currentMinutePosition = 0;
|
||||||
|
minuteMotorDisable();
|
||||||
|
stepperState = 103;
|
||||||
|
break;
|
||||||
|
case 103:
|
||||||
|
printf("103 Hour zeroing ");
|
||||||
|
hourMotorEnable();
|
||||||
|
hourMotorBackward();
|
||||||
|
currentHourPosition = 0;
|
||||||
|
stepperState = 104;
|
||||||
|
break;
|
||||||
|
case 104:
|
||||||
|
printf("104 ");
|
||||||
|
currentHourPosition++;
|
||||||
|
printf("%d\n", currentHourPosition);
|
||||||
|
hourMotorPulse();
|
||||||
|
if (hourPositionSwitch == 0) {
|
||||||
|
stepperState = 105;
|
||||||
|
}
|
||||||
|
if (currentHourPosition > 500) {
|
||||||
|
stepperState = 201;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 105:
|
||||||
|
printf("105 Hour zeroed\n");
|
||||||
|
currentHourPosition = 0;
|
||||||
|
hourMotorDisable();
|
||||||
|
stepperState = 0;
|
||||||
|
break;
|
||||||
|
case 200:
|
||||||
|
printf("200 Minute zeroing error\n");
|
||||||
|
{
|
||||||
|
static uint8_t ledToggle = 0;
|
||||||
|
if (ledToggle != 0) {
|
||||||
|
ledToggle = 0;
|
||||||
|
validLedDisable();
|
||||||
|
} else {
|
||||||
|
ledToggle = 1;
|
||||||
|
validLedEnable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 201:
|
||||||
|
printf("201 Hour zeroing error\n");
|
||||||
|
{
|
||||||
|
static uint8_t ledToggle = 0;
|
||||||
|
if (ledToggle != 0) {
|
||||||
|
ledToggle = 0;
|
||||||
|
validLedDisable();
|
||||||
|
} else {
|
||||||
|
ledToggle = 1;
|
||||||
|
validLedEnable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
//printf("0 ");
|
//printf("0 ");
|
||||||
if (stepperEnableFlag == 1) {
|
if (stepperEnableFlag == 1) {
|
||||||
|
@ -39,11 +39,11 @@ uint8_t isNotDark() {
|
|||||||
return DARK_SWITCH_IN_REG & (1 << DARK_SWITCH);
|
return DARK_SWITCH_IN_REG & (1 << DARK_SWITCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void validLedEnable() {
|
void validLedEnable() {
|
||||||
VALID_LED_REG |= (1 << VALID_LED);
|
VALID_LED_REG |= (1 << VALID_LED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void validLedDisable() {
|
void validLedDisable() {
|
||||||
VALID_LED_REG &= ~(1 << VALID_LED);
|
VALID_LED_REG &= ~(1 << VALID_LED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,5 +7,7 @@ void validLedInit();
|
|||||||
void validLedEngine();
|
void validLedEngine();
|
||||||
void validLedSetStatus(uint8_t x);
|
void validLedSetStatus(uint8_t x);
|
||||||
|
|
||||||
|
void validLedEnable();
|
||||||
|
void validLedDisable();
|
||||||
|
|
||||||
#endif /* VALIDLED_H_ */
|
#endif /* VALIDLED_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user