Технический форум по робототехнике.
milkpower » 30 окт 2009, 17:00
прикручиваю джойстик к меге128, к порту F
- Код: Выделить всё • Развернуть
joy_com: ;joyin joyout portF
;bit0 data джойстик out
;bit1 cmd джойстик in
;bit2 ATT select device 0=select port out
;bit3 CLK clock
;bit4 ACK подтверждение передачи
ldi temp,0b11101110
sts DDRF,temp
mov temp,joyin
ldi r17,8
clr joyout
t0: clr temp1
lsr temp ;сдвиг в перенос
rol temp1 ;перенос во 2-й бит
rol temp1
andi temp1,0b00000010
ori temp1, 0b00001000 ;set clc=1
sts portF,temp1
nop
nop
andi temp1,0b00000010 ;set clc=0
sts portF,temp1
nop
nop
ldi temp1,$03
sts portF,temp1
lds temp1,pinF
lsr temp1
rol joyout
dec r17
brne t0
t1: lds temp1,pinF
andi temp1,0b00010000
brne t1
ldi temp1,0b00000100
sts portF,temp1
ret
результат показывается на жк, но что-то не выходит аленький цветочек. может направильно читается порт?
galex1981 » 30 окт 2009, 17:36
Во-первых что за джойстик? Во вторых что такое аленький цветочек?
milkpower » 30 окт 2009, 18:04
джойстик плейстейшн2
по поводу второго - из подпрограммы возвращается мусор, либо нули.
Добавлено спустя 18 минут 57 секунд:кстати если кому надо, чтоб не потерялось
http://www.gamesx.com/controldata/psxcont/psxcont.htmописание протокола PlayStation-контроллера
EdGull » 30 окт 2009, 20:15
в фусибитах режим меги103 выключил?
milkpower » 30 окт 2009, 22:30
выключен, вроде, =) в AVR_USB_ASP нет галки.
но впечатление что из порта вообще тишина.
Добавлено спустя 2 минуты 59 секунд:
проверил с включением бита, нет изменений.
EdGull » 30 окт 2009, 22:49
схему в студию!
milkpower » 31 окт 2009, 00:55
вот как подключал
GND VCC подключены соответственно
геймпад включается, реагирует на сигнал ATT. если его вырубить, то не включается режим Analog.
но данные с пада не читаются.
девайс 100% рабочий, проверил у соседа

galex1981 » 31 окт 2009, 01:23
А не нужны ли в этой схеме подтягивающие резисторы на каких либо ножках?
milkpower » 31 окт 2009, 01:56
нашел несколько схем переходников PS2->USB и на аврках и на пиках, нигде нет подтягивающих.
на том же радиокоте есть переходник на авр-ке со схемой.
дело в том что в дебагере астудио от команды
lds Rx,pinF
в Rx ничего не приходит
но если переделать на портВ и
in Rx,pinB
в Rx все как надо.
но в наличии только portF
может в меге128 с портом F какие-то тонкости есть, которые в даташите не описаны?
Michael_K » 31 окт 2009, 02:11
Может быть попробовать JTAG фьюзами выключить?
milkpower » 31 окт 2009, 02:37
jtag был изначально выключен. да и включение ни к чему другому не приводит
вобщем завтра разведу макетку на мегу16, попробую на других портах. если там будет работать, то буду уже ковырять этот злополучный portF.
EdGull » 31 окт 2009, 08:50
у меги128 порт F будет работать если отключить в фусибитах JTAG и mode103
больше ничего делать не нужно.
попробуй просто помограть светодиодами на этом порту
SERGEY_M » 31 окт 2009, 10:43
насколько я помню, к портам F и G у Меги128 обращаться нужно не как к регистру, а как к ячейке памяти RAM
Добавлено спустя 7 минут 48 секунд:ой, пардон, не заметил "lds Rx,pinF"
ща умную книгу взял, так там у PINF два адреса, $00($20)
так что можно вроде использовать in Rx,pinF

EdGull » 31 окт 2009, 11:17
у нас в васике разницы нет, portF ничем от других не отличается
Michael_K » 31 окт 2009, 13:20
так что можно вроде использовать in Rx,pinF
Так вот в чем дело!
Посмотрите, как определен пинФ в хедере
и попробуйте изпользовать команду "ин"