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 =...
© Copyright 2024 ExpyDoc