Вот код :
Код: Выделить всё
#define F_CPU 8000000 //8 мгц
#include <avr/io.h>
#include <avr/interrupt.h>
#define Timer2IntON TIMSK|= (1<<OCIE2|1<<TOIE2);//set bits
#define Timer2IntOFF TIMSK&= ~(1<<OCIE2|1<<TOIE2);//clear bits
unsigned char Coffs[3]={0,};
void Timer2Setup(void)
{
//запустит таймер2 на клоке1, по совпадению с 200 тогда период таймера будет равен 10^-5 = 25 микросекунд
Coffs[1] = 0;
Coffs[2] = 0;
OCR2 = 199; //нужно 200 тиков, счет с 0
TCCR2 = 0;
TCCR2 |= ( 0 << WGM20 | 0 << COM21 | 0 << COM20 | 1 << WGM21 | 0 << CS22 | 0 << CS21 | 1 << CS20);
/*
//FOC2 = 0
//WGM20 = 0 + WGM21 =1 |CTC mode
//COM21 = 0 \
//COM20 = 0 | port disconnected
//WGM21 = 1
//CS22 =0
//CS21 =0
//CS20=1 //CPU clock
*/
//теперь разрешим от него прерывания
Timer2IntON
}
ISR( TIMER2_OVF_vect )
{
Coffs[1]++;
//готово TODO: обработать эксепшен сюды я попасть не должен!
}
ISR( TIMER2_COMP_vect )
{
Coffs[2]++;
}
int main(void)
{
Timer2Setup(); //setup timer2 //считает отрезки по 25 микросекунд
sei();
char a = 0;
while (1)
{
if (a <250)
{
a++;
}
else {
a = 0;
}
}
}
что я сделал не так?