ATXMega рдореЗрдВ USB рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ред рдЫрд┐рдкрд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд╛рдЗрдб

Atmel рдХреЗ рдЖрда-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдпреВрдПрд╕рдмреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдЬрд╝реАрдореЗрдЧрд╛ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рд░реВрд╕реА рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЧрд╛рдЗрдб "рд╕реНрдЯреЗрдк рдмрд╛рдп рд╕реНрдЯреЗрдк" рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдиреБрднрд╡ рдХрд╛рдлреА рд╕рддрд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдмрд╛рддрдЪреАрдд рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╣реА рд╕рдордп рдореЗрдВ рдпреВрдПрд╕рдмреА рд╕реНрдЯреИрдХ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реИред Atmel YouTube рдЪреИрдирд▓ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдпрд╣ рдкреЛрд╕реНрдЯ рдЗрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдкреАрд╕реА рдХреА рддрд░рдл рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред



рд▓реМрд╣ред рдореИрдВрдиреЗ ATXMega256A3BU рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд╣реА ATXMega256A3 рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд USB рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рдеред рд╡реИрд╕реЗ, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╡реЗ рдкрд┐рди-рдЯреВ-рдкрд┐рди рд╕рдВрдЧрдд рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ! рдореИрдВрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдбреА + рдФрд░ рдбреА рдХреЗ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХрдиреЗрдХреНрдЯрд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рди рд╕реЗ рд╕реАрдзреЗ рдЬреЛрдбрд╝рд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдпреВрдПрд╕рдмреА рд╣рдм рдорд╛рдЗрдХреНрд░реЛрдХреНрд░реЗрдХрд┐рдЯ, рдФрд░ рдлрд┐рд░ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдорд╛рдорд▓рд╛ рдХрд╛рдлреА рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред



рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ред рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рд░реАрдврд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП Atmel USB рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде, рд╣рдо ASF рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ Atmel Studio рд╕рдВрд╕реНрдХрд░рдг 6 рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рджрд┐рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдлрд╝рд╛рдЗрд▓-> рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛) рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдкрдХреЛ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



рдЫрд╡рд┐



рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ ASF рд╡рд┐рдЬрд╝рд╛рд░реНрдб (рдореЗрдиреВ ASF-> ASF рд╡рд┐рдЬрд╝рд╛рд░реНрдб) рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрд╡реЗрд▓реЗрдмрд▓ рдореЙрдбреНрдпреВрд▓ рдЯреИрдм рдореЗрдВ, рдЖрдкрдХреЛ USB рдбрд┐рд╡рд╛рдЗрд╕ (рд╕реЗрд╡рд╛) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ Add рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, USB рдбрд┐рд╡рд╛рдЗрд╕ (рд╕реЗрд╡рд╛) рдЪрдпрдирд┐рдд рдореЙрдбреНрдпреВрд▓ рдЯреИрдм рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╣реЛрдЧреАред рдЗрд╕рдореЗрдВ рд╣рдо hid_generic рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рд╕рд╛рд░рд╛рдВрд╢ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдВрдд рд╣реИред рдЕрдм рд╡рд╣ рдЗрд╕реЗ рдЕрд░реНрде рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред Main.c рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рджреЗрдЦреЗрдВрдЧреЗ:



#include <asf.h> int main (void) { board_init(); // Insert application code here, after the board has been initialized. }
      
      





Board_init () рдлрд╝рдВрдХреНрд╢рди рдбреАрдмрдЧ рдмреЛрд░реНрдб рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, XMEGA-A3BU Xplainedред рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЕрдкрдиреЗ, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рджреВрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ред рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ USB рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ udc_start () рд╣реИред рдпрд╣ рдХрд╣реАрдВ рди рдХрд╣реАрдВ asf.h рдХреЗ рдЖрдВрддреЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЪреБрдкрдЪрд╛рдк рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣ conf_usb.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ USB рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ USB HID рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ:



 #define USB_DEVICE_VENDOR_ID 0x03EB #define USB_DEVICE_PRODUCT_ID 0x2013 #define USB_DEVICE_POWER 500 // Consumption on Vbus line (mA) #define USB_DEVICE_ATTR USB_CONFIG_ATTR_SELF_POWERED #define USB_DEVICE_MANUFACTURE_NAME "Company Name" #define USB_DEVICE_PRODUCT_NAME "Varior Lens" #define USB_DEVICE_SERIAL_NAME "00001" #define UDI_HID_GENERIC_REPORT_OUT(ptr) my_callback_generic_report_out(ptr) extern void my_callback_generic_report_out(uint8_t *report); #define UDI_HID_REPORT_IN_SIZE 64 #define UDI_HID_REPORT_OUT_SIZE 64 #define UDI_HID_REPORT_FEATURE_SIZE 4
      
      







рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╛рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рдЖрдИрдбреА рдФрд░ рдЙрддреНрдкрд╛рдж рдЖрдИрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИред UDI_HID_REPORT_IN_SIZE рдФрд░ UDI_HID_REPORT_OUT_SIZE рдХреНрд░рдорд╢рдГ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд╝рд░ рдХреЗ рдЖрдХрд╛рд░ рд╣реИрдВред My_callback_generic_report_out () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рдЖрдк рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



USB рдХреЗ рдЖрд░рдВрднрд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



 #define F_CPU 32000000UL #include <asf.h> int8_t ui_hid_report [64]; uint8_t report [64]; void my_callback_generic_report_out(uint8_t *data){ for (uint8_t i = 0; i < 64 i++){ report [i] = data[i]; } //    report      } void main(){ irq_initialize_vectors(); cpu_irq_enable(); sysclk_init(); udc_start(); sysclk_enable_module(SYSCLK_PORT_C, SYSCLK_TC0); //    0 while(1){ //      ui_hid_report   udi_hid_generic_send_report_in(ui_hid_report); } }
      
      







рдореИрдВ sysclk_enable_module рд▓рд╛рдЗрди (SYSCLK_PORT_C, SYSCLK_TC0) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣реВрдВрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ sysclk_init () рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХреНрд▓реЙрдХрд┐рдВрдЧ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рдП :) рдЖрдк sysclk_enable_module () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЦреЛрдЬ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ sysclk_disable_module рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рднрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рдПрдХ HID- рд╕рдВрдЧрдд рдбрд┐рд╡рд╛рдЗрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдкреНрд░рд┐рдВрдЯрд░ рдореЗрдВ, рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдЬреЛ рд▓рд╛рдЗрди #define USB_DEVICE_PRODUCT_NAME рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:







рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ред



рд╕рднреА рд╕рдорд╛рди Atmel рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдмрдиреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ C ++ рдмрд┐рд▓реНрдбрд░ рдХреЗ рддрд╣рдд рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░, рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛: "рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЛред" рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡реЗ рдЗрддрдиреЗ рдЕрдореАрд░ рдФрд░ рдЦреБрд╢ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдПрдХ рдмрд┐рд▓реНрдбрд░ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред



рдкрд╣рд▓рд╛ рдХрджрдо AtUsbHid.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ Atmelovsk рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ .h рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:



 typedef ULONG HIDStatus; typedef HIDStatus WINAPI __import tcloseDevice(void); typedef HIDStatus WINAPI __import tfindHidDevice(const UINT VendorID, const UINT ProductID); typedef HIDStatus WINAPI __import twriteData(UCHAR* buf); protected: tcloseDevice *closeDevice; tfindHidDevice *findHidDevice; twriteData *writeData;
      
      







рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЖрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



 HINSTANCE AtUsbHidhandle; AtUsbHidhandle = LoadLibrary("AtUsbHid.dll"); if (AtUsbHidhandle == 0) ShowMessage("  AtUsbHid.dll"); else{ closeDevice = (tcloseDevice*)GetProcAddress(AtUsbHidhandle,"closeDevice"); findHidDevice = (tfindHidDevice*)GetProcAddress(AtUsbHidhandle,"findHidDevice"); writeData = (twriteData*)GetProcAddress(AtUsbHidhandle,"writeData"); }
      
      







рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HID рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВред findHidDevice (VID, PID) рдЗрд╕реА VID рдФрд░ PID рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред writeData () рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рд╕рд░рдгреА рднреЗрдЬрддрд╛ рд╣реИред рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 #define VID 0x03EB #define PID 0x2013 char a = 0; a = findHidDevice(VID, PID_1); if (a != 0){ Label1->Caption = ""; } UCHAR leds[64]; leds[0] = 255; leds[1] = 10; leds[2] = 20; leds[3] = 30; writeData(leds); closeDevice();
      
      







рдЗрд╕ рддрд░рд╣ рдореИрдВрдиреЗ ATXMega рдкрд░ HID рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдмреЗрд╢рдХ, рдпреВрдПрд╕рдмреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рдд рдХреЛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЙрдард╛рдХрд░ рдФрд░ рдЫрдВрдЯрдиреА, рдЖрдкрдХреЛ рдХрд╛рд░реНрдб рд╕реМрдВрдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!



рдФрд░ рд╣рд╛рдВ, рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдпреЛрдЬреНрдп рдЬрд╝реВрдо, рдлреЛрдХрд╕ рдФрд░ рдЖрдИрд░рд┐рд╕ рдХреЗ рд╕рд╛рде рдХреИрдордХреЙрд░реНрдбрд░ред






All Articles