Legende - Mikrocontroller.net

main
Config32MHzClock
init
init
Config32
S) Event_USB_Device_ControlRequest
usb_init
ja
1
Y) usb_xm_init
Z) USB_ResetInterface
usb_init
usb_xm_init
EP_DEF_in(ep_out)
switch(Request)
USB_ResetIF
GetLineEncoding
. a) ep_def_in
Daten vom EP abholen
(Bank 0/1)
p->handler
b) usb_handle_ring_rx
.
d) usb_handle_ring_tx
SetLineEncoding
EP_DEF_out(ep_in)
c) ep_def_out
Daten zum EP bringen
(Bank 0/1)
EP_DEF_out(ep_note)
SetControlLineState
H) USB_HandleSetup
nein
p->handler
DATAPTR=ep0_buf_in
DATAPTR=ep0_buf_in
ja
Control
SetSendBreak
e) usb_handle_ring_note
DATAPTR=ep0_buf_in
Event_USB_Device_ControlRequest
A) ISR(usb_busevent)
nein
memcpy(ep0_buf_in, ...)
DATAPTR=ep0_buf_in
Suspend
ja
Event_USB_Device_Suspend
B) Event_USB_Device_Suspend
leer
M) USB_Device_GetInternalSerialDescriptor
switch(Request)
USB_Device_GetSerialString
L) USB_handleSetAddress
nein
WakeUp
ja
Event_USB_Device_WakeUp
C) Event_USB_Device_WakeUp
leer
case SetAddress
Reset Interface
ja
ließt Serial String aus pgm
und gibt ihn als
Unicode zurück
USB_handleSetAddress
Callback_USB_GetDescriptor
case GetDescript
nein
N) USB_Device_GetSerialString
USB_handleGetDescriptor
I) USB_handleGetDescriptor
switch(Descriptor)
USB_Device_GetInternalSerialDescriptor
USB_ResetInterface
Event_USB_Device_Reset
case SetConfig
E) Event_USB_Device_Reset
leer
USB_handleSetConfiguration
Device
Address=&Descriptor
Callback_USB_GetDescriptor
case GetConfig
ep0_buf_in=ConfID
Configuration
Address=&Config
USB_ep0_send_progmem
USB_Evt_Task
case SetInterf
D) USB_Evt_Task
usb_xm_init
nein
EP Setup
USB_Task
usb_eb.c
usb_xm.c
usb_cdc.c
R) ep_def_init
EP_DEF_init_buffer
J) USB_ep0_send_progmem
Event_USB_Device_ConfigurationChanged
K) Event_USB_Device_ControlOut
kopiert Daten
while(...)
{ ep0_buf_in = pgm_read_byte(addr); }
O) Event_USB_Device_SetInterface
Q) Event_USB_Device_ConfigurationChanged
Abfolge bei Start / Anmelden am Host:
YZABCDABDACDYZAZEDFGHIJFGFGKAAAZEDFGHLFGFGHIJFGFGKFGHIJFGFGKFGHIMNFGFGKFGHIJFGFGKFGHIJFGFGKFGHIJFGFGKFGHIJFGFGKFGHPQRRRFGFGHSFGFGKFGHSFGFG
Abfolge nach Start:
acdce
Abfolge beim Verbinden eines Ports:
FGHSFGFGK FGHSFGFGK FGHSFGKFG FGHSFGFGK FGHSFG ... ca. 30 mal
Abfolge beim Empfangen vom Host (Out-Endpoint):
FGabcdcel (l ist der Punkt, an dem die Nachricht am µC ausgewertet wird)
Abfolge beim Senden zum Host (In-Endpoint):
nacdceFG (n ist der Punkt, an dem die Nachricht vom µC bereit gestellt wird)
ep_def_init_buffer
Callback_USB_GetDescriptor
USB_HandleSetup
Device_ControlOut
0x00: Language
0x01: Manufacturer
0x02: Product
b_DATAPTR=ep0_buf_in
ja
EP trncompl
Legende:
main.c
String
P) USB_handleSetConfiguration
case SetFeature
G) USB_Task
F) ISR(usb_trncompl)
Event_USB_Device_SetInterface
EP_DEF_init(ep_in)
EP_DEF_init(ep_out)
EP_DEF_init(ep_note)
EP_pingpong
endpoints[..].in =...
kein EP_pingpong
endpoints[..].out =...