Started following some tutorial on att85 usi. Downloaded example code from make avr book.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user