Не могу разобраться с прерываниями...
Суть проблемы проста, надо в WinAVR для atmega48 на СИ написать инициализацию таймера/счетчика срабатываюший и обнуляемый при превышении некого значения (например 300 тактов).
При этом должно произойти прерывание и запустится процедура обработки прерывания.
Если кто поможет буду очень рад...
Atmega48 Прерывания от таймера
- Реклама
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Atmega48 Прерывания от таймера
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(TIMER0_COMPA_vect){
PORTB ^= 1; // подрыгивание ногой порта Б по прерыванию
}
int main(void){
DDRB = 1;
TCCR0A = _BV(WGM01); // режим СТС
OCR0A = 300; // сброс через 300 тактов и прерывание
TCCR0B = _BV(SC02); // деление тактовой на 256
TIMSK0 = _BV(OCIE0A); // разрешаем прерывание по совпадению А
sei();
while(1);
}битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Atmega48 Прерывания от таймера
Сильно! Для 8 разрядного таймера...Мастер Ломастер писал(а): OCR0A = 300; // сброс через 300 тактов и прерывание
— Не говорите мне что делать и я не скажу куда Вам идти...
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Atmega48 Прерывания от таймера
ну поспешилmd5sum писал(а):Сильно! Для 8 разрядного таймера...Мастер Ломастер писал(а): OCR0A = 300; // сброс через 300 тактов и прерывание
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Atmega48 Прерывания от таймера
надо тока
TCCR0B = _BV(CS02);
TCCR0B = _BV(CS02);
- Реклама

