Hardware Reference
In-Depth Information
;******************************************************************************
; Initialization of the USB_RESPONSE_FORMATTER
;******************************************************************************
USB_response_formatter_init
movlw 0x07
movwf IN_HPOINTER
movlw 0x0C
movwf IN_LPOINTER
;bulk IN start position
movlw 0x00
movwf IN_TRANSIZE1
movwf IN_TRANSIZE2
movwf IN_TRANSIZE3
movwf IN_TRANSIZE4
movwf MAV_FLAG
return
Das Einschreiben der Antworten in den Ausgangsspeicher, der unter IEEE 488
„Output Queue“ heißt und im Beispielprojekt einfach der Bulk-IN Endpoint ist,
muss übergeordnet organisiert werden. Dazu dient allen Befehlsunterprogrammen
gemeinsam das Unterprogramm „ResponseByte“, das wie folgt aussieht:
;******************************************************************************
; Write a single byte to output queue (bulk-IN in this firmware version)
;******************************************************************************
; In: byte in BULKIN
; In: IN_HPOINTER, IN_LPOINTER: pointer to bulk OUT position
; Out: IN_HPOINTER, IN_LPOINTER
ResponseByte
movff IN_LPOINTER,FSR0L
movff IN_HPOINTER,FSR0H
movff BULKIN,POSTINC0
movff FSR0L,IN_LPOINTER
movff FSR0H,IN_HPOINTER
call
IncTranSize
return
; Increment transfer size register of DEV_DEP_MSG_IN header
IncTranSize
movlw 0x01
addwf IN_TRANSIZE1,1
movlw 0x00
addwfc IN_TRANSIZE2,1
movlw 0x00
addwfc IN_TRANSIZE3,1
movlw 0x00
addwfc IN_TRANSIZE4,1
return
Die einzelnen Befehlsunterprogramme müssen ihre Antworten immer mit einem
Semikolon abschließen, weil es ja sein kann, dass noch weitere Antworten in den
Search WWH ::




Custom Search