рд▓реЗрдЦ
AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдШрд░-рдирд┐рд░реНрдорд┐рдд
USB HID рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░
рд╡рд┐рдВрдбреЛрдЬ 7 x64 рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рджрд░ рдХрджрдо рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреЛрд░реНрдЯ рдкрд░ рдПрдХ рдпреВрдПрд╕рдмреА рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рд╕рдВрдХреЗрддрдХ рдПрд▓рдИрдбреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ)ред рдПрд▓рдИрдбреА рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ - рдпрд╣ рдмрдВрдж рд╣реИ рдпрд╛ рдЪрд╛рд▓реВ рд╣реИред рд╡рд┐рд╖рдп рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрдиреБрд░реЛрдз
рд╕рдбрд╝реЗ рд╣реБрдП рдЕрдВрдбреЗ рдФрд░ рд╕рдбрд╝реЗ рд╣реБрдП рдЯрдорд╛рдЯрд░ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдбрдВрдмрдирд╛рдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ
рд╕рд╛рде рд╕рд╣реЗрдЬрдирд╛ рд╣реИред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
рез ред рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕реЗ V-USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА [1] рдФрд░ Atmel рд╕реЗ Atmel Studio 6 [2] IDE рд╣реИред рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд░реНрдорд╡реЗрдпрд░ (рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЯреВрд▓рдХрд┐рди рдХреЗ рд╕рд╛рде рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ Atmel Studio рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ) рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WinAVR рдЯреВрд▓рдЪреИрди [3] рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
реи ред рд╡рд┐рдВрдбреЛрдЬ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рд╣реЛрд╕реНрдЯ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░) рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, LibUsbDotNet [4] рдЯреНрд░реИрд╡рд┐рд╕ рд░реЙрдмрд┐рдиреНрд╕рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ Microsoft рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ C # 2010 [5] IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореБрдлреНрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реАрдорд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА # 2010 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛрдЬ 7 x64 рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдкрд░рд┐рд╡рд╛рд░ (рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдФрд░ рдЕрдзрд┐рдХ рд╣рд╛рд▓ рдХреЗ) рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗред
рд▓реЛрд╣реЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
рд╡реА-рдпреВрдПрд╕рдмреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдИ рднреА AVR рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ USB HID рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рджреЛрд╕реНрдд рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рдХрд╛рд╢рд┐рдд рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдпреВрдПрд╕рдмреА рдХрдиреЗрдХреНрд╢рди рднреА рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░реНрдХрд┐рдЯ (рд╡реА-рдпреВрдПрд╕рдмреА рдкреИрдХреЗрдЬ [1] рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рддреИрдпрд╛рд░ рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЕрдЧрд░ рдПрдХ рдпреВрдПрд╕рдмреА рдмреВрдЯрд▓реЛрдбрд░ рдмреЛрд░реНрдб рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдмреЛрд░реНрдб рдХреЛ рдЪрдордХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЦрд░реАрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ ATmega32A рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде AVR-USB-MEGA16 рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕рдореЗрдВ рдмреВрдЯрд▓реЛрдбрд░ (USBasploader, USBasp рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг) рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреБрдкрдЯреНрдЯрд╛ рдкреВрд░реЗ рдЖрдХрд╛рд░ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЖрдк рдореЗрдЯрд╛рдмреЛрд░реНрдб (рдЙрд╕ рдкрд░ ATmega168 рдпрд╛ ATmega328), рдпрд╛ ATmega8 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рднреА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЧреНрд░рдВрдерд┐рдпреЛрдВ рдХреЛ
ebay.com рдпрд╛
dx.com рдкрд░ рд╕рд╕реНрддреЗ рдореЗрдВ рдЦрд░реАрджрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Atmel Studio 6 рдФрд░ V-USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдмрдирд╛рдирд╛
Atmel Studio 6 (рдЗрд╕рдХреЗ рдмрд╛рдж AS6) рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЬрдм AS6 рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЪреБрдирдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рддреЛ рдкрддреНрд░
A рдХреЗ рдмрд┐рдирд╛
Atmega32 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ,
Atmega32A рдХрд╛ рдирд╣реАрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ Atmega32A рдмреЛрд░реНрдб рдкрд░ рд╣реИ) - рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ WinAVR рдЯреВрд▓рдХрд┐рди рдЕрдВрддрд░ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ Atmega32 рдЬрд╛рдирддрд╛ рд╣реИред рдпреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди AS6 рдХреЗ рд▓рд┐рдП рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред AS6 рдХреЗ рд╢реАрд░реНрд╖ рдореЗрдиреВ рдореЗрдВ,
рдЯреВрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░
рд╡рд┐рдХрд▓реНрдк .. рдФрд░ рдпрд╣ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рд╕реВрдЪреА рдореЗрдВ рдмрд╛рдИрдВ рдУрд░,
рдЯреВрд▓рдХрд┐рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╕реНрд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд╛рдИрдВ рдУрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдЗрд╕ рд╢рдмреНрдж рдХреЗ рд╕рд╛рде, Atmel рдиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдЯреВрд▓ (рдЯреВрд▓рдЪрд╛рдЗрдиреНрд╕) рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЗрдирдХреЛрдб рдХрд┐рдпрд╛ред
. Native, (Default). Native - GCC , . Atmel, AS6. , , V-USB ( USB HID USB) . , WinAVR, .
рд╕реНрд╡рд╛рдж рд╕реВрдЪреА рдореЗрдВ WinAVR рдЯреВрд▓рдХрд┐рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
рд╕реНрд╡рд╛рдж рдЬреЛрдбрд╝реЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдирд┐рдореНрди рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреА рд╢реАрд░реНрд╖ рдкрдВрдХреНрддрд┐ рдореЗрдВ, WinAVR рд╕рдВрдХрд▓рдХ (рдордирдорд╛рдирд╛) рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ, рдФрд░ рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рдореЗрдВ рдкреВрд░реНрдг рдкрде рджрд░реНрдЬ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЯреВрд▓рдХрд┐рди рд╕рдВрдХрд▓рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (\ рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рд╛рде) рдФрд░
рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЬреЛрдбрд╝рд╛ рд╕рдВрдХрд▓рдХ рд╕реНрд╡рд╛рдж рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП WinAVR рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░
рд╕реЗрдЯ рдбрд┐рдлреЙрд▓реНрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреВрд▓рдмрд╛рд░ рдмрдирд╛рдПрдВ), рдФрд░ рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░рд╛ AS6 WinAVR рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдмрд╛рдИрдВ рдУрд░ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░
Alt + F7 (рдореЗрдиреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ -> рдЧреБрдг) рджрдмрд╛рдПрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░реЗрдВ:
- AVR / GNU C рдХрдВрдкрд╛рдЗрд▓рд░ -> рд╕рд┐рдВрдмрд▓реНрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ, F -CPU = 12000000UL рдХреЛ -D рдлрд╝реАрд▓реНрдб рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ - рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ 12 MHz рдХреА рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ (рдпрд╣ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдореЗрд░реЗ AVR-USB-MEGA16 рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ)ред
- AVR / GNU рдПрд╕реЗрдорд▓рд░ -> рдЬрдирд░рд▓ рд╕реЗрдХреНрд╢рди рдореЗрдВ, рдЕрд╕реЗрдВрдмрд▓рд░ рдлреНрд▓реИрдЧ рдлреАрд▓реНрдб рдореЗрдВ, -DF_CPU = 12000000UL рдЬреЛрдбрд╝реЗрдВред
- AVR / GNU C рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ -> рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗрдХреНрд╢рди, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд▓реЗрд╡рд▓ рдлреАрд▓реНрдб рдореЗрдВ рд╕рд╛рдЗрдЬрд╝ (-Os) рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ - рд╕реВрдЪреА рдХреЗ рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рдПрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ,
рдЙрдиреНрдирдд рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреВрд▓рдЪреЗрди рдлреНрд▓реЗрд╡рд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ, рдЬреЛрдбрд╝реЗ рдЧрдП WinAVR рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рддрд╛рдХрд┐ AS6 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗред рдпрд╣ AS6 рд╕реЗрдЯрдЕрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ [6] рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ - рдлрд░реНрдорд╡реЗрдпрд░ \ VUSB рдлрд╝реЛрд▓реНрдбрд░, VUSB.c, usbdrv.c, usbdrvasm.S рдФрд░ oddebug.c рдлрд╝рд╛рдЗрд▓реЗрдВ рджреЗрдЦреЗрдВред ASS6 рдкреНрд░реЛрдЬреЗрдХреНрдЯ V-USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: hid-custom-rq, рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдореЗрдХ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реА-рдпреВрдПрд╕рдмреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдХрдИ рдЕрдиреНрдп рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдпреВрдПрд╕рдмреА рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ (рдЪреВрд╣реЗ, рдХреАрдмреЛрд░реНрдб, рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕), рд▓реЗрдХрд┐рди рдпреВрдПрд╕рдмреА рд╕реАрдбреАрд╕реА рдбрд┐рд╡рд╛рдЗрд╕ (рд╡рд░реНрдЪреБрдЕрд▓ COM рдкреЛрд░реНрдЯ) рднреА рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рдмрд╕ AS6 рдореЗрдВ VUSB.atsln рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ, рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛ рд▓реА рд╣реИрдВ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ
рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
usbconfig.h рдлрд╝рд╛рдЗрд▓ рдХреЛ
рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ ред рдпрд╣ рд╡реА-рдпреВрдПрд╕рдмреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдпрд╣ рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ (рд╡реАрдЖрдИрдбреА, рдкреАрдЖрдИрдбреА, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреИрд░, рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдФрд░ рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рди) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╛рдЗрд▓ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпреВрдПрд╕рдбреА рдбреА + рдФрд░ рдбреА- рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд┐рди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдореБрдЦреНрдп рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдореИрдХреНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT, USB_FFG_DPLUS_BIT), рдЗрди рдкреИрд░реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓
usbconfig.h рдЖрд░реНрдХрд╛рдЗрд╡ рд╕реЗ [6] рдПрд╡реАрдЖрд░-рдпреВрдПрд╕рдмреА-рдПрдордИрдЬреАрдП 16 рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХреЗ рдкреИрд░реЛрдВ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдПрд▓рдИрдбреА рдХреЗ рд╕рд╛рде рдЭрдкрдХрд╛рдПрдЧрд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдкрд░ рд╣реИ рдФрд░ рдкреЛрд░реНрдЯ рдмреА рдХреЗ 0-рдкреИрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдореЗрдЬрдмрд╛рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░) рдмрдирд╛рдирд╛
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдпреВрдПрд╕рдмреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
. V-USB. makefile MinGW, LibUSB. Visual Studio LibUsbDotNet. LibUsbDotNet , , . - , LibUSB . , , - LibUSB, USB Windows. .
Microsoft Visual C # 2010 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЕрдм рдЖрдкрдХреЛ
LibUsbDotNet.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛
рд╣реЛрдЧрд╛ ред рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╛рдо рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ" рдЪреБрдиреЗрдВред

рдПрдХ рдФрд░ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдкрде рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ LinUsbDotNet.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд┐рдд рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ C: \ Program Files \ LibUsbDotNet рдлрд╝реЛрд▓реНрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ DLL рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓рд╛рдЗрди рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЙрдбреНрдпреВрд▓ (рдлрд╝рд╛рдЗрд▓ Form1.cs) рдХреЗ рд▓рд┐рдП:
using LibUsbDotNet; using LibUsbDotNet.Info; using LibUsbDotNet.Main;
рдкреНрд░рдкрддреНрд░ рдХреЗ рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ рдкрд░ рдЬрд╛рдПрдВ, рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдПрдВ (3 рдмрдЯрди рдмрдЯрди рдФрд░ 3 рд▓реЗрдмрд▓ рдкрд╛рда рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реЗрдВ):

рдлреЙрд░реНрдо рд▓реЛрдб рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛ, рддреЛ LibUsbDotNet рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ USB рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЦреЛрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдпреВрдПрд╕рдмреА рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред USB рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рднреА USB рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдпреЗ VID рдФрд░ PID рд╣реИрдВред
. - USB VID PID, . USB-, , VID/PID, , .
VID рдирд┐рд░реНрдорд╛рддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (Vendor ID) рд╣реИ, рдФрд░ PID рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдЙрддреНрдкрд╛рдж ID) рд╣реИред рд╣рдорд╛рд░реЗ USB рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ
V6 : 0x
16C0 , PID: 0x
05DF рд╣реИ , рдЗрди рдорд╛рдиреЛрдВ рдХреЛ AS6 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓
usbconfig.h (рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ) рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ USB рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕реА рдкреИрд░рд╛рдореАрдЯрд░ VID: 0x16c0, PID: 0x05df рдХреЗ рд╕рд╛рде MyUsbFinder рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐
usbconfig .h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдХреЛ Form1 рд╡рд░реНрдЧ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
public static UsbDevice MyUsbDevice; public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(0x16c0, 0x05df);
рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╣рдо рдХрд┐рд╕ USB рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд╕рдордп (рдлреЙрд░реНрдо рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╕рдордп) рдРрд╕рд╛ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдореБрдЦреНрдп рд░реВрдк рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░ рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рд▓реЛрдб рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ Form1_Load рдмрдирд╛рдПрдВред рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
private void Form1_Load(object sender, EventArgs e) { MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); if (MyUsbDevice != null) { label2.Text = " !"; } else label2.Text = " !"; }
рдмрдЯрди рдмрдЯрди 1 ("рдЪрд╛рд▓реВ") рдкрд░ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдмрдЯрди рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмреЙрдбреА рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
private void button1_Click(object sender, EventArgs e) {
"рдмрдВрдж" рдмрдЯрди рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
private void button3_Click(object sender, EventArgs e) {
рдкрдврд╝реЗрдВ рдмрдЯрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:
private void button2_Click(object sender, EventArgs e) {
рдлреЙрд░реНрдо рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрддрд┐) рдПрд▓рдИрдбреА рдХреЛ рдмреБрдЭрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдЬрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_Out), 1, (short)0, 0, 0); int countIn; byte[] data = new byte[1]; MyUsbDevice.ControlTransfer(ref packet, data, 0, out countIn); }
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдпреВрдПрд╕рдмреА рдкреИрдХреЗрдЯ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрдХреНрд╖ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛
usbFunctionSetup рдлрд╝рдВрдХреНрд╢рди (рдлрд░реНрдорд╡реЗрдпрд░ AS6 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ VUSB.c рдореЗрдВ рд╕реНрдерд┐рдд) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╛рд░реЛрд╣ рд╣реИ:
usbMsgLen_t usbFunctionSetup(uchar data[8]) { usbRequest_t *rq = (void *)data; if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR){ DBG1(0x50, &rq->bRequest, 1); if(rq->bRequest == CUSTOM_RQ_SET_STATUS){ if(rq->wValue.bytes[0] & 1){ LED_PORT_OUTPUT |= _BV(LED_BIT); }else{ LED_PORT_OUTPUT &= ~_BV(LED_BIT); } }else if(rq->bRequest == CUSTOM_RQ_GET_STATUS){ static uchar dataBuffer[1]; dataBuffer[0] = ((LED_PORT_OUTPUT & _BV(LED_BIT)) != 0); usbMsgPtr = dataBuffer; return 1; } }else{ } return 0; }
рд╣рдорд╛рд░рд╛ USB HID рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдВрддрд░рдг 0 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ) рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рдХрд╛рд░ (рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░), рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рджрд┐рд╢рд╛ рдбрд┐рдХреЛрдб рдХреА рдЧрдИ рд╣реИред рдпрджрд┐ CUSTOM_RQ_SET_STATUS, рддреЛ рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫрд┐рдд рдбреЗрдЯрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд╣рд╛рдВ рд░рдЦреА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрд▓рдИрдбреА рдХреА рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдмрд╛рдЗрдЯ рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ - рдпрджрд┐ рдХрдо рдмрд┐рдЯ рдореЗрдВ рдПрдХ рд╣реИ, рддреЛ рдПрд▓рдИрдбреА рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдпрд╣ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ CUSTOM_RQ_GET_STATUS рдХреЛ BRequest рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрдлрд░ рдХреЛ LED рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рднрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрдлрд░ рдбреЗрдЯрд╛ рдХреЛ рд╣реЛрд╕реНрдЯ рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдХреЛрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реАрдбрд┐рдпреЛ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдореБрдЭреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рд╕рдВрджрд░реНрдн
рез ред
рд╡реА-рдпреВрдПрд╕рдмреА ред
реи ред
Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ 6 ред
рей ред
WinAVR ред
рек ред
LibUsbDotNet C # USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА ред
рел ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдПрдХреНрд╕рдкреНрд░реЗрд╕ ред
рем ред
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб ред
PS рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рд╕рд╛рдЗрдЯ microsin.net рдереА , рдЬрд╣рд╛рдБ USB рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдереА рдФрд░ USB рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдерд╛ред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЬрд╡рд╛рдмрджреЗрд╣реА рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдВредрднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдореИрдВ рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдпреВрдПрд╕рдмреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ред