roboforum.ru

Технический форум по робототехнике.


ATMega169 - проблема с прерываниями от таймера

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

ATMega169 - проблема с прерываниями от таймера

Сообщение Roman_tmb » 29 апр 2009, 15:05

Приветствую всех!
Начал изучать программирование МК, написал простенькую программку мигания светодиода с помощью задержек - работает...
Решил усложнить - сделать тоже самое, но с помощью прерываний от таймера. И стою на одном месте уже 2 недели...
Пример реализации взял из книги "CodeVision AVR Пособие для начинающих". Светодиод должен мигать 1 раз в секунду. В итоге получилось: первое и второе прерывания после включения приходят с интервалом чуть больше минуты, остальные - как и должны быть (через 0.5 сек).
Так и не могу понять, почему первые 2 прерывания приходят с такими задержками...
Попробовал такую же прогу сделать для mega8 - работает без проблем (эмулировал в Proteus).

Помогите - где, что я не так настроил у 169-ой.
Прикладываю архив со схемой для Proteus и исходниками CVAVR для mega169 и mega8
Вложения
Led_Proteus.rar
Схема в Proteus и исходники CVAVR
(75.31 КиБ) Скачиваний: 27
Roman_tmb
 
Сообщения: 5
Зарегистрирован: 29 апр 2009, 10:04
Откуда: Tambov
прог. языки: Object Pascal; M

Re: ATMega169 - проблема с прерываниями от таймера

Сообщение avr123.nm.ru » 29 апр 2009, 17:09

Roman_tmb писал(а):Пример реализации взял из книги "CodeVision AVR Пособие для начинающих". стою на одном месте уже 2 недели...
Ого ! Интересное пособие.

Roman_tmb писал(а): эмулировал в Proteus.
Какой PROTEUS у вас ? Советую скачать PROTEUS 7.5 SP3 PRO - работает хорошо, все нужное в одном архиве. http://proteus123.narod.ru

В исходнике у вас 1 Мгц в ПРОТЕУСЕ 8 и формула в ините таймера - наверно лучше заранее ее посчитать.

А еще лучше настроить таймер и прерывание мастеровм кода - вот так - http://avr123.nm.ru/z6.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: ATMega169 - проблема с прерываниями от таймера

Сообщение Roman_tmb » 29 апр 2009, 17:38

avr123.nm.ru писал(а):Какой PROTEUS у вас ? Советую скачать PROTEUS 7.5 SP3 PRO - работает хорошо, все нужное в одном архиве. http://proteus123.narod.ru


Версия Proteus такая же.

avr123.nm.ru писал(а):В исходнике у вас 1 Мгц в ПРОТЕУСЕ 8 и формула в ините таймера - наверно лучше заранее ее посчитать.


В фузах установлен бит деления на 8 частоты, поэтому получается 1 МГц, но это проблемы не решает, даже если в протеусе указать 1МГц

avr123.nm.ru писал(а):А еще лучше настроить таймер и прерывание мастеровм кода - вот так - http://avr123.nm.ru/z6.htm


Оба исходника созданы мастером кода CVAVR (и для mega169 и mega8).

Кстати, если в исходниках и протеусе исправить для частоты генератора 8 МГц, то задержка этих 2-х прерываний уменьшается до 12-13 сек (примерно в 8 раз).
Roman_tmb
 
Сообщения: 5
Зарегистрирован: 29 апр 2009, 10:04
Откуда: Tambov
прог. языки: Object Pascal; M

Re: ATMega169 - проблема с прерываниями от таймера

Сообщение avr123.nm.ru » 29 апр 2009, 17:46

В Студии первое прерывание на 62.47 мС

далее через 62464 мкС примерно повторяются. или 499712 и 499713 тактов кварца.

Добавлено спустя 4 минуты 3 секунды:
Roman_tmb писал(а):Оба исходника созданы мастером кода CVAVR (и для mega169 и mega8).

Ни разу не видел чтоб мастер CVAVR вот так лихо выписывал:
Код: Выделить всёРазвернуть
TCNT1=0x10000-(xtal/fdiv/frq); 
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: ATMega169 - проблема с прерываниями от таймера

Сообщение Roman_tmb » 30 апр 2009, 11:14

avr123.nm.ru писал(а):Ни разу не видел чтоб мастер CVAVR вот так лихо выписывал:
Код: Выделить всёРазвернуть
TCNT1=0x10000-(xtal/fdiv/frq); 


Считал, что такая конструкция прокатит.

Разобрался, в чем была моя ошибка. Спасибо за указание пути истинного
Roman_tmb
 
Сообщения: 5
Зарегистрирован: 29 апр 2009, 10:04
Откуда: Tambov
прог. языки: Object Pascal; M


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8