Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.06.2009, 10:33
|
|
Частый гость
Регистрация: 11.10.2008
Сообщений: 25
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Помогите с таймером
Помогите разобраться!!! Конкретно туплю!!! В протеусе формируется прерывание, но обработчик не выполняется. Компилятор GCC, Atmega 16.
Код:
|
#include ‹avr/io.h›
#include ‹avr/interrupt.h›
unsigned char i;
ISR(TIMER1_COMPA_vect)
{
i++;
}
void main(void)
{
DDRA=0xff;
DDRB=0xff;
DDRC=0xff;
TCNT1=0; // первый восьмибитный счетчик/таймер
TCCR1A=0b00000000;
TCCR1B=0b00001101; // делитель 1024
OCR1A=800;
TIMSK=0b00010000;
TIFR= 0b00010000;
WDTCR=0b00000000; // отключение сторожевого таймера
SREG=0b10000000;
while(1)
{
PORTA=TCNT1H;
PORTB=TCNT1L;
PORTC=i;
}
} |
|
|
|
|
25.06.2009, 11:17
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
volatile unsigned char i;
|
|
|
|
25.06.2009, 11:39
|
|
Частый гость
Регистрация: 11.10.2008
Сообщений: 25
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Огромное спасибо!!!) Протупил!)))
|
|
|
|
25.06.2009, 17:55
|
|
Прописка
Регистрация: 23.03.2008
Сообщений: 121
Сказал спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Немного не в тему - что дает указание volatile если можно? И что в данном случае она меняет в принципе?
|
|
|
|
25.06.2009, 17:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
|
|
|
|
02.07.2009, 22:07
|
|
Частый гость
Регистрация: 11.10.2008
Сообщений: 25
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Доброго времени суток Всем!!! Возник вопрос по Timer/Counter 1 в режиме Fast PWM в ATmega16. Настраиваю выводы OC1A и OC1B, настраиваю сам таймер проверяю в протеусе...молчит. Настроил для проверки нулевой таймер - работет. Проверить в железе пока не могу. Подскажите пожалуйста, где я напортачил. Заранее благодарен!)
Код:
|
#include ‹avr/io.h› // библиотека для МК
#include ‹avr/interrupt.h› // прерывания
#include ‹avr/delay.h› // прерывания
volatile unsigned char i0;
volatile unsigned char i1;
volatile unsigned char count;
// проверка прерываний по совпадениею для Таймера 1
ISR(TIMER1_COMPA_vect)
{
i0++;
}
ISR(TIMER1_COMPB_vect)
{
i1++;
}
// установка значения для OCR0
ISR(INT0_vect)
{
count++;
}
ISR(INT1_vect)
{
count--;
}
void main(void)
{
cli();
DDRA=0xff;
DDRB=0xff;
DDRC=0xff;
DDRD=0xff;
// PWM Phase Correct, делитель 1024, установка OC0 up-count
TCCR0=0b01110101;
OCR0=0; // начальная инициализация
// подкл. внешних прерываний
MCUCR=0b00001010;
GICR=0b11000000;
GIFR=0b11000000;
// Fast PWM(OCR1), делитель 1024, установка OC1A/OC1B up-count
TCCR1A=0b11110011;
TCCR1B=0b00011101;
OCR1A=11100;
OCR1B=11100;
TIMSK=0b00011000;
TIFR= 0b00011000;
WDTCR=0x00;
sei();
while(1)
{
PORTA=i0; // проверка обработчика прерывания COMPA
PORTC=i1; // проверка обработчика прерывания COMPB
OCR0=count*10; // обновление значения для OCR0
}
} |
|
|
|
|
03.07.2009, 12:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
фаст пвм в 1 таймере может использоваться в нескольких режимах.
Что конкретно нужно и почему именно первый таймер ?
лично я его берегу для точной отбивки временных интервалов...
ну, такое. Сколько разрядов оттуда Вам нужно снять ?
|
|
|
|
03.07.2009, 13:18
|
|
Частый гость
Регистрация: 11.10.2008
Сообщений: 25
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Да я вобщем-то всегда ШИМ на нулевом делал, а на первом отсчет временных интервалов. Тут для интереса решил сделать ШИМ на первом. Какой именно режим роли не играет, у меня почему-то не один из режимов в протеусе не работает ![Обижен](images/smilies/icon_beee.gif) Вот и захотелось разобраться!)
|
|
|
|
03.07.2009, 13:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Как бы мой пример, работающий в проте, с первым таймером - здесь
http://vrtp.ru/index.php?showtopic=11377&st=20
|
|
|
|
03.07.2009, 13:40
|
|
Частый гость
Регистрация: 11.10.2008
Сообщений: 25
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Спасибо Вам огромное!!!) Буду теперь колупать!!)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:04.
|
|