В хедере 
.equ	PORTF	= $62
светодиоды мигают. на выход работает нормально.
команда in с портом F работает, а вот out не работает.
но ситуация всеравно не меняется.
уже не знаю где копать. попробую все таки на другом камне сделать
			
		|  | roboforum.ruТехнический форум по робототехнике. |  | 


Банально, но может порт на выход не сконфигурирован?milkpower писал(а):команда in с портом F работает, а вот out не работает.





in R24, $00lds R24, $20joy_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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0