Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.04.2010, 17:50
|
|
Частый гость
Регистрация: 29.01.2010
Сообщений: 21
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Внешнее прерывание на tiny15
Проблема в следующем:
На тини15 к выводу Int0 подключаю кнопку без фиксатора, через которую подходит +5 вольт, регистр mcucr настроил по нарастающему фронту. Программ достаточно эелементарная, в демонстрационных целях - после настройки регистров разрешаю прерывания, устанавливаю одну ногу в 1, другую - в 0 (подсвечиваю зеленый светодиод), потом зацикливаю программу. Ждем прерывания, переходим на подпрограмму, первый порт устанавливаем в 0, второй - в 1 (подсвечиваем зеленый светодиод), устанавливаем небольшую задержку, переходим в начало программы. На практике же нормально горит зеленый, при нажатии, после задержки, загорается красный. Пробовалал задавать другие условия прерывания, цеплял на землю, всеравно корректно не работает.
Подскажите пожалуйста как быть.
|
|
|
|
17.04.2010, 12:01
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: внешнее прерывание на tiny15
Код давайте.
|
|
|
|
17.04.2010, 12:24
|
|
Вид на жительство
Регистрация: 12.04.2007
Сообщений: 348
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 32 сообщении(ях)
|
Re: внешнее прерывание на tiny15
Сообщение от livsha
|
...устанавливаю одну ногу в 1, другую - в 0 (подсвечиваю зеленый светодиод)...
|
Цитата:
|
Ждем прерывания...первый порт устанавливаем в 0, второй - в 1 (подсвечиваем зеленый светодиод)...
|
Цитата:
|
...нормально горит зеленый, при нажатии, после задержки, загорается красный.
|
Что-то совсем неразбериха в Ваших словах...
Код приведите.
__________________
Гидравлика + электроника = POWER
|
|
|
|
17.04.2010, 13:05
|
|
Прописка
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
|
Re: внешнее прерывание на tiny15
Наверное у Вас вход поставлен с подтяжкой (на нем уже высокий уровень), а кнопка просто висит и подключает к +5В вывод. Как следстие - аномальное, с Вашей точки зрения, поведение программы. Выкладывайте пару: схема+код
|
|
|
|
20.04.2010, 21:54
|
|
Частый гость
Регистрация: 29.01.2010
Сообщений: 21
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: внешнее прерывание на tiny15
Сообщение от Aleksashka1
|
Наверное у Вас вход поставлен с подтяжкой (на нем уже высокий уровень), а кнопка просто висит и подключает к +5В вывод.
|
отключил подтяжку, теперь к кнопке даже руку поднести не могу - наводки страшные
|
|
|
|
20.04.2010, 21:56
|
|
Временная регистрация
Регистрация: 13.10.2009
Сообщений: 81
Сказал спасибо: 2
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
|
Re: Внешнее прерывание на tiny15
Либо паяйте резистор килоом на 10 между контроллером и землёй, либо включите подтяжку обратно, а кнопку повесте не на +5 В, а на землю
|
|
|
|
20.04.2010, 22:10
|
|
Частый гость
Регистрация: 29.01.2010
Сообщений: 21
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Внешнее прерывание на tiny15
.include "tn15def.inc"
.CSEG
.org $000
rjmp main
.org $001
rjmp but
.org $009
main:
ldi r20, 0b010001
out ddrb, r20 ;порты
ldi r20, 0b01000000
out gimsk, r20 ;разрешение внешнего прерывания
ldi r20, 0b00000011
out mcucr, r20 ;по нарастающему фронту
sei
sbi portb, 4 ;светим красным
cbi portb, 0 ; не светим зеленым
krug:
rjmp krug ;ждем прерывания от кнопки НА ЗАМЫКАНИЕ
but: ;пп прерывания
cbi portb, 4
sbi portb, 0
ldi r21, 254
sch1:
dec r21 ;задержка
ldi r22, 254
sch2:
dec r22
cpi r22, 0
brne sch2
cpi r21,0
brne sch1
rjmp main ;в начало
|
|
|
|
21.04.2010, 00:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Внешнее прерывание на tiny15
Сообщение от livsha
|
Подскажите пожалуйста как быть.
|
Всегда подтяжка резистором входов кнопок к +5 это наиболее помехозащищёное подключение.
А кнопки через резистор в 10 раз меньший потму что часто мультиплексируется с сегментами АЛС либо данными ЖКИ.
Всегда опрос кнопок вешаю в прерывание таймера, периодом 1-20 милисек, счётчик соовпадения состояний клавишь на 50 милисек , если состояния повторяются значит таки нажали, сохранить состояние и выставить флаг нажатия и не обрабатывать пока флаг не погасят.
В другом месте ждём флага о нажатии, считываем и анализируем состояние кнопок и реагируем, затем гасим флаг... алгоритм работает во множестве устройств уже лет 10
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
21.04.2010, 01:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,021
Сказал спасибо: 10
Сказали Спасибо 70 раз(а) в 63 сообщении(ях)
|
Re: Внешнее прерывание на tiny15
livsha
про дребезг контактов забыли!
__________________
И на камнях растут деревья!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:09.
|
|