0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
1 | |
инициализация таймера в atmega18.10.2010, 16:54. Показов 7472. Ответов 8
Метки нет (Все метки)
Запускаю по внешнему прерыванию 16-ти битный таймер и жду либо переполнения таймера или нового внешнего прерывания. Создалось впечатление, что таймер запускается "не с нуля".
0
|
18.10.2010, 16:54 | |
Ответы с готовыми решениями:
8
Нужна помощь в настройке таймера Atmega AtMEGA 16 - Запуск АЦП от таймера/счётчика1 по совпадению B Задержка без таймера на выходе atmega 8535 на 0,5 сек Макетная плата для Atmega 32?atmega 8 Инициализация программируемого интервального таймера: прокомментировать код |
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
|
|
18.10.2010, 17:06 | 2 |
Конечно не с нуля, а стого значения, которое в нем осталось с прошлого запуска. Первый запуск с нуля.
Его можно/нужно вручную обнулить: TCNT1 = 0; А ещё в прескаллере значение предыдущее сохраняется. Его тоже иногда обнулить не мешает...
0
|
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
18.10.2010, 17:16 | 3 |
Код
SFIOR = 1<<PSR10;
0
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
|
|
18.10.2010, 17:45 | 4 |
А значение в TCCR1B ты заранее загнал? :))
Просто оно и включает таймер. Т.е. включать теймер надо так: Код
SFIOR = 1<<PSR10; TIMSK = 1<<TOIE1; TCCR1B = 2; А у тебя получается, фактически, что таймер работает постоянно. А ты только сбрасываешь предделитель.
0
|
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
18.10.2010, 19:19 | 5 |
Я правильно понял, что надо перенастраивать предделитель каждый раз, когда мне нужно гарантированный запуск "с нуля"?
upd проблема осталась, но частично Код
ISR(INT0_vect) { count++; TCNT1 = 0; SFIOR = 1<<PSR10; TIMSK = 1<<TOIE1; TCCR1B = 1<<CS10|1<<CS11|0<<CS12; } ISR(TIMER1_OVF_vect) { TIMSK = 0<<TOIE1; ГUDR = count; count = 0; }
0
|
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
19.10.2010, 12:29 | 6 |
Проблема всё еще есть. Это не может быть связано с RTOS?
0
|
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
19.10.2010, 19:21 | 7 |
проблема в запрете прерывания таймера внутри отбработки прерывания таймера...
как остановить таймер?
0
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
|
|
19.10.2010, 19:26 | 8 |
Пиши в TCCR нолик, и он заткнётся.
0
|
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
|
|
30.10.2010, 14:54 | 9 |
Спасибо. Уже пришел к этому. а причиной ложного срабатывания было TIMSK = 0<<TOIE1; внутри обработки этого самого прерывания...
0
|
30.10.2010, 14:54 | |
30.10.2010, 14:54 | |
Помогаю со студенческими работами здесь
9
Привязка таймера к попыткам ввода пароля и сообщение об оставшихся попыток и открытия формы с отчётом таймера Что такое инициализация сегментов или инициализация регистров? Помогите опознать диодный мост таймера духовки Hansa BOEM 624000, диодный мост таймера Atmega 8A Atmega 16 Atmega 16 и C Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |