В хедере
.equ PORTF = $62
светодиоды мигают. на выход работает нормально.
команда in с портом F работает, а вот out не работает.
но ситуация всеравно не меняется.
уже не знаю где копать. попробую все таки на другом камне сделать
roboforum.ruТехнический форум по робототехнике. |
|
|
Банально, но может порт на выход не сконфигурирован?milkpower писал(а):команда in с портом F работает, а вот out не работает.
in R24, $00
lds R24, $20
joy_init:
ldi temp,(1<<4)|(1<<5)|(1<<7);SS-MOSI-SCK-out
out DDRB,temp
;SPI в режиме мастера, fclk=1мгц,скорость fclk/4, первый фронт низкий, передача от младшего бита
ldi temp,(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<DORD)
out SPCR,temp
ret
joy_com: ;joyin joyout
ldi temp,0
out portb,temp ;`SS низкий уровень
out SPDR,joyin ;запускаем передачу
joy_wait: ; ждем конца передачи
sbis SPSR,SPIF
rjmp joy_wait
in joyout,SPDR
ldi temp,(1<<4) ;`SS высокий уровень
out portB,temp
ret
ldi temp, 0b10001110; бит0 на вход
ldi temp1,$00
out DDRD,temp
out PORTD,temp1
ret
.......cut.....и далее
in temp,pinD
joycall:
rcall jinit
rcall joystart
ldi joyin,$01
rcall joy_com
rcall delay
ldi joyin,$42
rcall joy_com
mov r14,joyout
rcall delay
ldi joyin,$00
rcall joy_com
rcall delay
ldi joyin,$00
rcall joy_com
mov r13,joyout
rcall delay
ldi joyin,$00
rcall joy_com
mov r12,joyout
rcall delay
rcall joyend
ret
jinit:
ldi temp, 0b00001110
ldi temp1,$0f
out DDRD,temp
out PORTD,temp1
ret
joystart:
ldi temp,0b00001001
out portD,temp
ret
joyend:
ldi temp,$0f
out portD,temp
ret
joy_com: ;joyin joyout portB
;bit0 data out port in
;bit1 cmd in port out
;bit2 ATT select device 0=select port out
;bit3 CLK òàêòîâûå port out
;bit4 ACK ïîäòâåðæäåíèå port in
clr joyout
ldi count,8
joy_l:
clr temp1
;CMD
rol joyin ;сдвигаем старший бит в перенос
rol temp1 ;сдвигаем перенос в младший
rol temp1 ;во 2-й бит на контакт CMD
;Clk+ATT
ori temp1,0b00010000
andi temp1,0b00010010
out portD,temp1
nop
nop
nop
nop
nop
nop
nop
nop
ori temp1,0b00011000
andi temp1,0b00011010
out portD,temp1
nop
nop
in temp1,pinD
ror temp1
ror joyout
dec count
brne joy_l
ret
delay:
push temp
ldi temp,4
del_lp:
dec temp
brne del_lp
pop temp
ret
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17