38 lines
727 B
C
38 lines
727 B
C
/*
|
|
* Timer.c
|
|
*
|
|
* Created: 28/10/2021 17:51:29
|
|
* Author: n0x
|
|
*/
|
|
|
|
#include <avr/io.h>
|
|
#include <avr/interrupt.h>
|
|
|
|
volatile uint16_t cntr = 0;
|
|
|
|
void
|
|
Timer_init (void){
|
|
TCCR0A |= (1<<1); /* Set WGM01 to high to enable CTC mode */
|
|
TCCR0B |= (1<<1); /* Set the clock select bit to pre-scaler 2
|
|
1MHz / 8 (pre-scaler 2) ==> 125KHz */
|
|
|
|
TIMSK0 |= (1<<1); /* Set OCIE0A to high to rise an interrupt when the counter matches OCR0A */
|
|
|
|
OCR0A = 125; /* Set the Output Compare Register 0 A to 125 to trigger interrupt every 1ms
|
|
1MHz / 8 (pre-scaler 2) / 125 ==> 1KHz (1ms) */
|
|
}
|
|
|
|
|
|
uint16_t
|
|
Timer_getTick(void){
|
|
uint16_t tmp;
|
|
cli();
|
|
tmp = cntr;
|
|
sei();
|
|
return tmp;
|
|
}
|
|
|
|
|
|
ISR(TIMER0_COMPA_vect){
|
|
cntr++;
|
|
} |