ATmega 128 . Пытаюсь запустить таймер Т2...

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 2
Зарегистрирован: Вт мар 30, 2010 08:19:51

Сообщение home2010 »

Пытаюсь запустить таймер Т2...

ATmega 128,кварц 7.372Мhz,AVreal

D:\Timers\avreal32.exe +MEGA128 -p378 -ab -n -o1000Khz -%% -fCKSEL=E,BOOTRST=0,BLB0=3,BLB1=3,M103C=1,JTAGEN=1 -e -w -c D:\Timers\Timers.hex
PAUSE

void InitTimers (void)
{
//инициализация таймера т2
TIMSK = (1<<OCIE2); //разрешаем прерывание таймера т2 при событии совпадение
TCCR2 = ((0<<WGM21)|(0<<WGM20)|(1<<CS02)|(0<<CS01)|(1<<CS00)); //режим СТС, прескалер - 1024
TCNT2 = 0; //обнуляем счетный регистр
OCR2 = 0x07; //прерывания каждые ~ 1 мс
}

//-------------------------------------------------------------------------------------------
// Прерывание от T2 1 милисекунда
#pragma vector = TIMER2_COMP_vect
__interrupt void TIMER2_COMP_interrupt(void)
{
uint Ticks = 0;
uint del = 0;

// Обработка 1 мс интервалов
Ticks++;
if(Ticks & 0x0080) {on(LED1);} else {off(LED1);}

// Обработка 1 с интервалов
if(++ del >= 1000) {on(LED2);} else {off(LED2);}

}

Буду очень благодарен за помощь
Реклама
Родился
Сообщения: 2
Зарегистрирован: Вт мар 30, 2010 08:19:51

Сообщение home2010 »

Таймер зароботал :)
Нужно было ...
static uint Ticks = 0;
Для режима CTC по совпадению OCR2 надо ((1<<WGM21)|(0<<WGM20)

void InitTimers (void)
{
//инициализация таймера т2
TIMSK = (1<<OCIE2); //разрешаем прерывание таймера т2 при событии совпадение
TCCR2 = ((1<<WGM21)|(0<<WGM20)|(1<<CS02)|(0<<CS01)|(1<<CS0 0)); //режим СТС, прескалер - 1024
TCNT2 = 0; //обнуляем счетный регистр
OCR2 = 0x07; //прерывания каждые ~ 1 мс
}

//-------------------------------------------------------------------------------------------
// Прерывание от T2 1 милисекунда
#pragma vector = TIMER2_COMP_vect
__interrupt void TIMER2_COMP_interrupt(void)
{
static uint Ticks = 0;

Ticks++;
if(Ticks & 0x0080) {on(LED1);} else {off(LED1);}

}
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»