Страница 1 из 1

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

Добавлено: Чт ноя 24, 2016 20:32:49
krash_artem
Добрый день. Есть самодельная плата с тини2313, к порту D этой платы подключено 5 кнопок и один валкодер. На порту B на ножках со 2 по 6 висят светодиоды, также стоит кварц на 20 МГц. Проблема заключается в следующем: написана простейшая программа для мигания диодами по очереди через промежутки времени. В этой программе порт B разумеется настроен на выход, порт D на вход, но сигналы с него никак не обрабатываются. Светодиоды мигают как положено ровно до тех пор, пока не начинаем крутить валкодер, после этого порядок рушится полностью. Кнопки подтянуты к питанию, как и валкодер. В чём может быть проблема?

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

Добавлено: Чт ноя 24, 2016 20:42:22
ARV
krash_artem писал(а):В чём может быть проблема?
в программе

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

Добавлено: Чт ноя 24, 2016 20:51:16
Mishany
Не могу не согласиться

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

Добавлено: Чт ноя 24, 2016 23:22:56
COKPOWEHEU
Не обязательно. Еще может быть в плате.
...или в днк...

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

Добавлено: Пт ноя 25, 2016 08:05:10
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

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

Добавлено: Пт ноя 25, 2016 08:38:27
pyzhman
А верно ли подключен валкодер? Не коротит ли он питание?

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

Добавлено: Пт ноя 25, 2016 08:48:08
krash_artem
pyzhman писал(а):А верно ли подключен валкодер? Не коротит ли он питание?
Сигнальные ножки подтянуты к питанию резисторами 10кОм. И ещё поставлены конденсаторы 10нФ между резисторами и землёй.

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

Добавлено: Пт ноя 25, 2016 10:28:54
akl
Криминала в программе нет. Значит проблемы с подключением. Чудес не бывает.

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

Добавлено: Пт ноя 25, 2016 10:32:18
pyzhman
Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.

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

Добавлено: Пт ноя 25, 2016 17:20:33
krash_artem
pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
А на что надо обратить внимание? Потому если валкодер не крутить, то диодики мигают как им и положено. Причём заметил, что если поставить мигать два диода, валкодер будет мешать только им. А если заставить мигать все 5, то он сбивает порядок для них всех. Думал из-за ресета, но он вроде подтянут через резистор к питанию.

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

Добавлено: Пт ноя 25, 2016 17:38:08
Starichok51
krash_artem писал(а):Вот код программы.
в тексте нет валкодера. поэтому не известно, как валкодер может мешать...

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

Добавлено: Пт ноя 25, 2016 18:25:21
krash_artem
Starichok51 писал(а):
krash_artem писал(а):Вот код программы.
в тексте нет валкодера. поэтому не известно, как валкодер может мешать...
В том то и проблема. В программе он не настроен и никак не обрабатывает, но каким-то образом на выходы порта B влиять умудряется.

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

Добавлено: Сб ноя 26, 2016 06:58:54
pyzhman
pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
Попробовали? А обратить внимание на реакцию светодиодов. Предположение такое - валкодер распаян неверно и бякает питание. В итоге программа перезапускается.

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

Добавлено: Сб ноя 26, 2016 17:23:43
krash_artem
pyzhman писал(а):
pyzhman писал(а):Отключить валкодер совсем и поподавать землю на эти лапки. Смотреть.
Попробовали? А обратить внимание на реакцию светодиодов. Предположение такое - валкодер распаян неверно и бякает питание. В итоге программа перезапускается.
Пока не попробовал, в универе к плате и паяльнику попаду только во вторник. Выпаяли с него конденсаторы, теперь вроде если крутить потихоньку в одну сторону он не мешает.

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

Добавлено: Ср ноя 30, 2016 09:17:54
krash_artem
Убрал конденсаторы между сигнальной ножкой и землей, между ножкой земли и землей поставил резистор 3кОм. Теперь энкодер вроде не мешает работать.