[an error occurred while processing this directive]
никак не хочет запускаться usb в c161u, требуется помощь
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 333ий 11 ноября 2002 г. 23:38

попробовал сделать первые шаги инициализации порта в контроллере, согласно образцам с инфинеон. Назначаются нужные прерывания с приоритетами, конфигурится EPEC. выставляется бит на запись из памяти в FIFO. Дальше, я так понимаю, следует ждать какого-то прерывания. Но ни одно из прерываний не срабатывает, для того чтобы узнать это, в код прерываний вставлено отображение на жки соответствующей буквы.
Где намудрил? Может посадил какую-нибудь ошибку?

lcd section code


intrbank0 regbank r0-r15
intrbank1 regbank r0-r15
start_proc proc interrupt lcdst = 00 using intrbank0
mov intrbank0,r0 ; switch to other register bank
scxt cp,#intrbank0
nop
call main_proc
pop cp
reti
start_proc endp

utd0int_proc proc interrupt utd0int = 15h; using intrbank0
mov intrbank1,r0 ; switch to other register bank
scxt cp,#intrbank1
nop
nop

mov p3,#41h ; display "A" on LCD
pcall p3,ch_disp ;
pop cp
reti
utd0int_proc endp
usetint_proc proc interrupt usetint = 3ch using intrbank1
mov intrbank1,r0 ; switch to other register bank
scxt cp,#intrbank1
nop

mov p3,#42h ; display "B" on LCD
pcall p3,ch_disp ;
pop cp
reti
usetint_proc endp
ulcdint_proc proc interrupt ulcdint = 3bh using intrbank1
mov intrbank1,r0 ; switch to other register bank
scxt cp,#intrbank1
nop

mov p3,#43h ; display "C" on LCD
pcall p3,ch_disp ;
pop cp
reti
ulcdint_proc endp
ucfgvint_proc proc interrupt ucfgvint = 37h; using intrbank0
mov intrbank1,r0 ; switch to other register bank
scxt cp,#intrbank1
nop

mov p3,#44h ; display "D" on LCD
pcall p3,ch_disp ;

pop cp
reti
ucfgvint_proc endp


main_proc proc near
mp: label
diswdt ;disable wdt

;-------------- XBUS initialization -----------------------
bclr ien
extr #1
mov XPERCON,#0c0h
bset SYSCON.2
bclr SYSCON.1
mov r0,#0fh
mov SYSCON3,R0

mov r0,#0ee0h
mov r1,#48fh
mov r2,#0ed0h
mov r3,#48fh
extr #4
mov XADRS2,r0
mov XBCON2,r1
mov XADRS3,r2
mov XBCON3,r3
mov r0,#00h
mov 0ed00h,r0 ;EPECCLC
bset clken
einit_lab: einit
;----------end of XBUS initialization ---------------------
;-------- interrputs enable and setup priority -----------------------
bclr ien
mov r0,#01fh
mov URD0IC,r0 ;UDC RX DONE 0
mov r0,#01eh
mov UTD0IC,r0 ;UDC TX DONE 0
mov r0,#0ch
mov USETIC,r0
mov r0,#21h
mov ULCDIC,r0
mov r0,#026h
mov UCFGVIC,r0 ;UDC CONFIG VAL
mov r0,#25h
mov USOFIC,r0
mov r0,#22h
mov USSIC,r0
mov r0,#23h
mov USSOIC,r0

bset ien ; enable interrupts

;-------- end of interrputs enable and setup priority -----------------------
;------------------- USB Block reset ---------------------------------------------
mov r0,#1 ;
mov 0ee70h,r0 ;USB Block reset
mov r0,#100
label_1: label
sub r0,#1
jnb z,label_1
mov r0,#0 ;
mov 0ee70h,r0 ;
;------------------- end of USB Block reset --------------------------------------

;----- write configuration of Endpoint #0 to memory ------------------------------
assume dpp3:system
movb rl0,#00h
; movb rl1,#08h
movb rl2,#10h
exts #1,#4
movb 02000h,rl0
movb 02001h,rl0
movb 02002h,rl2
movb 02003h,rl0
exts #1,#1
movb 02004h,rl0

;------- send EP0 configuration --------------------------------
mov r0,0ee10h ; USBTXProtect enabled
or r0,#100h
mov 0ee10h,r0 ;USBD_CMD_REG

mov r0,#0ffh
mov 0ed6ch,r0 ; disable all EPEC interrupts

mov r0,0ee10h ; AutoFLUSH enabled
or r0,#8000h
mov 0ee10h,r0 ;USBD_CMD_REG

mov r0,0FF82h ; enable UTD0INT
or r0,#40h
mov 0FF82h,r0 ; UTD0INT

mov r0,0F17Ah ; enable URD0INT
or r0,#40h
mov 0F17Ah,r0 ; URD0INT

mov r0,0F176h ; enable UDC Load Config Done
or r0,#40h
mov 0F176h,r0 ; UDC Load Config Done

mov r0,0F178h ; enable UDC Setup
or r0,#40h
mov 0F178h,r0 ; UDC Setup

mov r0,0F16Eh ; enable UDC Config Val
or r0,#40h
mov 0F16Eh,r0 ; UDC Config Val

mov r0,#0ee2eh ; set destination /USBDTXWR0
mov 0ed34h,r0 ; /EPEC_DPTR_IN_R00
mov r0,#0h ;
mov 0ed36h,r0 ; /EPEC_DPTR_IN_R01

mov r0,UTD0IC ; delete request bit for TX_DONE
and r0,#01111111b ;
mov UTD0IC,r0 ;

mov r0,UTD0IC ; Set Enable-bit for TX_DONE
or r0,#40h ;
mov UTD0IC,r0 ;

mov r0,#02000h ; set source
mov 0ed10h,r0 ;
mov r0,#1h ;
mov 0ed12h,r0 ;

mov r0,#5h ;EPEC_CTRL_IN_R0
mov 0ed58h,r0 ; set counter to 5
mov r0,#2005h ;
mov 0ed58h,r0 ;
mov r0,#0a005h ;
mov 0ed58h,r0 ;

jmp ok_label_1

ret
main_proc endp

lcd ends

end

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru