Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
01.02.2011, 23:22
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Не опрашивается вторая кнопка. Attiny2313/
Подскажите что я делаю не так ?
Цитата:
|
1. in r25, PIND
2. sbrc r25, 5
3. rcall end
4. in r25, PIND
5. sbrc r25, 4
6. rcall start
|
При нажатии PD5 переход на подпрограмму есть, а при нажати PD4 нет.
Если поменять местами строки 2 и 5, то переход будет уже на PD4 работать, а на PD5 нет. Как будто после третей строки программа не выполняется.
В АВРстудии всё корректно работает.
Последний раз редактировалось putmannn; 01.02.2011 в 23:29.
|
|
|
Сказали "Спасибо" putmannn
|
|
|
01.02.2011, 23:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
putmannn,
а что там в таинственной rcall end деется - ее личико покажете аль нам самим рисовать?
да и в симуляторе студии прогнать могёте - коль rcall end не ростом с амазонского удава
|
|
|
|
01.02.2011, 23:36
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
end: ldi red,0b00011111 ; гасим PB0
out PORTB, red
ret
start: ldi red,0b00011111 ; гасим PB0
out PORTB, red
ret
|
|
|
Сказали "Спасибо" putmannn
|
|
|
01.02.2011, 23:46
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
Сообщение от putmannn
|
Как будто после третей строки программа не выполняется.
В АВРстудии всё корректно работает.
|
В таких случаях надо показывать весь код.
Мне кажется, что у вас просто не инициализирован стек
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
01.02.2011, 23:54
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
Цитата:
|
.INCLUDE "tn2313def.inc"
.def temp = r16
.
.CSEG
.ORG 0x0000
; -----------------
; Interrupt vectors
; -----------------
rjmp Init ; Reset Handler
Init: ldi Temp,RamEnd
out SPL,Temp
ldi temp,0b00011111
out DDRB, temp
ldi temp, 0b00000000
out PORTB, temp
ldi temp, 0b00000000
out DDRD, temp
ldi temp, 0b00110000
out PORTD, temp
main: in temp, PIND
sbrc temp, 5
rcall end
in temp, PIND
sbrc temp, 4
rcall start
rjmp main
end: ldi temp,0b00001111
out PORTB, temp
ret
start: ldi temp,0b00011111
out PORTB, temp
ret
|
А здесь хотелось бы, что бы при нажатии на кн.5 загорался диод, а при нажати на 4 гас. Однако почему то когда ни одна кн. не нажата , диод горит в пол накала, и сигнал на нём то 1 то 0 и зациклено, но на кн. реагирует.
... Изменил условие, вместо SBRC поставил SBRS. Странно, но в АВРстудии это не работает, а в контроллере заработало.
Получается АВРстудия кривая ??? Может подскажете более корректный отладчик ?
Последний раз редактировалось putmannn; 02.02.2011 в 00:08.
|
|
|
Сказали "Спасибо" putmannn
|
|
|
02.02.2011, 00:07
|
|
Гражданин KAZUS.RU
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
Сообщение от putmannn
|
При нажатии PD5 переход на подпрограмму есть, а при нажати PD4 нет
|
Какой-то странный опрос кнопок. Проще так:
sbic pind,5
rcall end
sbic pind,4
rcall start
.......
И хорошобы поставить задержку мс50 - 100, перед каждым ret. И на каком выходе светодиод.
Последний раз редактировалось kittec; 02.02.2011 в 00:09.
|
|
|
|
02.02.2011, 01:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
Для кода в посте #5 прижмите PD5 и PD4 через резисторы к земле.
Лучше sbrc заменить на sbrs/ и, если пины больше никак не используются, заземлить это всё конденсаторами. Также желательно пины подтянуть к Vcc резисторами на 10 - 30к. Внутри кристалла стоят от 100к и выше.
Это не глюк отладчика - это глюк программиста.
Этим кодом
Код:
|
ldi temp, 0b00110000
out PORTD, temp |
Вы включаете PullUp
Далее командуете - пропустить команду, если на пине "0", но там же "1".
Вот отладчик (да и в железе тоже) честно выполняет обе подпрограммы.
Ну и, на всякий случай, стек желательно инициализировать.
Последний раз редактировалось omercury; 02.02.2011 в 01:03.
|
|
|
Сказали "Спасибо" omercury
|
|
|
02.02.2011, 02:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
omercury,
стек он инициализирует
Init: ldi Temp,RamEnd
out SPL,Temp
putmannn,
а в студии при симуляции надо флажок на конкретном пине за шаг до команды опроса установить/снять - наверняка сей момент упущен
|
|
|
|
02.02.2011, 02:40
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Не опрашивается вторая кнопка. Attiny2313/
Разобрался, спасибо =)
Ещё много будет вопросов. Надеюсь на вашу поддержку.
|
|
|
Сказали "Спасибо" putmannn
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:23.
|
|