Vusb рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░

рдкрд░рд┐рдЪрдп


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


рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо ATmega8 рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ USB-HID рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рд╡реНрдпрд╛рдкрдХ рд╕рд╛рд╣рд┐рддреНрдп рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЕрднреНрдпрд╛рд╕ рддрдХ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рдирд┐рдореНрдирддрдо рд╕реНрддрд░ рд╕реЗ рдЙрдЪреНрдЪрддрдо рддрдХ, рддрд░реНрдХ рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рддрдХ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рдж, рдЙрд╕реА рдЪрд░рдг рдХреЗ "рдЖрд╡рд┐рд╖реНрдХрд╛рд░" рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐, рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдирд╛рдореЛрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ, рдпрд╣ рдмрддрд╛рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдпрд╛ рдпрд╣ рдЦрдВрдб рдХреНрдпреЛрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА vusb рд▓реЗрдЦрдХреЛрдВ рдХреА рд╢реИрд▓реА рд╕реЗ рдЕрд▓рдЧ рд╣реИред рддреБрд░рдВрдд, рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реЛрдкрдХрд╛рд░реА рд╣рд┐рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рджреВрд╕рд░реЛрдВ рдХреЛ рдПрдХ рдХрдард┐рди рд╡рд┐рд╖рдп рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП), рдореЗрд░рд╛ рдПрдХ рд╕реНрд╡рд╛рд░реНрде рднреА рд╣реИ - рдЕрдкрдиреЗ рджрдо рдкрд░ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕реВрдХреНрд╖реНрдо рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рднреА рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдЫреВрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреБрдЫ рд╡рд┐рд╖рдп рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдХреЛрдб рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЕрдиреБрднрд╛рдЧреЛрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рджрд░рдЕрд╕рд▓, рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛, рдФрд░ рдкрд╛рда рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреНрдпреЛрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред


рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЗрд╡рд▓ рдХрдо-рдЧрддрд┐ рд╡рд╛рд▓реЗ рдпреВрдПрд╕рдмреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдмрд┐рдирд╛ рднреА, рдЬреЛ рдЙрдЪреНрдЪ-рдЧрддрд┐ рд╡рд╛рд▓реА рдХрд┐рд╕реНрдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред


рдЪрд░рдг 0. рд▓реЛрд╣рд╛ рдФрд░ рдЕрдиреНрдп рддреИрдпрд╛рд░реА


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП 12 MHz рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдХреЗ рд╕рд╛рде ATmega8 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╣реЛрдордореЗрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдмреЛрд░реНрдб рд▓реЗрдВред рдореИрдВ рд╕реНрдХреАрдо рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдпрд╣ рдХрд╛рдлреА рдорд╛рдирдХ рд╣реИ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ vusb рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦреЗрдВ), рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ D + PD2, рдЖрдЙрдЯрдкреБрдЯ D- PD3 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд▓рдВрдмрд┐рдд PD4 рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдкреБрд▓-рдЕрдк рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдмрд┐рдЬрд▓реА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдиреБрдЕрд▓ рдирд┐рдпрдВрддреНрд░рдг рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред


5 рд╡реА рдкрд╛рд╡рд░ рдпреВрдПрд╕рдмреА рдХрдиреЗрдХреНрдЯрд░ рд╕реЗ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ 3.6 рд╡реА рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ (рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рдХреНрдпреЛрдВ рдерд╛)ред рддреЛ рдЖрдкрдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЬрд╝реЗрдирд░ рдбрд╛рдпреЛрдб рдбрд╛рд▓ рджреЗрдВред рдореИрдВрдиреЗ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рдФрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред


рдЪреВрдВрдХрд┐ рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ "рдЖрд╡рд┐рд╖реНрдХрд╛рд░" рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдпрд╛рдиреА рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ PD6, PD7 рдкрд░ рджреЛ LED рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, PD0, PD1 рдкрд░ UART, рдХреЛ 115200 рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдХреНрд░реАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдорд┐рдд рд╕реНрдХреНрд░реАрди рдпрд╛ COM рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕реБрди рд╕рдХреЗрдВ:


$ screen /dev/ttyUSB0 115200 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд▓рд╛ рдПрдХ рддрд╛рд░рдХ рдпреВрдПрд╕рдмреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрди рдЬрд╛рдПрдЧрд╛ (рдпрд╣ рд╣рдореЗрд╢рд╛ рдмреЙрдХреНрд╕ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ)ред


рдпрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдкрд╛рда рдХрд╛ рдПрдХ рдФрд░ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рд╣реА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдореИрдВ рдкрд░рд┐рдзреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдпреВрдПрд╕рдмреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдпреВрдПрд╕рдмреА рдХреЗ рдмреЙрд▓реНрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА?


рдЬреАрдердм рдкрд░ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИред


рдЪрд░рдг 1. рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ


рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, USB рдХрдИ рдирд┐рд╢реНрдЪрд┐рдд рдЧрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ AVR рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдХрдо рдЦреАрдВрдЪреЗрдЧрд╛: 1.5 рдореЗрдЧрд╛рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдбред рдпрд╣ рдкреБрд▓-рдЕрдк рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрдЪрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рдЪреБрдиреА рд╣реБрдИ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП, рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдХреЛ рдПрдХ 3.3 V рдмрд┐рдЬрд▓реА рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреЗ рд╕рд╛рде D- рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ 1.5 kOhm рдХрд╛ рдирд╛рдордорд╛рддреНрд░ рдореВрд▓реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕реЗ +5 V рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╛рдордорд╛рддреНрд░ рдореВрд▓реНрдп рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред 12 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, рдкреНрд░рддрд┐ рдмрд┐рдЯ рдХреЗрд╡рд▓ 8 рдШрдбрд╝реА рдЪрдХреНрд░ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдРрд╕реА рд╕рдЯреАрдХрддрд╛ рдФрд░ рдЧрддрд┐ рдХреЗрд╡рд▓ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд╣реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо drvasm.S рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВрдЧреЗред рдпрд╣ рднреА рдПрдХ рдмрд╛рдЗрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдорддрд▓рдм рд╣реИред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдкрд╣рд▓реА рдмрд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╣реИ, SYNC, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдареАрдХ рд╣реИред рдирддреАрдЬрддрди, рдмрд╛рдЗрдЯ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓реЗрдХрд░ рдЗрд╕рдХреЗ рдЕрдВрдд рддрдХ, рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдХреЗрд╡рд▓ 64 рдЪрдХреНрд░ рд╣реЛрддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдорд╛рд░реНрдЬрд┐рди рдФрд░ рднреА рдЫреЛрдЯрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдиреНрдп рдЧреИрд░-рдпреВрдПрд╕рдмреА рдЕрд╡рд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рддреБрд░рдВрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдХ рдЕрд▓рдЧ usbconfig.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдпрд╣ рд╡рд╣рд╛рдБ рд╣реИ рдХрд┐ рдпреВрдПрд╕рдмреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкрд┐рди рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдмрд┐рдЯреНрд╕, рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрдИ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдкреИрдХреЗрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ SYNC рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд╛рдЗрдЯ рд╣реЛрддрд╛ рд╣реИ, 0b10000000 рдХреЗ рдмрд░рд╛рдмрд░, рджреВрд╕рд░рд╛ рдкреАрдЖрдИрдбреА тАЛтАЛрдкреИрдХреЗрдЯ рдХрд╛ рдмрд╛рдЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдХ рддрдХ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди vusb рдореЗрдВ рдЗрд╕ рд╕реВрдХреНрд╖реНрдорддрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд╣реАрдВ рдФрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) NRZI рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рд╕реНрддрд░ рдХреЛ рд╡рд┐рдкрд░реАрдд рд╕реНрддрд░ рдкрд░ рдмрджрд▓рдХрд░ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╢реВрдиреНрдп рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЗрдХрд╛рдИ рдХреЛ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рдЧреНрдирд▓ рд╕реНрд░реЛрдд рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рдбреЗрд╕рд┐рдВрдХ (рдЬрд┐рд╕реЗ рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП) рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рд╣реИ: рдпрджрд┐ рд╕рдВрдЪрд░рд┐рдд рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЫрд╣ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд▓рдЧрд╛рддрд╛рд░ рдЫрд╣ рд╕рдордп рддрдХ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдПрдХ рдордЬрдмреВрд░ рдЙрд▓рдЯрд╛ рд╕рдВрдЪрд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╢реВрдиреНрдп рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд╛рдЗрдЯ рдХрд╛ рдЖрдХрд╛рд░ 8 рдпрд╛ 9 рдмрд┐рдЯреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпреВрдПрд╕рдмреА рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд╛рдЗрдиреЗрдВ рдЕрдВрддрд░ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЬрдм рдбреА + рдЙрдЪреНрдЪ рд╣реИ, рдбреА- рдпрд╣ рдХрдо рд╣реИ (рдЗрд╕реЗ рдХреЗ-рд╕реНрдЯреЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд (рдЬреЗ-рд╕реНрдЯреЗрдЯ)ред рдпрд╣ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдмреЗрд╣рддрд░ рд╢реЛрд░ рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ: рдкреИрдХреЗрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдВрдХреЗрдд (рдЗрд╕реЗ рдПрд╕рдИ 0 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рджреЛрдиреЛрдВ рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬрдореАрди рдкрд░ рдЦреАрдВрдЪрдХрд░ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдбреА + = рдбреА- = 0)ред D + рд▓рд╛рдЗрди рдкрд░ рдХрдо рд╡реЛрд▓реНрдЯреЗрдЬ рдФрд░ D + рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░рдЦрдиреЗ рд╕реЗ рджреЛ рдФрд░ рд╕рдВрдХреЗрдд рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдордп рдЫреЛрдЯрд╛ рд╣реИ (рдПрдХ рдмрд╛рдЗрдЯ рдХреА рд▓рдВрдмрд╛рдИ рдпрд╛ рдереЛрдбрд╝реА рд▓рдВрдмреА) рддреЛ рдпрд╣ рдЖрдЗрдбрд▓ рд╣реИ, рдкреИрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдПрдХ рдард╣рд░рд╛рд╡ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ред

рдЗрд╕рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдПрдХ рдЕрдВрддрд░ рдЬреЛрдбрд╝реА рдкрд░ рд╣реИ, рдПрд╕рдИ 0 рдХреЗ рд╡рд┐рджреЗрд╢реА рдорд╛рдорд▓реЗ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП USB рдмрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐, D + рдпрд╛ D- рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЪреБрдирдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд▓рд┐рдП рдбреА- рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдкреИрдХреЗрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдПрдХ рд▓рдВрдмреЗ рдЖрдЗрдбрд▓ рдХреЗ рдмрд╛рдж SYNC рдмрд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЖрдЗрдбрд▓ рдЕрд╡рд╕реНрдерд╛ D- рд▓рд╛рдЗрди (рдпрд╣ рднреА J- рд╕реНрдЯреЗрдЯ рд╣реИ) рдкрд░ log.1 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ SYNC рдмрд╛рдЗрдЯ 0b100000 рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реЗ NRZI рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдкреНрд░рддреНрдпреЗрдХ рд╢реВрдиреНрдп рдХрд╛ рдорддрд▓рдм рд╕рд┐рдЧреНрдирд▓ рдЗрдирд╡рд░реНрдЬрди рд╣реИ, рдФрд░ рдПрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕рдорд╛рди рд╕реНрддрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ред рддреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдХреНрд░рдо D- рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:


рдмрд╛рдЗрдЯрдмреЗрдХрд╛рд░рд╕рдордиреНрд╡рдпрдирдкреАрдЖрдИрдбреА
рдпреВрдПрд╕рдмреА1..100000001????????
рдбреА1..101010100????????

рдкреИрдХреЗрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдЧрд┐рд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕ рдкрд░ рдПрдХ рдмрд╛рдзрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рджреМрд░рд╛рди рдирд┐рдпрдВрддреНрд░рдХ рд╡реНрдпрд╕реНрдд рд╣реЛ рдФрд░ рддреБрд░рдВрдд рд╡реНрдпрд╡рдзрд╛рди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рди рдХрд░ рд╕рдХреЗ? рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЯреНрд░реИрдХ рдХрд╛рдЙрдВрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП SYNC рдмрд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЛрд░реНрдЪреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХреЗрдВ, рдлрд┐рд░ рдПрдХ рдФрд░ рдЖрдзрд╛-рдмрд┐рдЯ, рдФрд░ рдЕрдЧрд▓реЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╕реАрдзреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, "рдХреБрдЫ" рдореЛрд░реНрдЪреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рдмрд┐рдЯ рдХреЗ рдмреАрдЪ рдореЗрдВ рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рд╕реНрдХреЛрд░ рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП SYNC рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ: рдЗрд╕рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рд╢реВрдиреНрдп рдмрд┐рдЯреНрд╕ рд╣реИрдВ (рд╡реЗ K- рд░рд╛рдЬреНрдп рд╣реИрдВ)ред рдпрд╣рд╛рдВ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред рддреЛ, drvasm.S рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЗрдВрдЯрд░рдкреНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рдлрд╛рдЙрдВрдбрдХреЗ рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдВрджрд░рдЧрд╛рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЗ рдХрд╛рд░рдг, рдмрд┐рдирд╛ рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реА рддрд░рд╣, рд╣рдо рдмрд┐рдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рд┐рд░реНрдл рдмреАрдЪ рдореЗрдВ рдирд┐рд╢рд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдмрд┐рдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЕрд░реНрде рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо 8 рдШрдбрд╝реА рдЪрдХреНрд░ (рдЕрдм рддрдХ рдЦрд╛рд▓реА рдиреЛрдкрд╛рдореА) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рдмрд┐рдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рднреА рд╣реИ, рддреЛ рд╣рдордиреЗ SYNC рдХрд╛ рдЕрдВрдд рдвреВрдВрдв рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдХреЗ рд╕реНрд╡рд╛рдЧрдд рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рджрд░рдЕрд╕рд▓, UART рдХреЗ рдмрд╛рдж рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рджреЛ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдФрд░ рдХреЛрдб рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдЦреИрд░, SE0 рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЧрд▓рддреА рд╕реЗ рдЕрдЧрд▓реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рди рдЖ рд╕рдХреЗрдВред


рдЕрдм рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЙрдкрдХрд░рдг рдХреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рд╣реИрдВ:


 4E 55 00 00 4E 55 00 00 4E 55 00 00 4E 55 00 00 4E 55 00 00 

рдпрд╛рдж рд░рдЦреЗрдВ, рд╣рдо рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╢реВрдиреНрдп рдФрд░ NRZI рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдЗрдП рдХрдо рдмрд┐рдЯ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


4E
NRZI010011100 (рдкрд┐рдЫрд▓реЗ рдмрд┐рдЯ)
рдмрд╛рдЗрдЯ00101101
2 рдбреА

55
NRZI010101010 (рдкрд┐рдЫрд▓реЗ рдмрд┐рдЯ)
рдмрд╛рдЗрдЯ00000000
00

рд╢реВрдиреНрдп рдХреЛ рдбреАрдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкреИрдХреЗрдЯ рдореЗрдВ 16 рд╕рдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдкреИрдХреЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ рдЬреЛ рдкреИрдХреЗрдЯ рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдм рддрдХ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ред


рдЪрд░рдг 2. NRZI рдХрд╛ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг


рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕реМрдВрдк рд╕рдХрддреЗ рд╣реИрдВ: XOR рдСрдкрд░реЗрд╢рди рдареАрдХ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдЙрд▓рдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдФрд░ рдЙрд▓рдЯрд╛ рдЬреЛрдбрд╝реЗрдВ:


 mov temp, shift lsl shift eor temp, shift com temp rcall uart_hex 

рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ:


 2D 00 FF FF 2D 00 FF FF 2D 00 FF FF 2D 00 FF FF 2D 00 FF FF 

рдЪрд░рдг 3. рдмрд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЪрдХреНрд░ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ


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


рдкрд┐рдЫрд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред


рдЪрд░рдг 4. рдмрдлрд░ рдХреЛ рдкрдврд╝реЗрдВ


рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рддреЗрдЬ рдФрд░ рд╕реБрдВрджрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд░реИрдо рдореЗрдВ рдХрд╣реАрдВ рд╕реНрдерд┐рдд рдмрдлрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореБрдЦреНрдп рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЖрдХрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдмреАрдЪ рдореЗрдВ рд╣рдо рд╡рд╣рд╛рдВ рд▓рд┐рдЦреЗрдВрдЧреЗред
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ


USB рдореЗрдВ рдкреИрдХреЗрдЯ рд╕рдВрд░рдЪрдирд╛ рдорд╛рдирдХреАрдХреГрдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рднрд╛рдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: SYNC рдмрд╛рдЗрдЯ, PID + CHECK рдмрд╛рдЗрдЯ (рдкреНрд░рддреНрдпреЗрдХ рдХреЗ 4 рдмрд┐рдЯреНрд╕ рдХреЗ 2 рдлрд╝реАрд▓реНрдб), рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб (рдХрднреА-рдХрднреА 11 рдмрд┐рдЯреНрд╕, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдмрд╛рд░ 8-рдмрд┐рдЯ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛) рдФрд░ рд╕реАрдЖрд░рд╕реА рдпрд╛ рддреЛ 5 рдХрд╛ рдЪреЗрдХ рдпреЛрдЧ () 11-рдмрд┐рдЯ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП), рдпрд╛ 16 (рд╢реЗрд╖ рдХреЗ рд▓рд┐рдП) рдмрд┐рдЯреНрд╕ред рдЕрдВрдд рдореЗрдВ, рдкреИрдХреЗрдЯ рдЗрдВрдбрд┐рдХреЗрд╢рди (EOP) рдХрд╛ рдЕрдВрдд рджреЛ рдкреЙрдЬрд╝ рдмрд┐рдЯреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред


рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрднреА рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдПрдирдУрдкреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдЯреНрд╕ рдХреЗ рд░реАрдбрд┐рдВрдЧ рдХреЛ рдХреЛрдб рдХреЗ рд░реИрдЦрд┐рдХ рдЦрдВрдб рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдорд╛рдВрдбреНрд╕ рд╣рдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдбрд╛рд▓реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд░реАрдбрд┐рдВрдЧ рдЪрдХреНрд░ рдХреЗ рдордзреНрдп рдореЗрдВ rxbit2 рд▓реЗрдмрд▓ рдкрд░ рдХреВрджреЗрдВрдЧреЗред рдмрдлрд░ рдЖрдХрд╛рд░ рдХреА рдмрд╛рдд рд╣реЛ рд░рд╣реА рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдкреИрдХреЗрдЯ рдореЗрдВ 8 рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рдо рд╕реЗрд╡рд╛ рдмрд╛рдЗрдЯреНрд╕ рдкреАрдЖрдИрдбреА тАЛтАЛрдФрд░ рд╕реАрдЖрд░рд╕реА 16 рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ 11 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдмрдлрд░ рдЖрдХрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИред SYNC рдмрд╛рдЗрдЯ рдФрд░ EOP рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдореЗрдЬрдмрд╛рди рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдпрд╛ рддреЛ рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрдмрд▓ рдорд╛рд░реНрдЬрд┐рди рд▓реЗрдВрдЧреЗред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реЗ рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рдорд╛рддреНрд░рд╛ рдХреЛ рддреБрд░рдВрдд рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред


рдЪрд░рдг 5. рдмрдлрд░ рдХреЗ рд╕рд╛рде рдорд╛рдирд╡реАрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛


рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рдкрдврд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдЬреЛрдбрд╝реЗрдВред
рдЕрдм рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 >03 2D 00 10 >01 FF >03 2D 00 10 >01 FF >03 2D 00 10 >01 FF >03 2D 00 10 >01 FF >03 2D 00 10 >01 FF 

рдЪрд░рдг 6. рдПрдХ рдпреЛрдЬрдХ рд╢реВрдиреНрдп рдпреЛрдЬрдХ рдЬреЛрдбрд╝рдирд╛


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


 unstuff0: ;1 (  breq) andi x3, ~(1<<0) ;1 [15]  0-  .     mov x1, x2 ;1 [16]      () in x2, USBIN ;1 [17] <-- 1-   .     ori shift, (1<<0) ;1 [18]  0-   .1      rjmp didUnstuff0 ;2 [20] ;<---//---> rxLoop: eor shift, x3 ;1 [0] in x1, USBIN ;1 [1] st y+, shift ;2 [3] ldi x3, 0xFF ;1 [4] nop ;1 [5] eor x2, x1 ;1 [6] bst x2, USBMINUS ;1 [7]     0-   shift bld shift, 0 ;1 [8] in x2, USBIN ;1 [9] <--  1- (, ) andi x2, USBMASK ;1 [10] breq se0 ;1 [11] andi shift, 0xF9 ;1 [12] didUnstuff0: breq unstuff0 ;1 [13] eor x1, x2 ;1 [14]; bst x1, USBMINUS ;1 [15]     1-   shift bld shift, 1 ;1 [16] rxbit2: in x1, USBIN ;1 [17] <--  2-  (, ) andi shift, 0xF3 ;1 [18] breq unstuff1 ;1 [19] didUnstuff1: 

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рдкрддреЗ рджрд╛рдИрдВ рдУрд░ рд▓реЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдЧрд┐рдиреЗ рдЬрд╛рдПрдВрдЧреЗред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдШрдбрд╝реА рдЪрдХреНрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд▓рд╛ рдмрд╛рдЗрдЯ rxLoop рд▓реЗрдмрд▓ рдкрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд┐рдЫрд▓реА рдмрд╛рдЗрдЯ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ [0, 3]ред рдЕрдЧрд▓рд╛, рд▓реЗрдмрд▓ [1] рдкрд░, рдбреА-рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ, рдкрд┐рдЫрд▓реЗ рд╕реНрд╡реАрдХреГрдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде XOR рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо NRZI рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг XOR рдЕрдкрдирд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдорд╛рд╕реНрдХ рд░рдЬрд┐рд╕реНрдЯрд░ x3 рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЗрдХрд╛рдЗрдпреЛрдВ 0xFF рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ 0- рд▓рд┐рдЦрддреЗ рд╣реИрдВред [рдмрд┐рдЯ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ [7,8]ред рдлрд┐рд░ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ - рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдмрд┐рдЯ рдЫрдареЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдерд╛ред рдбреА рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдирд┐рд░рдВрддрд░ рдмрд┐рдЯ - рд╢реВрдиреНрдп рд▓рд┐рдЦрдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ (рдПрдХ рдирд╣реАрдВ! рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ, рдПрдХреНрд╕рдУрдЖрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗ)ред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдЯреНрд╕ 0, 7, 6, 5, 4, 3 рд╢реВрдиреНрдп рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╢реЗрд╖ рджреЛ рдмрд┐рдЯреНрд╕ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд╡реЗ рдкрд┐рдЫрд▓реЗ рдмрд╛рдЗрдЯ рд╕реЗ рдмрдиреЗ рд░рд╣реЗ рдФрд░ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдереЗред рдЙрдирд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдорд╛рд╕реНрдХ [12] рджреНрд╡рд╛рд░рд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рднреА рдмрд┐рдЯреНрд╕ 1: 0b11111001 = 0xF9 рдкрд░ рд╕реЗрдЯ рд╣реИрдВред рдпрджрд┐ рдореБрдЦреМрдЯрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдмрд┐рдЯреНрд╕ рд╢реВрдиреНрдп рд╣реЛ рдЧрдП, рддреЛ рдереЛрдбрд╝рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рддрдп рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ unstuff0 рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рдПрдХ рдФрд░ рдмрд┐рдЯ [17] рд╡рд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд [9]ред рд╣рдо рд╡рд░реНрддрдорд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рдорд╛рдиреЛрдВ X1, x2 рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рднреА рдХрд░рддреЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдЯ рдкрд░ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдореВрд▓реНрдп рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ XOR рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрдврд╝рддреЗ рд╕рдордп, рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╢рд┐рдлреНрдЯ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╣рдо рд╢реВрдиреНрдп рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕ рдЗрдХрд╛рдИ рдиреЗ рдореЗрдЬрдмрд╛рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА [18]ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдмрд┐рдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рд╢реВрдиреНрдп рдХреЗ рдореВрд▓реНрдп рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЕрдЧрд░ рд╣рдордиреЗ рд╢реВрдиреНрдп рджрд░реНрдЬ рдХрд┐рдпрд╛, рддреЛ рдорд╛рд╕реНрдХ рдЪреЗрдХ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ, рд╕рднреА рдмрд┐рдЯреНрд╕ рдЙрд▓реНрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВ (рдореЗрдЬрдмрд╛рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖), рдФрд░ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИред рдмрдлрд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Xx рдХреЗ рд╕рд╛рде 0xFF [0] рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЙрд▓рдЯрд╛ рдЙрд▓рдЯрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди 0xFE рдХреЗ рд╕рд╛рде, рдЕрд░реНрдерд╛рддреН, рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯ рдХреЛ 0 рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдЙрд▓рдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдирдореВрдирд╛ [15] рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╢реВрдиреНрдп рдмрд┐рдЯ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред


рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдмрд┐рдЯреНрд╕ 1-5 рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, 1 рдмрд┐рдЯ 1, 0, 7, 6, 5, 4 рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЬрдмрдХрд┐ рдмрд┐рдЯреНрд╕ 2, 3 рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рд╕реНрдХ 0xF3 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди 6 рдФрд░ 7 рдмрд┐рдЯреНрд╕ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЕрд▓рдЧ рд╣реИ:


 didUnstuff5: andi shift, 0x3F ;1 [45]   5-0 breq unstuff5 ;1 [46] ;<---//---> bld shift, 6 ;1 [52] didUnstuff6: cpi shift, 0x02 ;1 [53]   6-1 brlo unstuff6 ;1 [54] ;<---//---> bld shift, 7 ;1 [60] didUnstuff7: cpi shift, 0x04 ;1 [61]   7-2 brsh rxLoop ;3 [63] unstuff7: 

6 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдореБрдЦреМрдЯрд╛ рд╕рдВрдЦреНрдпрд╛ 0b01111110 (0x7E) рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд░ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 0 рдмрд┐рдЯ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ рд╕рд░рдгреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдореЗрдВ [45], рдПрдХ рдореБрдЦреМрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реБрдкрд░рд┐рдВрдкреЛрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ 7 рдмрд┐рдЯреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдмрд┐рдЯреНрд╕ 1-6 рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рдФрд░ 0 рд╡реЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рдпрд╣реА рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдореВрд▓реНрдп 0 рдпрд╛ 1 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ "2 рд╕реЗ рдХрдо" [53, 54] рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред


рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ 7 рд╡реЗрдВ рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: 0xFC рдорд╛рд╕реНрдХ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, "4 рд╕реЗ рдХрдо" [61, 63] рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЪрд░рдг 7. рдкреИрдХреЗрдЬ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ


рдЪреВрдБрдХрд┐ рд╣рдо 0x2D (SETUP) рдХреЗ рдмрд░рд╛рдмрд░ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ (PID) рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдХреЛ рдЫрд╛рдБрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рд╡реИрд╕реЗ, рдореИрдВрдиреЗ ACK рд╣реЛрдиреЗ рдкрд░ рдкреИрдХреЗрдЬ рдХреЛ 0x2D SETUP рдХреНрдпреЛрдВ рдХрд╣рд╛? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдХ рддрдХ рдпреВрдПрд╕рдмреА рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рднреАрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдЗрдЯ рдирд╣реАрдВ, рдЬрдмрдХрд┐ рд╣рдо рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд╛рдЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░, рдкреАрдЖрдИрдбреА, рдХреЗрд╡рд▓ 4 рдмрд┐рдЯреНрд╕ рд▓реЗрддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж 4 рдФрд░ CHECK рдмрд┐рдЯреНрд╕, PID рдлрд╝реАрд▓реНрдб рдХреЗ рдПрдХ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдЗрдирд╡рд░реНрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рд╛рдкреНрдд рдкрд╣рд▓реА рдмрд╛рдЗрдЯ PID + CHECK рдирд╣реАрдВ рд╣реЛрдЧреА, рдмрд▓реНрдХрд┐ CHECK + PID рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдирд┐рдмрд▓реНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рддреБрд░рдВрдд, рд╣рдо рдореБрдЦреНрдп рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ usbconfig.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╣рдордиреЗ рдЕрднреА рддрдХ рдкреАрдЖрдИрдбреА тАЛтАЛрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рддреЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдШрдбрд╝рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░реЗрдЦрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреИрдХреЗрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ asmcommon.inc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рд╣реЛрдЧрд╛ рдЬреЛ рдЖрд╡реГрддреНрддрд┐ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдХреЗрд╡рд▓ рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВред
рдЕрдм рдкреНрд░рд╛рдкреНрдд рдкреИрдХреЗрдЯ рдХреЛ рдЫрд╛рдБрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
USB рдмрд╕ рдкрд░ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ рдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рд╣реЛрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдХрд░ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореЗрдЬрдмрд╛рди рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (SETUP), рдбреЗрдЯрд╛ (OUT) рднреЗрдЬреЗрдВ рдпрд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (IN)ред рдорд╛рд░реНрдХрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рджреЛ рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд░рд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ (DATA0 рдпрд╛ DATA1) рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдорд╛рд░реНрдХрд░ рдкреИрдХреЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрд╕реНрдЯ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд▓рдВрдмрд╛рдИ рдореЗрдВ рджреЛ рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдФрд░ рдард╣рд░рд╛рд╡ рдФрд░ рдЬрд╡рд╛рдм рд╣реИ, рдПрдХ рдкреБрд╖реНрдЯрд┐ рдкреИрдХреЗрдЯ (ACK, NAK, STALL, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдФрд░ рд╕рдордп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ)ред
рд╕реЗрдЯрдЕрдкDATA0рд╣рд╛рде рдорд┐рд▓рд╛рдирд╛
рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░рдард╣рд░рд╛рд╡рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░рдард╣рд░рд╛рд╡рдбрд┐рд╡рд╛рдЗрд╕-> рд╣реЛрд╕реНрдЯ

рдмрд╛рд╣рд░DATA0 / DATA1рд╣рд╛рде рдорд┐рд▓рд╛рдирд╛
рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░рдард╣рд░рд╛рд╡рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░рдард╣рд░рд╛рд╡рдбрд┐рд╡рд╛рдЗрд╕-> рд╣реЛрд╕реНрдЯ

рдореЗрдВDATA0 / DATA1рд╣рд╛рде рдорд┐рд▓рд╛рдирд╛
рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░рдард╣рд░рд╛рд╡рдбрд┐рд╡рд╛рдЗрд╕-> рд╣реЛрд╕реНрдЯрдард╣рд░рд╛рд╡рдпрдЬрдорд╛рди-> рдпрдВрддреНрд░


рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЙрд╕реА рддрд░реНрдЬ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдореЗрдЬрдмрд╛рди рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдФрд░ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рдмреАрдЪ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рджреЛ-рдмрд┐рдЯ рд╡рд┐рд▓рдВрдм рдареАрдХ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдкреБрд╢-рдкреБрд╢ рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рди рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдмрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рддреЛ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬ рд╣реИрдВред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдкреАрдЖрдИрдбреА тАЛтАЛрдмрд╛рдЗрдЯ рдХрд╛ рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓, рдбрд┐рд╡рд╛рдЗрд╕ рдЕрднреА рддрдХ рдПрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реЗ рдЖрджрд┐рдо рдкреИрдХреЗрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдореЗрдЬрдмрд╛рди рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, IN рдЬреИрд╕реА рдХрдорд╛рдВрдб рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ SETUP рдФрд░ OUT рдХрдорд╛рдВрдб рдХреЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдПрд▓ рдИ рдбреА рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВрдЧреЗред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмреАрдЪ рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рд▓реЙрдЧреНрд╕ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХрд╣реАрдВ рдореБрдЦреНрдп рдореЗрдВред


рд╣рдо рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЬреЛ рд╣реБрдЖ рдЙрд╕рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:


 2D|80|06|00|01|00|00|40|00 C3|80|06|00|01|00|00|40|00 2D|80|06|00|01|00|00|40|00 C3|80|06|00|01|00|00|40|00 

рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рджреЛрдиреЛрдВ рдЬрд▓рддреЗ рдПрд▓рдИрдбреАред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ SETUP рдФрд░ OUT рдХреЛ рдкрдХрдбрд╝рд╛ред


рдЪрд░рдг 8. рд▓рд┐рдлрд╛рдлреЗ рдкрд░ рдкрддрд╛ рдкрдврд╝реЗрдВ


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
рдорд╛рд░реНрдХрд░ рдкреИрдХреЗрдЯ (SETUP, IN, OUT) рди рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдмрд╕ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рднреА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдмрдлрдВрдХреНрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡реЗ рдорддрджрд╛рди рдХреА рдЖрд╡реГрддреНрддрд┐, рд╡рд┐рдирд┐рдордп рджрд░ рдФрд░ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╣рддреЗ рд╣реИрдВ, рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ USB-COM рдПрдбрд╛рдкреНрдЯрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдмрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдкреЛрд░реНрдЯ (рдкреНрд░рдердо рдЕрдВрдд рдмрд┐рдВрджреБ) рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреЛрд░реНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдмрд╕ (рджреВрд╕рд░рд╛) рдкрд░ рднреЗрдЬрдирд╛ рд╣реИред рдЕрд░реНрде рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдордп-рд╕рдордп рдкрд░, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдореЗрдЬрдмрд╛рди рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд░реЗрдЦрд╛ рдХреА рд╕реНрдерд┐рддрд┐ (рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░рдЯреАрдПрд╕, рдбреАрдЯреАрдЖрд░, рдЖрджрд┐) рдФрд░ рд╡рд┐рдирд┐рдордп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЧрддрд┐, рд╕рдорд╛рдирддрд╛) рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдордп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ USB-COM рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо 3 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ ...
рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЕрдкрдирд╛ рдкрддрд╛ рдХреНрдпреЛрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдЕрднреА рднреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреЛрд░реНрдЯ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд┐рдкрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдпреВрдПрд╕рдмреА рд╣рдм рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдХрд╛рдлреА "рдЧреВрдВрдЧреЗ" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдЫрдВрдЯрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдореЗрдЬрдмрд╛рди рд╕реЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдЦреБрдж рдЗрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛, рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдпрд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛ред
рддреЛ, рдбрд┐рд╡рд╛рдЗрд╕ рдПрдбреНрд░реЗрд╕ рдФрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрддрд╛ рджреЛрдиреЛрдВ рд╣реА рдорд╛рд░реНрдХрд░ рдкреИрдХреЗрдЯ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИрдВред рдРрд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИ:
рдореИрджрд╛рди
рдореИрджрд╛рдирд╕рдордиреНрд╡рдпрдиaddrendpointрд╕реАрдЖрд░рд╕реАEOP
USB рдмрд┐рдЯреНрд╕0-7012345601230123401
рдмрд┐рдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛0123456701234567


, - ( - PID = SETUP OUT) (IN) , .

, (-) (Handshake) :


  • : , , NAK
  • -: SETUP OUT, , IN тАФ ,
  • . , , ,

┬л тАФ ┬╗ . PID', , . ┬лPID┬╗ . usbCurrentTok. PID' (DATA0, DATA1) , . , ? : , ( 0 usbCurrentTok ), , . ( SE0) , - , D+, D- . , SYNC, . , , . ┬л┬╗ , . .


, . x3, (, , , ).


, USB , , . , , , CRC ( ). , [21]. 0- . , [26]. , CRC, .


9.


, , ┬л ┬╗, ACK. NAK', ( cnt тАФ ). USB , , SYNC PID. Y, cnt ( ). , тАФ ACK. x3 тАФ 1 , . x3 ( r20) 20.


( SETUP, ), ACK' , , , . , .


, D+, D- ( ), тАФ . XOR , , , , - .


, , , , . , , , . . vusb : txBitloop 2 ([00], [08]). 3 , 6 . , . 1 3 : 171. ( 171, 11 , ), тАФ , . cnt=4:


4 тАФ 171 = -167 = ( ) 89 (+ )
89 тАФ 171 = -82 = ( ) 174 (+ )
174 тАФ 171 = 3. ,
, .


, 3 , 1. 6 , , x4. D+, D- , . .
:


 2D|80|06|00|01|00|00|40|00 69|00|10|00|01|00|00|40|00 

C3 . , , UART . , , IN , . , .


10. NAK


NAK , . , . , - .


, . , , - , . usbRxBuf, . , тАФ , USB_BUFSIZE. usbInputBufOffset, . .


NAK handleData , [22]. (usbRxLen), - . ( тАФ ), usbRxLen, , тАФ usbRxToken, SETUP OUT - . : , , ACK .


. , , - , -, . ? , , , , - .


,


 2D|80|06|00|01|00|00|40|00 

, NAK`, , .


11.


, , . тАФ . , , , , , . . . , USB, usbPoll. тАФ , . тАФ . SETUP , PID CRC, SETUP 5- , 16-. 3 ┬л┬╗ . ┬л┬╗ PID usbRxToken, CRC , , . usbProcessRx, , .


, , тАФ , SE0. , USB .


. SETUP, . . SETUP usbRequest_t 8 . : ( USB-) , - . , . .
, , , .


12. SETUP'


, , . . usbDriverSetup, . , . , ( , , ) . , : ACK NAK, .


13.


, SETUP + DATAx, DATAx 8 . IN DATAx, . , . , ACK NAK. , . тАФ usbTxBuf, , usbTxLen . low-speed USB 8 ( PID, CRC), usbTxLen 11. PID, , . , 16, , 0x0F, . PID , . IN, , (handshake , ).


:
SETUP + DATAx, ACK NAK . , , usbPoll, , ( PID=DATA1 ( DATA0 DATA1 , , DATA1). CRC . , , - . тАФ 4 . , 3 , 4. , SYNC . ┬л IN NAK?┬╗ NAK. , , DATA1 .


, тАФ USBRQ_SET_ADDRESS ( , ). . (drvsdm.S, make SE0). , , , DATA1 , , . , , , , , . , , .


14.


, . , USBRQ_GET_DESCRIPTOR USBRQ_SET_ADDRESS, , . usbDriverDescriptor, . , USBRQ_GET_DESCRIPTOR. , , :


USBDESCR_DEVICE тАФ : USB (1.1 ), , , . .
USBDESCR_CONFIG тАФ , , . .
USBDESCR_STRING тАФ , .
, , USBDESCR_DEVICE, , .


15.


. -, . , - - , , HID, , . Vendor ID Product ID, USB, . , vusb .


, , - . , , , (, ) usbMsgPtr, тАФ len, usbMsgLen. ( ) 18 , 8. , , 3 . - , STALL.


usbDeviceRead. , memcpy_P, , , .


, , , . , , .


, , .



PID' DATA0 DATA1 . PID' , , - .

, DATA0 / DATA1 ( ), , , 3 , . XOR PID', . , , XOR' . PID DATA1, XOR PID , XOR DATA0 .


, , USBDESCR_CONFIG.


16. - !


USBDESCR_CONFIG USBDESCR_DEVICE. ( , ) . , - USB-, , D+, D-.


, : , , . , ( , ). , UTF-16, . USB UTF-8 .


vusb , lsusb . VID, PID , . , VID, PID, тАФ .


, , ( ). SETUP: , , . 0, , тАФ . , , , .
.


17. (HID)



HID тАФ human interface device, , , . HID , . , , , , , . ┬л┬╗ . HID ( low-speed 800 ), .

HID , USBDESCR_HID_REPORT. vusb, . , usbDriverSetup ( ) usbFunctionSetup ( ). , SETUP, OUT. , , , usbFunctionWrite.


, usbDeviceRead usbFunctionRead, . , , usbFunctionSetup ( , ) USB_FLG_USE_USER_RW, usbDriverSetup .


тАФ тАФ usbFunctionWrite usbFunctionRead. . тАФ , .


usbDriverSetup.


18.


, , . HID, , , ( udev - ). , , . , , , .
UPD: ramzes2 , HIDAPI


.


19. vusb


vusb , .


drvasm.S - usbdrvasm.S asmcommon.inc, -, , usbdrvasm12.inc тАФ usbdrvasm20.inc.


main.c main.c ( ) usbdrv.c ( vusb)
usbconfig.h ( ), , , usbconfig.h.


рдирд┐рд╖реНрдХрд░реНрд╖


vusb, , , . , , . . , , , USB-HID. , , , vusb, , , , .



https://www.obdev.at/products/vusb/index.html ( vusb)
http://microsin.net/programming/arm-working-with-usb/usb-in-a-nutshell-part1.html
.. USB:
https://radiohlam.ru/tag/usb/
http://we.easyelectronics.ru/electro-and-pc/usb-dlya-avr-chast-1-vvodnaya.html
http://usb.fober.net/cat/teoriya/


PS - (, ) ,

Source: https://habr.com/ru/post/hi460815/


All Articles