|
|
  |
Разъясните, как организовать кнопку на прерывании, Mega8, CodeVision |
|
|
|
Jul 19 2009, 05:04
|
Группа: Новичок
Сообщений: 4
Регистрация: 19-07-09
Пользователь №: 51 371

|
камень - ATMega8, компилятор - CodeVision 1.24.8. девайс считает импульсы со входа INT0 и выводит на светодиодный семисегментный индикатор. для расчета кол-ва импульсов задействован таймер_2, для динамической индикации - таймер_0. дополнительно используется ШИМ (для регулировки цвета светодиодного индикатора) - юзается таймер_1. на вход INT1 подвешена кнопка. собственно при нажатии на нее должна вызываться процедура, в которой задаются различные коэффициенты пересчета, цвет индикатора и т.п. собственно проблема: при нажатии на эту кнопку возникает прерывание INT1, входим в процедуру настройки, но пропадает индикация (т.к. таймер_0 останавливается). я так понимаю, что после нажатия на кнопку (или после перехода в процедуру настройки) нужно запретить реагировать на возникновение этого прерывания? т.е. чтобы все остальные прерывания (кроме int1) вновь заработали... так? какие директивы прописать? ткните носом, если уже разжевывалось, найти не получилось...
|
|
|
|
|
Jul 19 2009, 09:37
|
Группа: Новичок
Сообщений: 4
Регистрация: 19-07-09
Пользователь №: 51 371

|
Цитата(INT1 @ Jul 19 2009, 11:50)  Установите MCUCR так, чтобы INT1 происходило по перепаду уже -) Цитата(mempfis_ @ Jul 19 2009, 13:32)  ...и запретите прерывание INT1. вот это как раз и не знаю, как сделать -(... пожалуй, сделаю как и советовали, счетчик в процедуре динамической индикации на появление нулика на выходе D3.
|
|
|
|
|
Jul 19 2009, 10:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Эх вы  как настроить прерывание разобрались а как разрешать/запрещать его нет. Код General Interrupt Control Register – GICR Bit 7 – INT1: External Interrupt Request 1 Enable Код GICR |= (1<<INT1); //разрешить прерывание INT1 GICR &= ~(1<<INT1); //запретить прерывание INT1 А вообще развивайте вариант со сканирование кнопки в обработчике прерывания динамической индикации. По ссылке я приводил свой вариант антидребезга которым пользуюсь во многих проектах. http://electronix.ru/forum/index.php?showtopic=65048
|
|
|
|
|
Jul 19 2009, 11:40
|
Группа: Новичок
Сообщений: 4
Регистрация: 19-07-09
Пользователь №: 51 371

|
спасибо, сейчас пытаюсь придумать систему меню, чтобы при помощи одной кнопки вводить 4 числовых параметра...
|
|
|
|
|
Jul 22 2009, 05:26
|
Группа: Новичок
Сообщений: 4
Регистрация: 19-07-09
Пользователь №: 51 371

|
собственно количество кнопок обусловлено габаритами прибора и отсутствием свободных ножек микроконтроллера. и настройка будет производиться только один раз при установке и наладке прибора (можно и вовсе обойтись без кнопки и ручного ввода параметров, задавая все через программатор, но хочется, чтобы конечный юзер смог это сделать сам).   p.s. кнопка пострадала из-за неаккуратного обращения -)
|
|
|
|
|
Aug 8 2009, 07:06
|
Группа: Новичок
Сообщений: 2
Регистрация: 14-10-08
Из: E-burg
Пользователь №: 40 930

|
С одной кнопкой можно использовать, например, двойные нажатия. Короткое одиночное, двойное, длинное одиночное - вот уже как-будто три кнопки.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|