реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> взаимосвязь между режимом работы ног OC1A/OC1B и нулевого таймера, ATmega32
Vlad Adamenko
сообщение Jul 26 2009, 17:36
Сообщение #1





Группа: Новичок
Сообщений: 14
Регистрация: 19-02-08
Пользователь №: 35 196



Господа, помогите разобраться с багом.
Существует ли взаимосвязь между режимом работы ног OC1A/OC1B и нулевого таймера

Ситуация:
ATmega32 Системные часы 4МГц.
Нулевой таймер:
TCCR0=0x79;
TCNT0=0x00;
OCR0=0x5F;

Т.е. fast PWM, единицу на выход когда compare match. считаем на частоте ядра.

На переполнение висит обработчик прерывания, которых раз в 32, в 64, в 128 и в 256 раза поднимает соответствующие флажки.
Для дела интересен только последний, на остальных пока ничего не висит.
Итак, у нас есть флажок, который по таймеру 0 при помощи прерывания TIMER0_OVF_vect взводится около 60 раз в секунду.
На нём висит перерисовка интерфейса и почти вся логика.

Таймер 1:
TCCR1A=0xA2;
TCCR1B=0x1B;

ICR1H=0xF4;
ICR1L=0x24;

Т.е.:
CS1 = 011 ( clk/64 ) 62,5 kHz
WGM1 = 1110 (режим №14, Fast PWM переполнение в ICR1)
COM1A = 10, COM1B = 10 ( Т.е. на соответствующей ноге после переполнения единица, по достижению OCR1A/B - ноль )

В ICR1 пишем 62500, чтоб таймер1 переполнялся раз в секунду. По переполнению инкрементим системные часы и прочее.

Собственно всё работает, но не стабилно, Пока не таймер 1 не достигает OCR1A/B всё весело обновляется и отрисовуется, по достижению OCR1 система замирает.
Выглядит это глупо, пока светодиодик горит, экран обновляется, гаснет, экран не рисуется. Дело не в подключении экрана, система перестаёт реагировать на изменения напряжений на ADC которые отвабатываются в том же месте где и отрасовка.

Грубо говоря выглядит это так, как будто После Compare Match в первом таймере перестаёт вызываться TIMER0_OVF_vect, а после TIMER1_OVF всё возобновляется.

Веселее всего то, что я этого не замечал, до тех пор, пока не переставил режим ножки OC1B в Normal port operation и увидел что интерфейс не обновляется вообще.

Внимание, вопрос: Какого лешего.


В догонку.
TIMSK=0x05
Go to the top of the page
 
+Quote Post
IGK
сообщение Jul 26 2009, 19:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 7-01-07
Из: Севастополь
Пользователь №: 24 170



Цитата(Vlad Adamenko @ Jul 26 2009, 20:36) *
В догонку.
TIMSK=0x05


Так, после первого прочтения. А почему прерывание TOIE1? должно быть TICIE1, раз уж пользуете ICR. Т.е. TIMSK=0x21.

Попробуйте, я в таком же режиме 1-й таймер гоняю.
В даташите рис.45 на 98 странице и текст соответственно.

Кстати, плохо писать 0х21 - глазам не зацепиться за ошибку. Лучше (1<<TICIE1)|(1<TOIE0). Здесь об этом писали. Давно, правда...
Go to the top of the page
 
+Quote Post
Vlad Adamenko
сообщение Jul 26 2009, 21:24
Сообщение #3





Группа: Новичок
Сообщений: 14
Регистрация: 19-02-08
Пользователь №: 35 196



TICIE1 Input Capture Interrupt Enable: Это несколько не то. Мне нужно именно прерывание по переполнению, а это: TOIE1 - Overflow Interrupt Enable
Кстати, на 45-ой странице таблица векторов прерываний.
А метод обьявления флагов интересный. Надо попробовать взять на вооружение.

В любом случае, я уже разобрался.

Господа, всем спасибо. Полез проверять всё под ряд на предмет помех. Больно нестабилный баг получался.
Ноги INT0 и INT1 висели в воздухе, а прерывания разрешены. А поскольку макетная плата и всё на проводках, то на эти ноги попросту наводило. Они разведены в схеме, но на макете забил я на них забил, а код не поправил.

Вобшем, ложная тревога.
Go to the top of the page
 
+Quote Post
IGK
сообщение Jul 27 2009, 10:23
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 7-01-07
Из: Севастополь
Пользователь №: 24 170



Цитата(Vlad Adamenko @ Jul 27 2009, 00:24) *
Кстати, на 45-ой странице таблица векторов прерываний.


Страница 98, рисунок 45.

Цитата(Vlad Adamenko @ Jul 27 2009, 00:24) *
А метод обьявления флагов интересный. Надо попробовать взять на вооружение.


Вот видите, я понял, что режим СТС, пока складывал в уме эти 1-2-4-8.
А для него TOP=ICR1...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016