Files

46 lines
1.3 KiB
C

#include "_servoClockFunctions.h"
// Realtime-clock handling functions
void initTimer0_Clock(void) {
/* Normal mode, just used for the overflow interrupt */
TCCR0B |= (1 << CS00); /* 8 MHz clock = ~31250 overflows per second */
TIMSK0 |= (1 << TOIE0); /* timer overflow interrupt enable */
}
void everySecond(void) {
seconds++;
if (seconds > 59) {
seconds = 0;
everyMinute();
}
LED_PORT ^= (1 << LED0); /* blink */
printTime(hours, minutes, seconds); /* serial output */
/* Turn off servo motor after three seconds into new minute */
if (seconds == 3) {
disableServo();
}
}
void everyMinute(void) {
minutes++;
if (minutes > 59) {
minutes = 0;
everyHour();
}
// If during business hours, set servo to new minute
// Otherwise, don't need to move motor when laser is off
if ((hours >= START_TIME) && (hours < STOP_TIME)) {
setServoPosition();
enableServo();
LASER_PORT |= (1 << LASER); /* make sure laser is on */
}
else { /* make sure laser is off */
LASER_PORT &= ~(1 << LASER);
}
}
void everyHour(void) {
hours++;
if (hours > 23) { /* loop around at end of day */
hours = 0;
}
}