* timer0.c
* We setup timer0 to generate an interrupt every 1ms
* We update a global clock tick variable – whose value
* can be retrieved using the get_clock_ticks() function.
Copyright By PowCoder代写 加微信 powcoder
#include
#include
#include “timer0.h”
/* Our internal clock tick count – incremented every
* millisecond. Will overflow every ~49 days. */
static volatile uint32_t clockTicks;
/* Set up timer 0 to generate an interrupt every 1ms.
* We will divide the clock by 64 and count up to 249.
* We will therefore get an interrupt every 64 x 250
* clock cycles, i.e. every 1 milliseconds with a 16MHz
* The counter will be reset to 0 when it reaches it’s
* output compare value.
void init_timer0(void) {
/* Reset clock tick count. L indicates a long (32 bit)
* constant.
clockTicks = 0L;
/* Clear the timer */
TCNT0 = 0;
/* Set the output compare value to be 249 */
OCR0A = 249;
/* Set the timer to clear on compare match (CTC mode)
* and to divide the clock by 64. This starts the timer
* running.
TCCR0A = (1<