Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.07.2010, 20:23
|
|
Частый гость
Регистрация: 17.05.2010
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Помогите с прерыванием/таймером у AVR
суть проблемы, микроконтроллер ATmega128, прерывание INT7 используется для включения подсветки (т.е. к выводу INT7 подключена кнопка, а в прерывании решается в каком состоянии сейчас подсветка и происходит переключение на противоположное состояние). Есть также счеткик Timer1, который работает в режиме "Fast PWM, 8-bit". Если из кода исключить инициализацию режима рабты таймера или просто выключить его, то подсветка включается отлично, когда таймер включен (к выводу ШИМ даже можно ничего не подключать), то подсветка при нажатии кнопки ведет себя непредсказуемо, если кто-то сталкивался с таким подскажите решение.
|
|
|
|
25.07.2010, 21:23
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: помогите с прерыванием/таймером у авр
Сообщение от CR8
|
суть проблемы, микроконтроллер ATmega128, прерывание INT7 используется для включения подсветки (т.е. к выводу INT7 подключена кнопка, а в прерывании решается в каком состоянии сейчас подсветка и происходит переключение на противоположное состояние). Есть также счеткик Timer1, который работает в режиме "Fast PWM, 8-bit". Если из кода исключить инициализацию режима рабты таймера или просто выключить его, то подсветка включается отлично, когда таймер включен (к выводу ШИМ даже можно ничего не подключать), то подсветка при нажатии кнопки ведет себя непредсказуемо, если кто-то сталкивался с таким подскажите решение.
|
Ну, здесь бы неплохо посмотреть на программу. Кнопка - и прерывание - не есть хорошо, так как у любой кнопки есть дребезг, и при скорострельности МК на одно нажатие у вас может быть сотня прерываний.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
25.07.2010, 23:42
|
|
Частый гость
Регистрация: 17.05.2010
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
в том то и суть, что с отключенным таймером все работает четко. Если бы был виноват дребезг, то ему включение таймера было бы по боку. (против дребезга на кнопке висит конденсатор 0.1 мкФ и программная задержка после обработки в 200 мс)
|
|
|
|
26.07.2010, 00:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Выкладывание проекта в PROTEUS сильно ускоряет помощь !
Попробуйте ...
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
26.07.2010, 00:21
|
|
Частый гость
Регистрация: 17.05.2010
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Сообщение от avr123-nm-ru
|
Выкладывание проекта в PROTEUS сильно ускоряет помощь !
|
к сожалению проекта в протеусе у меня нет, частично проблема решена: сейчас прерывание срабатывает по низкому уровню, раньше стояло срабатывание по спадающему фронту. В даташите пишут, что прерыванию INT7 нужен для работы в режиме "по спадающему фронту" тактирующий генератор, для режима "по низкому уровню" генератор не нужен, почему-то я думал(да и сейчас думаю), что этот генератор подключается без моей помощи. В даташите я не нашел где и как установить этот генератор, просто упоминается, что он должен быть. Возможно кто-то знает где искать этот генератор?
|
|
|
|
26.07.2010, 00:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Попробуйте на русском описание мега128 почитать на 2 стр моего курса есть.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
26.07.2010, 00:48
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Сообщение от CR8
|
в том то и суть, что с отключенным таймером все работает четко. Если бы был виноват дребезг, то ему включение таймера было бы по боку. (против дребезга на кнопке висит конденсатор 0.1 мкФ и программная задержка после обработки в 200 мс)
|
Конденсатор на пине, который должен вызывать прерывание? IMHO, это не дело. Прграммная задержка - где? В прерывании, что ли? Совсем не дело.
Вам же говорят - покажите программу. Шаманы и ясновидящие в отпуске.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
26.07.2010, 14:24
|
|
Прописка
Регистрация: 17.11.2007
Сообщений: 112
Сказал спасибо: 19
Сказали Спасибо 14 раз(а) в 9 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Сообщение от CR8
|
В даташите пишут, что прерыванию INT7 нужен для работы в режиме "по спадающему фронту" тактирующий генератор, для режима "по низкому уровню" генератор не нужен, почему-то я думал(да и сейчас думаю), что этот генератор подключается без моей помощи. В даташите я не нашел где и как установить этот генератор, просто упоминается, что он должен быть. Возможно кто-то знает где искать этот генератор?
|
Искать его не надо - это тактовый генератор, т. е. для распознавания прерываний INT7...0 по фронтам, необходим тактовый сигнал, который выключается в некоторых спящих режимах и эти прерывания при этом не будут работать.
А ваша "катавасия" - в чем-то другом. Чтобы помочь - мало данных.
Последний раз редактировалось ValBag; 26.07.2010 в 14:42.
|
|
|
|
26.07.2010, 16:55
|
|
Временная регистрация
Регистрация: 25.07.2010
Сообщений: 94
Сказал спасибо: 12
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Помогите с прерыванием/таймером у AVR
Опрашивайте состояние входа в прерывании таймера (например 100 - 1000 Гц). Для подавления дребезга, выделите переменную-байт и инкриминируйте её, когда зафиксированно нажатие. При определении отсутствия нажатия, сбрасывайте переменную в ноль. Таким образом достаточно легко зафиксировать нажатие кнопки, просто проверяя переменную. Если она достигла некоторого значения, значит кнопка нажата и это не дребезг.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Помогите, пожалуйста, создать АОН на AVR
|
ArtUrl1986 |
Микроконтроллеры, АЦП, память и т.д |
23 |
30.04.2016 18:48 |
Помогите с avr
|
igonzo |
Микроконтроллеры, АЦП, память и т.д |
45 |
09.10.2010 23:35 |
Помогите с прошивкой в AVR studio
|
_grey_ |
Микроконтроллеры, АЦП, память и т.д |
5 |
26.03.2010 21:59 |
USB программатор AVR помогите!
|
sorokin.vasiliy |
Микроконтроллеры, АЦП, память и т.д |
13 |
06.03.2010 16:01 |
Помогите разобраться с кодом Micro C for AVR
|
deeman30rus |
Электроника - это просто |
7 |
09.02.2010 11:46 |
Часовой пояс GMT +4, время: 11:58.
|
|