сбой порта ввода вывода на attiny2313

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

Добрый день. Есть самодельная плата с тини2313, к порту D этой платы подключено 5 кнопок и один валкодер. На порту B на ножках со 2 по 6 висят светодиоды, также стоит кварц на 20 МГц. Проблема заключается в следующем: написана простейшая программа для мигания диодами по очереди через промежутки времени. В этой программе порт B разумеется настроен на выход, порт D на вход, но сигналы с него никак не обрабатываются. Светодиоды мигают как положено ровно до тех пор, пока не начинаем крутить валкодер, после этого порядок рушится полностью. Кнопки подтянуты к питанию, как и валкодер. В чём может быть проблема?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

krash_artem писал(а):В чём может быть проблема?
в программе
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Сообщение Mishany »

Не могу не согласиться
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Не обязательно. Еще может быть в плате.
...или в днк...
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

Вот код программы. Порт D просто переключается на чтение, больше про него ни слова.
Спойлер.org 0x0000
rjmp RESET ; Reset Handler
.org 0x0001 ;rjmp INT0 ; External Interrupt0 Handler
reti
.org 0x0002
reti ;rjmp INT1 ; External Interrupt1 Handler
.org 0x0003 ;rjmp TIM1_CAPT ; Timer1 Capture Handler
reti
.org 0x0004
reti ;rjmp TIM1_COMPA ; Timer1 CompareA Handler
.org 0x0005
reti ;rjmp TIM1_OVF ; Timer1 Overflow Handler
.org 0x0006
reti ;rjmp TIM0_OVF ; Timer0 Overflow Handler
.org 0x0007
reti ;rjmp USART0_RXC ; USART0 RX Complete Handler
.org 0x0008
reti ;rjmp USART0_DRE ; USART0,UDR Empty Handler
.org 0x0009
reti ;rjmp USART0_TXC ; USART0 TX Complete Handler
.org 0x000A
reti ;rjmp ANA_COMP ; Analog Comparator Handler
.org 0x000B
reti ;rjmp PCINT ; Pin Change Interrupt
.org 0x000C
reti ;rjmp TIMER1_COMPB ; Timer1 Compare B Handler
.org 0x000D
reti ;rjmp TIMER0_COMPA ; Timer0 Compare A Handler
.org 0x000E
reti ;rjmp TIMER0_COMPB ; Timer0 Compare B Handler
.org 0x000F
reti ;rjmp USI_START ; USI Start Handler
.org 0x0010
reti ;rjmp USI_OVERFLOW ; USI Overflow Handler
.org 0x0011
reti;rjmp EE_READY ; EEPROM Ready Handler
.org 0x0012
reti ;rjmp WDT_OVERFLOW ; Watchdog Overflow Handler;

RESET:
ldi r16, low(RAMEND); Main program start
out SPL,r16 ;Set Stack Pointer to top of RAM

ldi r16,0b01111100
out ddrB,r16 ; настройка ножек порта В на выход

ldi r16,0b00000000
out ddrD,r16 ; настройка ножек порта D на вход

sei ; Enable interrupts

main:
ldi r16, 62
ldi r17, 187
ldi r18, 66
rcall Delay2 ;задержка 0,5с
sbi portB,3 ; зажечь диод 2
ldi r16, 62
ldi r17, 187
ldi r18, 66
rcall Delay2
cbi portB,3 ; погасить диод 2
sbi portB,5 ; зажечь диод 4
ldi r16, 62
ldi r17, 187
ldi r18, 66
rcall Delay2 ;задержка 0,5с
cbi portB,5 ; погасить диод 4
rjmp main

Delay2: ; цикл задержки
mov r19, r16
mov r20, r17
da1_2:
inc r18
breq dexit_2
mov r17, r20
da2_2:
inc r17
breq da1_2
mov r16, r19
da3_2:
inc r16
breq da2_2
rjmp da3_2
dexit_2: ret
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

А верно ли подключен валкодер? Не коротит ли он питание?
Docendo discimus
Контактная информация:
Реклама
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

pyzhman писал(а):А верно ли подключен валкодер? Не коротит ли он питание?
Сигнальные ножки подтянуты к питанию резисторами 10кОм. И ещё поставлены конденсаторы 10нФ между резисторами и землёй.
akl
Друг Кота
Сообщения: 4463
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Криминала в программе нет. Значит проблемы с подключением. Чудес не бывает.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
Docendo discimus
Контактная информация:
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
А на что надо обратить внимание? Потому если валкодер не крутить, то диодики мигают как им и положено. Причём заметил, что если поставить мигать два диода, валкодер будет мешать только им. А если заставить мигать все 5, то он сбивает порядок для них всех. Думал из-за ресета, но он вроде подтянут через резистор к питанию.
Модератор
Аватара пользователя
Сообщения: 19077
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

krash_artem писал(а):Вот код программы.
в тексте нет валкодера. поэтому не известно, как валкодер может мешать...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

Starichok51 писал(а):
krash_artem писал(а):Вот код программы.
в тексте нет валкодера. поэтому не известно, как валкодер может мешать...
В том то и проблема. В программе он не настроен и никак не обрабатывает, но каким-то образом на выходы порта B влиять умудряется.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
Попробовали? А обратить внимание на реакцию светодиодов. Предположение такое - валкодер распаян неверно и бякает питание. В итоге программа перезапускается.
Docendo discimus
Контактная информация:
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

pyzhman писал(а):
pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
Попробовали? А обратить внимание на реакцию светодиодов. Предположение такое - валкодер распаян неверно и бякает питание. В итоге программа перезапускается.
Пока не попробовал, в универе к плате и паяльнику попаду только во вторник. Выпаяли с него конденсаторы, теперь вроде если крутить потихоньку в одну сторону он не мешает.
Родился
Сообщения: 18
Зарегистрирован: Чт ноя 24, 2016 20:16:46

Сообщение krash_artem »

Убрал конденсаторы между сигнальной ножкой и землей, между ножкой земли и землей поставил резистор 3кОм. Теперь энкодер вроде не мешает работать.
Ответить

Вернуться в «AVR»