Defines | Functions | Variables

timer.c File Reference

Timer management - step pulse clock and system clock. More...

#include "timer.h"
#include <avr/interrupt.h>
#include "arduino.h"
#include "config.h"

Defines

#define TICK_TIME   2 MS
 how often we overflow and update our clock; with F_CPU=16MHz, max is < 4.096ms (TICK_TIME = 65535)
#define TICK_TIME_MS   (TICK_TIME / (F_CPU / 1000))
 convert back to ms from cpu ticks so our system clock runs properly if you change TICK_TIME

Functions

 ISR (TIMER1_COMPB_vect)
 comparator B is the system clock, happens every TICK_TIME
void timer_init ()
 initialise timer and enable system clock interrupt.

Variables

volatile uint32_t next_step_time
 time until next step, as output compare register is too small for long step times
uint8_t clock_counter_10ms = 0
 every time our clock fires, we increment this so we know when 10ms has elapsed
uint8_t clock_counter_250ms = 0
 keep track of when 250ms has elapsed
uint8_t clock_counter_1s = 0
 keep track of when 1s has elapsed
volatile uint8_t clock_flag = 0
 flags to tell main loop when above have elapsed

Detailed Description

Timer management - step pulse clock and system clock.

Teacup uses timer1 to generate both step pulse clock and system clock.

We achieve this by using the output compare registers to generate the two clocks while the timer free-runs.

Teacup has tried numerous timer management methods, and this is the best so far.


Function Documentation

void timer_init ( void   )

initialise timer and enable system clock interrupt.

step interrupt is enabled later when we start using it

Referenced by init().

 All Data Structures Files Functions Variables Defines