Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/37: Рейтинг темы: голосов - 37, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 21.03.2010
Сообщений: 50
1

инициализация таймера в atmega

18.10.2010, 16:54. Показов 7472. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Запускаю по внешнему прерыванию 16-ти битный таймер и жду либо переполнения таймера или нового внешнего прерывания. Создалось впечатление, что таймер запускается "не с нуля".
SFIOR = 1<<PSR10;

TIMSK = 1<<TOIE1;
Что забыл?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2010, 16:54
Ответы с готовыми решениями:

Нужна помощь в настройке таймера Atmega
В Atmego32 таймер2 насстроен на работу от внешнего часового кварца 32768Гц, Кдел.=1, прерывание по...

AtMEGA 16 - Запуск АЦП от таймера/счётчика1 по совпадению B
Необходимо запускать АЦП по совпадению В таймера 1, никак не получается сделать. Частота работы: ...

Задержка без таймера на выходе atmega 8535 на 0,5 сек
.include&quot;m8535def.inc&quot; .cseg .org 0 ldi r16, 0xFF out DDRC, r16 ldi r16, 0x01 rol r16 rjmp...

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной платы для меги 32 и...

Инициализация программируемого интервального таймера: прокомментировать код
:help: Помогите с комментариями к коду, не очень понял его. Кому не трудно к каждой сроке...

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;
При этом он запустится с предделителем 8. Если нужно не 8, то вместо 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;
}
для отладки выкидываю подсчитанное в som. в итоге я вижу для 11-ти импульсов сначало 1-ку, а затем 10 (0A). Но! для первой пачки я вижу 11 (0B)...
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2010, 14:54
Помогаю со студенческими работами здесь

Привязка таймера к попыткам ввода пароля и сообщение об оставшихся попыток и открытия формы с отчётом таймера
Мне надо привязать к отчёту таймера,чтобы когда таймер заканчивался можно было бы ввести пароль или...

Что такое инициализация сегментов или инициализация регистров?
Подскажите, что такое инициализация сегментов или инициализация регистров? Вот строчка программы из...

Помогите опознать диодный мост таймера духовки Hansa BOEM 624000, диодный мост таймера
Помогите опознать диодный мост таймера духовки Hansa BOEM 624000 мост смд маленький примерно...

Atmega 8A
Собственно есть микроконтроллер Atmega 8A. Нужно нажатием тактовой кнопочки включить устройство,...

Atmega 16
Ребят, только начинаю работать в ассемблере, очень тяжело дается(( время поджимает, поэтому...

Atmega 16 и C
Вопрос: есть ли транслятор с Си на асемблер для этого контроллера? Это может ускорить процесс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru