рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ UART рдФрд░ USB рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреАрди рдФрд░ рдврд╛рдИ рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдкрд░ рдлрд╝реЛрд▓реНрдбрд░ рд░реЗрдХрд┐рдВрдЧ рдХреА рдФрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд╢рд┐рд▓реНрдк рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИред рдЬрдм рдореИрдВрдиреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдпрд╛, рддреЛ рдкреАрд╕реА рд╕реЗ рдЕрдкрдиреЗ рд╢рд┐рд▓реНрдк рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╡рд┐рдЪрд╛рд░ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рдорд┐рд▓рдиреЗ рд▓рдЧреЗ, рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВ рдЗрд╕ рдкреАрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрд╛ред рдпрд╣ рдЖрдХрд░реНрд╖рдХ рдФрд░ "рдЧрдВрднреАрд░" рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЕрдм рдореИрдВ рддреБрд░рдВрдд рд▓реЛрд╣реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВ рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдкреИрд░реЛрдВ рдХреЛ рджрд░реНрдж рд░рд╣рд┐рдд рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рд╢реВрдЯ рдХрд░реВрдВрдЧрд╛ред рдкреНрд░реЛрдЯреАрди рдиреЗ рд╣рдореЗрд╢рд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдорджрдж рдХреА рд╣реИред рджрд░реНрдЬрдиреЛрдВ рдмрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ рдХрд┐ рдЖрдк рдЖрд░рд╛рдо рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдореИрдВ рдРрд╕рд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдмрд╛рдж рдореЗрдВ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд░рд╛рдВрдбреЗрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдЦрд░реАрджреА рдФрд░ рдкреНрд░реЛрдЯреАрд╕ рдореЗрдВ, рдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ - рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ UART рдФрд░ USB рдФрд░ рдлрд┐рд░ рдИрдерд░рдиреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЗрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ" рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред рдкреНрд░реЛрдЯрд┐рдпрд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдиреЗ рд░рд╣реЗ - рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рднрд╛рдЧ рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдЙрди рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧреА рдЬреЛ рдЕрдкрдиреЗ рдпреВрдПрд╕рдмреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдпрд╛ рд╕рд┐рд░реНрдл рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рддреБрд░рдВрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдПрдХ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рдПрдВ - Google рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛, рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдмреЗрд╣рддрд░ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореИрдВ рд░рдЬрд┐рд╕реНрдЯрд░, рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдореЗрдВ рдЖрдЧ рдЬрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд╢рд╛рдпрдж рдХреЛрдИ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЗрд╕ рдмреЗрд╣рдж рдЖрдХрд░реНрд╖рдХ рдХрд╛рдо рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рджрд╡рд╛ рд╣реИ)ред рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк eBay рдкрд░ рджреМрдбрд╝реЗрдВ рдпрд╛ рдЪреАрди рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдмреЛрд░реНрдб рднреЗрдЬрдиреЗ рдХреЗ рджрд┐рдиреЛрдВ рдХреА рдЧрд┐рдирддреА рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдк рд╡рд░реНрдЪреБрдЕрд▓ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЕрдкрдирд╛ рд╣рд╛рде рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рджреЛ рдЕрдЬреАрдмреЛрдЧрд░реАрдм рджреБрдирд┐рдпрд╛ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдХрд┐, рдорд╛рдирдХ рдПрд▓рдИрдбреА рдкрд┐рдВрдХрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдХрдЯ рдХреЗ рддрд╣рдд рдмрд╣реБрдд рд╕рд╛рд░реА рдЫрд╡рд┐рдпрд╛рдВред

рдкрд╛рда рдореЗрдВ рд╡рд┐рд╡рд░рдг рдФрд░ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг PIC18F4550 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдПрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдФрд░ STM8 / 32 8 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рднреА рдЧрд╛рдпрдм рд╣реИрдВред
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдорд┐рдХрд░реЛрд▓реЗрдХреНрдЯреНрд░реЛрдирд┐рдХрд╛ рд╕реЗ mikroC рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдорд┐рд▓рд╛ред

рдкреНрд░реЛрдЯреАрди рдФрд░ MCU рдмрд╛рдЗрдВрдбрд┐рдВрдЧ



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



рдпреВ (рдПрд╕) рдПрдЖрд░рдЯреА



рд╡рд┐рд╖рдп рдкреАрдЯрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рджреЗрдВред
рдкреЛрдЯреАрди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдордирдорд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
COMPIM рдореЙрдбреНрдпреВрд▓ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдПрдХ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд▓ рдореЙрдбреЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╣рд╛рдпрдХ рдпрд╣рд╛рдБ рдореБрдлреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ com0com рд╣реИ ред
рд╣рдо рд╡рд╣рд╛рдВ рджреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдкреЛрд░реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ COM 3 рдФрд░ 4 рд╣реИред рдПрдХ рдкреНрд░реЛрдЯреАрди рдкреНрд░реЛрдЯреАрдо рдХрдВрдкреАрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдмрд╛рд╣рд░" рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛ


рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ devmgmt.msc рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░)


рдЕрдм рд╕рдм рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдПрдБ
char uart_rd; void main() { UART1_Init(9600); UART1_Write_Text("Hello Habrahabr"); UART1_Write(10); UART1_Write(13); for(;;) { if(UART1_Data_Ready()) { uart_rd = UART1_Read( ); switch(uart_rd) { case 0xD: UART1_Write(10); UART1_Write(13); break; default: UART1_Write(uart_rd); break; } } } } 



COMPIM рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ)ред
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ com0com COM3 / COM4 рдкреЛрд░реНрдЯ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ


рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рддреНрд░ рд╕рдВрд▓рдЧреНрди рдХрд░реВрдБрдЧрд╛


рд╣рдо рдкреЛрдЯреАрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕реАрд░рд┐рдпрд▓ рдореЛрдб рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ COM4 рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЕрдм ... рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ - рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛
рд╣рдо рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣рдореЗрдВ рд╡рд╛рдкрд╕ рдЧреВрдВрдЬрддрд╛ рд╣реИред рдПрдВрдЯрд░ рджрдмрд╛рдХрд░ рд╣рдо рдЧрд╛рдбрд╝реА + рдирдИ рд▓рд╛рдЗрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред
рдмреИрдХрд╕реНрдкреЗрд╕ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рддреБрд░рдВрдд рд╣рд╛рдЗрдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рдпрд╛рдж рдЖрдпрд╛, рдШрдВрдЯреЛрдВ рддрдХ рдПрдХ рдЯреЗрд▓реАрдлреЛрди рд▓рд╛рдЗрди рдкрд░ рдХрдмреНрдЬрд╛ ...


рдЕрдм рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЖрджрд┐рдо рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
 #define CRLF UART1_Write(10);UART1_Write(13) char uart_rd = 0; char cmd[32] = {0}; int char_counter = 0; void cmd_exec(void) { if (strstr(cmd, "hello")) { UART1_Write_Text("EHLO"); CRLF; } else if (strstr(cmd, "test")) { UART1_Write_Text("TSET"); CRLF; } else { UART1_Write_Text("Unknown command"); CRLF; } char_counter=0; memset(cmd, 0, sizeof cmd); } void main(void) { UART1_Init(9600); UART1_Write_Text("MCU started"); UART1_Write(10); UART1_Write(13); for(;;) { if(UART1_Data_Ready()) { uart_rd = UART1_Read( ); switch(uart_rd) { case 0xD: CRLF; cmd_exec(); break; default: UART1_Write(uart_rd); break; } cmd[char_counter++] = uart_rd; if(char_counter == (sizeof cmd - 1)) { CRLF; cmd_exec(); } } } } 



рдпреВрдПрд╕рдмреА рдЫрд┐рдкрд╛рдИ



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

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


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреВрд░реНрдг-рдкреВрд░реНрдг USB 2.0 рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ PLL рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреАрди рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ 96 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рддрд╣рдд, рдорд╛рд╕реНрдЯрд░ рдСрд╕рд┐рд▓реЗрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (PIC рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛
рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдБ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдЫрд╡рд┐


рд╡рд░реНрдгрдирдХрд░реНрддрд╛


рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдЪрд▓реВрдВ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░реВрдВред рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рдореЗрдВ usb.org рд╕реЗ рдЕрдВрддрд╣реАрди рдкреАрдбреАрдПрдл рдореЗрдВ рдХрд╣рд╛рдВ рдЦреЛрджрдирд╛ рд╣реИ

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "рдорд╛рдирдХ" рдбрд┐рдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рд╣реИрдВ:
рд╣рдордиреЗ VID / PID рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ 8 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдХреАрдмреЛрд░реНрдб" рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рднреА рдЪрд░ рдирд╛рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВред

рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рд╡ рдХреЛрдб рд╣реА, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб
 const unsigned int USB_VENDOR_ID = 0xdead; const unsigned int USB_PRODUCT_ID = 0xbeaf; const char USB_SELF_POWER = 0x80; // Self powered 0xC0, 0x80 bus powered const char USB_MAX_POWER = 50; // Bus power required in units of 2 mA const char HID_INPUT_REPORT_BYTES = 8; const char HID_OUTPUT_REPORT_BYTES = 8; const char USB_TRANSFER_TYPE = 0x03; //0x03 Interrupt const char EP_IN_INTERVAL = 1; const char EP_OUT_INTERVAL = 1; const char USB_INTERRUPT = 1; const char USB_HID_EP = 1; const char USB_HID_RPT_SIZE = 63; /* Device Descriptor */ const struct { char bLength; // bLength - Descriptor size in bytes (12h) char bDescriptorType; // bDescriptorType - The constant DEVICE (01h) unsigned int bcdUSB; // bcdUSB - USB specification release number (BCD) char bDeviceClass; // bDeviceClass - Class Code char bDeviceSubClass; // bDeviceSubClass - Subclass code char bDeviceProtocol; // bDeviceProtocol - Protocol code char bMaxPacketSize0; // bMaxPacketSize0 - Maximum packet size for endpoint 0 unsigned int idVendor; // idVendor - Vendor ID unsigned int idProduct; // idProduct - Product ID unsigned int bcdDevice; // bcdDevice - Device release number (BCD) char iManufacturer; // iManufacturer - Index of string descriptor for the manufacturer char iProduct; // iProduct - Index of string descriptor for the product. char iSerialNumber; // iSerialNumber - Index of string descriptor for the serial number. char bNumConfigurations; // bNumConfigurations - Number of possible configurations } device_dsc = { 0x12, // bLength 0x01, // bDescriptorType 0x0200, // bcdUSB 0x00, // bDeviceClass 0x00, // bDeviceSubClass 0x00, // bDeviceProtocol 8, // bMaxPacketSize0 USB_VENDOR_ID, // idVendor USB_PRODUCT_ID, // idProduct 0x0001, // bcdDevice 0x01, // iManufacturer 0x02, // iProduct 0x00, // iSerialNumber 0x01 // bNumConfigurations } ; /* Configuration 1 Descriptor */ const char configDescriptor1[]= { // Configuration Descriptor 0x09, // bLength - Descriptor size in bytes 0x02, // bDescriptorType - The constant CONFIGURATION (02h) 0x29,0x00, // wTotalLength - The number of bytes in the configuration descriptor and all of its subordinate descriptors 1, // bNumInterfaces - Number of interfaces in the configuration 1, // bConfigurationValue - Identifier for Set Configuration and Get Configuration requests 0, // iConfiguration - Index of string descriptor for the configuration USB_SELF_POWER, // bmAttributes - Self/bus power and remote wakeup settings USB_MAX_POWER, // bMaxPower - Bus power required in units of 2 mA // Interface Descriptor 0x09, // bLength - Descriptor size in bytes (09h) 0x04, // bDescriptorType - The constant Interface (04h) 0, // bInterfaceNumber - Number identifying this interface 0, // bAlternateSetting - A number that identifies a descriptor with alternate settings for this bInterfaceNumber. 2, // bNumEndpoint - Number of endpoints supported not counting endpoint zero 0x03, // bInterfaceClass - Class code 0, // bInterfaceSubclass - Subclass code 0, // bInterfaceProtocol - Protocol code 0, // iInterface - Interface string index // HID Class-Specific Descriptor 0x09, // bLength - Descriptor size in bytes. 0x21, // bDescriptorType - This descriptor's type: 21h to indicate the HID class. 0x01,0x01, // bcdHID - HID specification release number (BCD). 0x00, // bCountryCode - Numeric expression identifying the country for localized hardware (BCD) or 00h. 1, // bNumDescriptors - Number of subordinate report and physical descriptors. 0x22, // bDescriptorType - The type of a class-specific descriptor that follows USB_HID_RPT_SIZE,0x00, // wDescriptorLength - Total length of the descriptor identified above. // Endpoint Descriptor 0x07, // bLength - Descriptor size in bytes (07h) 0x05, // bDescriptorType - The constant Endpoint (05h) USB_HID_EP | 0x80, // bEndpointAddress - Endpoint number and direction USB_TRANSFER_TYPE, // bmAttributes - Transfer type and supplementary information 0x40,0x00, // wMaxPacketSize - Maximum packet size supported EP_IN_INTERVAL, // bInterval - Service interval or NAK rate // Endpoint Descriptor 0x07, // bLength - Descriptor size in bytes (07h) 0x05, // bDescriptorType - The constant Endpoint (05h) USB_HID_EP, // bEndpointAddress - Endpoint number and direction USB_TRANSFER_TYPE, // bmAttributes - Transfer type and supplementary information 0x40,0x00, // wMaxPacketSize - Maximum packet size supported EP_OUT_INTERVAL // bInterval - Service interval or NAK rate } ; const struct { char report[]; } hid_rpt_desc = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19, 0xe0, // USAGE_MINIMUM 224(Keyboard LeftControl) 0x29, 0xe7, // USAGE_MAXIMUM 231(Keyboard Right GUI) (left and right: alt, shift, ctrl and win) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) 0x95, 0x08, // REPORT_COUNT (8) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x08, // REPORT_SIZE (8) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x95, 0x05, // REPORT_COUNT (5) 0x75, 0x01, // REPORT_SIZE (1) 0x05, 0x08, // USAGE_PAGE (LEDs) 0x19, 0x01, // USAGE_MINIMUM (Num Lock) 0x29, 0x05, // USAGE_MAXIMUM (Kana) 0x91, 0x02, // OUTPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x03, // REPORT_SIZE (3) 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) 0x95, 0x06, // REPORT_COUNT (6) 0x75, 0x08, // REPORT_SIZE (8) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x65, // LOGICAL_MAXIMUM (101) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) 0x81, 0x00, // INPUT (Data,Ary,Abs) 0xc0 // END_COLLECTION } ; //Language code string descriptor const struct { char bLength; char bDscType; unsigned int string[1]; } strd1 = { 4, 0x03, { 0x0409 } } ; //Manufacturer string descriptor const struct{ char bLength; char bDscType; unsigned int string[10]; } strd2={ 22, //sizeof this descriptor string 0x03, { 'H','a','b','r','a','h','a','b','r' } } ; //Product string descriptor const struct{ char bLength; char bDscType; unsigned int string[15]; } strd3={ 32, //sizeof this descriptor string 0x03, { 'H','a','b','r','a','K','e','y','b','o','a','r','d' } } ; //Array of configuration descriptors const char* USB_config_dsc_ptr[1]; //Array of string descriptors const char* USB_string_dsc_ptr[3]; void USB_Init_Desc(){ USB_config_dsc_ptr[0] = &configDescriptor1; USB_string_dsc_ptr[0] = (const char*)&strd1; USB_string_dsc_ptr[1] = (const char*)&strd2; USB_string_dsc_ptr[2] = (const char*)&strd3; } 



рдпрд╣ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдЯрд╛рдЗрдк рдХрд░реЗрдЧрд╛
 unsigned short USBResponse[8] = { 0} absolute 0x500; unsigned short USBCommand[8] = {0} absolute 0x508; char *text="habrahabr"; int i = 0; void interrupt(void) { USB_Interrupt_Proc( ); } void clrUSB(void) { memset(USBCommand, 0, sizeof USBCommand); while ( !HID_Write(&USBCommand, sizeof USBCommand)); } void main(void) { ADCON1 |= 0x0F; CMCON |= 7; HID_Enable(&USBResponse, &USBCommand); delay_ms(1000); for (i=0; i < strlen(text); i++) { USBCommand[2] = text[i] - 93; while ( !HID_Write(&USBCommand, sizeof USBCommand)); clrUSB(); delay_ms(200); } } 



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдХрд╛рдо рд╕рдВрдмрдВрдзрд┐рдд рдмрдлрд░ рдореЗрдВ рднрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреАрд╕реА рдкрд░ рднреЗрдЬрдиреЗ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред UART рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдХрд╛рдо рдмрд╛рдзрд┐рдд рджрд┐рдирдЪрд░реНрдпрд╛ рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдПрдЪрдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред
рдпрд╣рд╛рдВ рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдХреИрди рдХреАрдмреЛрд░реНрдб рдХреЛрдб ASCII рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдУрд╡рд░рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рд╣реИ), рдореИрдВрдиреЗ рдЗрд╕ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХ рдЖрджрд┐рдо рддрд░реАрдХреЗ рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдХреЗрд╡рд▓ рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рд╡реЗ рд╕реНрд╡рдпрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдХреЗрд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХрд╛рдо рдкрд░, рдПрдХ рд╡рд╛рдпрд░рд▓реЗрд╕ рдХреАрдмреЛрд░реНрдб рдПрдХреНрд╕рдЯреЗрдВрдбрд░ - рд╣рдорд╛рд░реЗ рдбреА-рд▓рд┐рдВрдХ рдХреЗрд╡реАрдПрдо рдпреВрдПрд╕рдмреА рд╡рд╛рдпрд░рд▓реЗрд╕ рдмрдВрдбрд▓реЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рдФрд░ рдбрд┐рд╕реНрдкреИрдЪрд░ рдореЗрдВ рд╣рдорд╛рд░реА рдбрд┐рд╡рд╛рдЗрд╕ рджрд┐рдЦрд╛рдИ рджреА


рдЕрдм рдЖрдк рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХреБрдЫ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред
8 рдмрд╛рдЗрдЯреНрд╕ рдХреАрдмреЛрд░реНрдб I / O рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВ:

0 рд╕рдВрд╢реЛрдзрдХ
1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛
реи рдХреА рез
рей рдХреБрдВрдЬреА реи
рек рдХреБрдВрдЬреА рей
рел рдХреБрдВрдЬреА рек
рем рдХреБрдВрдЬреА рел
рдХреБрдВрдЬреА рем

рд╕рдВрд╢реЛрдзрдХ, рдпреЗ рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рд╣реИрдВ Ctrl, Shift, Altред рд╡реЗ рд╕рдВрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП Ctrl Alt Del:

рд╕рдВрд╢реЛрдзрдХ: 0b00000 101 Ctrl , Shift, Alt
рдХреБрдВрдЬреА рдХреЛрдб: 0x4c (рдХреБрдВрдЬреА рд╣рдЯрд╛рдПрдВ)

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

рдИрдерд░рдиреЗрдЯ



рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореИрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдореИрдВ рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрдКрдВрдЧрд╛ред
рдпрд╣рд╛рдБ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреАрди ENC28J60 рдФрд░ RTL8019 рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕рдПрдо рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, рд╡рд╣реА рдЪрд┐рдк рдЬрд┐рд╕реЗ рд╣рдо рд╕рднреА рдмрдЬрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рдереЗред рдИрдПрдирд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд░реНрдгрд┐рдд рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдореНрдорд╛рдирд┐рдд рд▓рд╛рдЗрдлрд╝реЗрд▓рд╡рд░ рдЙрд░реНрдл тАЛтАЛрд░реЗрдбрд╢ рдиреЗ рд▓рдВрдмреЗ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдКрдм рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, 8019 рдХреЛ рд▓реЗрдВ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рд╡рд╣ Z80 рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

USB рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм WinPCAPред рд╡реЗ USB рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВред рдпрд╛ рд╕рд╛рдЗрдЯ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 192.168.95.1 рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ UART рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╕реБрдЭрд╛рд╡: рдпрджрд┐ рдЖрдк рдкрд╛рда рд▓реЗрдмрд▓ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИрдВ, рддреЛ рдШрдЯрдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рд░рдЦреЗрдВ


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



рдЕрдЧрд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИред 8019 рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЪрд╛рд▓рдХ рдЕрднреА рддрдХ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдмрдбрд╝реЗ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХрд╡рд╛рдж рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдмрд┐рдирд╛ рднреА (рдЖрдИрдкреА рдкрддрд╛ рдЕрдм 0.0.0.0 рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ ICMP / рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рд╕рдмрдиреЗрдЯ рдкрд░ рдХреБрдЫ рдмрд╛рдПрдВ рдкрддреЗ рдХреЛ рдкрд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдЪрд┐рдк рдПрд▓рдИрдбреА рдкрд░ рдЦреБрд╢реА рд╕реЗ рдЭрдкрдХрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рдж, рдПрдХ рдирдП рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдПрдЖрд░рдкреА рддрд╛рд▓рд┐рдХрд╛ рдХреИрд╢ рдХреА рдЧрдИ рд╣реИред


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

рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдПрдХ рдЬрд▓рддреА рд╣реБрдИ рдЗрдЪреНрдЫрд╛ рд╣реИред

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


All Articles