Usb Consecutive Set Address - Renesas M16C Series User Manual

16-bit single-chip microcomputer
Hide thumbs Also See for M16C Series:
Table of Contents

Advertisement

M30240 Group
Below is an example of how to set/reset the ISO bit of the IN CSR register (for initializing the respective
endpoint as an isochronous endpoint):
[R1L] = [EPiICS].B
OR.B #0AH, R1L
AND.B #0FEH, R1L
[EPiICS].B = [R1L]
[R1L] = [EPiICS].B
OR.B #02, R1L
AND.B #0F6H, R1L
[EPiICS].B= [R1L]

1.5.5.2 USB Consecutive Set Address

The USB Specification states that the host can send a SET_ADDRESS request for the following cas-
es:
1. During enumeration when the device is in default state. (The host assigns a non-zero address.)
2. When the device is in the address state. (The host can re-assign a new address.)
The device handles case #1 (when the device is in the default state) and case #2 (when the device is
in the address state) differently. The following is a segment of code to illustrate the program flow to
properly deal with these cases.
DEFAULT_STATE:
If [USBA].B ==0
[USBA.].B = wValue _ lo
R1L = [EP0CS].B
OR.B #58H, R1L
[EP0CS].B = R1L
wait for the completion of the status
JMP ADDR_END
else
ADDR_STATE
R1L [EP0CS].B
OR.B #58H, R1L
[EP0CS].B = R1L
wait for the completion of the status
[USBA].B= wValue_lo
ADDR_END
endif
end of the set_address routine
Note: wValue_lo = assigned address from the host in SET-ADDRESS request.
Rev.1.00 Sep 24, 2003 Page 138 of 360
;set ISO bit = 1, write "1" back to UNDER_RUN bit
;write "0" back to IN_PKT_RDY bit
;write "1" back to UNDER_RUN bit
;reset ISO bit = 0, write "0" back to IN_PKT_RDY bit
;If the device is in default state, update address before STATUS
completion
;USB ENDPOINT 0 CSR
;Set serviced_out_pkt_rdy & data_end, write "1" back to FORCE_STALL bit
;USB ENDPOINT 0 CSR
;Set serviced_out_pkt_rdy & data_end, write "1" back to FORCE_STALL bit
;If the device is in address state, update address before STATUS
completion
Programming Notes

Advertisement

Table of Contents
loading

Table of Contents