Таймеры Atmega8
Таймеры Atmega8
Доброго времени суток!
Подскажите пожалуйста, как инициализировать таймеры (реализация кода) T0, T1, T2 в OVF и COMP Atmega8.
Подскажите пожалуйста, как инициализировать таймеры (реализация кода) T0, T1, T2 в OVF и COMP Atmega8.
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Таймеры Atmega8
поди туда - не знаю куда
на чем программируете-то?
на чем программируете-то?
Re: Таймеры Atmega8
Пишу на Cи в оболочке CodeVisionAVR
Re: Таймеры Atmega8
Вы даташит читали?
В соответствующий регистр управления таймером (для T/C0 это TCCR0) записываете делитель частоты, в регистре TIMSK ставите в единицу бит TOIE0: Timer/Counter0 Overflow Interrupt Enable, если нужно прерывание по переполнению TCNT0. В SREG разрешаете прерывания.
Обработчик прерывания выглядит так
Аналогично для других таймеров, только ещё режимы работы задавать можно. Читайте DATASHEET.
В соответствующий регистр управления таймером (для T/C0 это TCCR0) записываете делитель частоты, в регистре TIMSK ставите в единицу бит TOIE0: Timer/Counter0 Overflow Interrupt Enable, если нужно прерывание по переполнению TCNT0. В SREG разрешаете прерывания.
Обработчик прерывания выглядит так
Код: Выделить всё
TCCR0|=(1<<CS02);//Fпредделителя/256
TIMSK0|=(1<<TOIE0); //tc0_ovf interrupt enable
SREG|=(1<<I);//глобальное разрешение прерывний
interrupt [TIM0_OVF] void TC0_ovf (void)
{
//put some code here
}
Re: Таймеры Atmega8
В чем различие Вашего кода и этого. Обясните пожалуйста.
interrupt [TIM0_OVF] void tmr0_ovf()
{
.......
}
TCCR0=0;
TCNT0=0xfd;
TIMSK=1;
interrupt [TIM0_OVF] void tmr0_ovf()
{
.......
}
TCCR0=0;
TCNT0=0xfd;
TIMSK=1;
- Реклама
Re: Таймеры Atmega8
Код: Выделить всё
void main()
{
TCCR0|=(1<<CS02);//Fпредделителя/256
TIMSK0|=(1<<TOIE0); //tc0_ovf interrupt enable
SREG|=(1<<I);//глобальное разрешение прерывний
}
interrupt [TIM0_OVF] void TC0_ovf (void)
{
//put some code here
}
Инициализация происходит в основной программе, а обработчик прерывания- отдельная функция.
UPD
TIMSK, а не TIMSK0, это я с 640 мегой перепутал.
Re: Таймеры Atmega8
Ага теперь понял спасибо! Буду дерзать!!! 
Re: Таймеры Atmega8
только потом прерывания разрешите в тексте
Код: Выделить всё
#asm("sei")Люди могут жить без мозгов.
Re: Таймеры Atmega8
GRAF писал(а):Код: Выделить всё
SREG|=(1<<I);//глобальное разрешение прерывний [/quote] В CodeVisionAVR это #asm("sei") разрешить глобальные прерывания и #asm("cli") запретить
Люди могут жить без мозгов.
Re: Таймеры Atmega8
les1982, обе записи верны и делают одно и тоже.
Re: Таймеры Atmega8
Согласен.
Просто когда создаешь новый проект по автоматом ставит строку на асме
Просто когда создаешь новый проект по автоматом ставит строку на асме
Люди могут жить без мозгов.



