вот такая программа в winavr
#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
//#include <util/delay.h>
char time1 = 0x09;
char time2 = 0x11;
ISR(INT0_vect) //Внешнее прерывание
{
OCR0 = time1; //запускаем таймер 0 в режим Fast PWM
TCNT0 = 0x00;
TIFR &= 0x03;
TIMSK = 0x03;
TCCR0 = 0x4A;
asm volatile ("nop");
TCCR0 |= 0x30;
}
ISR(TIMER0_OVF_vect)
{
TCCR0 = 0x00; //прерывание по переполнению таймер
}
ISR(TIMER0_COMP_vect)
{
TCNT0 = 0xFF-(time2-time1); //прерывание при сравнении таймера
}
int main(void)
{
PORTB &= ~_BV(PB0);
DDRB = 0x00;
PORTD |= _BV(PD2); //разрешаем внешнее прерывание INT0
MCUCR = 1<<1;
GIFR &= 0xE0;
GICR = 1<<6;
sei();
DDRB |= _BV(PB0);
while(1)
{
}
return 0;
}
Проблема в том, что прерывание при сравнении в fast PWM режиме Timer 0 не срабатывает при первом запуске таймера. А при последующих запусках срабатывает. С чем это связано? Симулирую в Proteus.
Atmega8515, режимы работы Timer 0
Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
- Реклама
Вернуться в «Микроконтроллеры и ПЛИС»
Перейти
- Наш сайт
- ↳ Сувенирная лавка Кота
- ↳ О нашем сайте...
- ↳ Опросы, конкурсы...
- ↳ Статьи
- Устройства
- ↳ Аналоговая техника
- ↳ Усилители низкой частоты
- ↳ Радиотехника: приемники, передатчики, антенны
- ↳ АвтоМотоВело
- ↳ Цифровая техника
- ↳ Микроконтроллеры и ПЛИС
- ↳ Интеграция с ПК
- ↳ Умные мысли
- Силовая электроника
- ↳ Сварочное оборудование
- ↳ Питание
- ↳ Управление двигателями
- ↳ Индукционные нагреватели
- ↳ Прочая силовая электроника
- Микроконтроллеры и ПЛИС
- ↳ AVR
- ↳ ARM
- ↳ PIC
- ↳ ПЛИС
- ↳ Периферия
- ↳ Разные вопросы по МК
- ↳ Arduino
- Обучалка
- ↳ Теория
- ↳ Практика
- Технология
- ↳ Изготовление PCB
- ↳ Корпуса
- ↳ Измерения
- Ремонт
- ↳ Не слышно, не видно
- ↳ Не стирает, не готовит
- ↳ Ничего не работает
- ↳ Дохлые потаскунчики
- Посиделки у Кота
- ↳ Травим анекдоты
- ↳ Котоссылки
- ↳ Ищу...
- ↳ МЯЯЯУ!
- ↳ Чистилище
- Базар
- ↳ Куплю
- ↳ Продам
- ↳ Отдам-Обменяю
- ↳ Есть работа
- ↳ Ищу работу
- ↳ Базарные разговорчики