рд╕рд┐рд▓рд┐рдХреЙрди рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдХреЗ рдЙрдкрдХрд░рдг рд╢реМрдХрд┐рдпрд╛ рд╣рд▓рдХреЛрдВ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдПрдЯрд▓рдо рдЬреИрд╕реЗ рдлреНрд▓реИрдЧрд╢рд┐рдк рд╕реЗ рджреВрд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рдкрд╛рд╕ TQFP рдкреИрдХреЗрдЬ рдореЗрдВ рдореБрдЦреНрдп рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рджреЛрдиреЛрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИрдВ рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдирд╢реНрд╡рд░ рдФрд░ рдпреВрдПрд╕рдмреА рдЯреВрд▓рд╕реНрдЯреАрдХ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ (рдЬреЛ рд╣рд╛рд▓ рд╣реА
рдореЗрдВ рд╣рдм рдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдереЗ ) рддрдХ рдХрд╛рдлреА рд╕реБрд▓рдн рд╣реИрдВред рдореИрдВрдиреЗ рдЦреБрдж рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рддрдХрдиреАрдХ рд╕реЗ рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд╕рд┐рд▓рдмрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдпреВрдПрд╕рдмреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордХреЗ рдХреЗ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд┐рд▓рд╛рдмреНрд╕ рдиреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо C8051F320DK рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдХреНрд░рдорд╢рдГ F32x рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде, USB рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП, рдФрд░ Keil рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг uVision4ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк USB рд╕рдВрдЪрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдкрд╣рд▓реБрдУрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдбрд┐рд╡рд╛рдЗрд╕ рдЯреЛрдкреЛрд▓реЙрдЬреА (рдореЗрдЬрдмрд╛рди рдпрд╛ рджрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕) рдореЗрдВ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕ рдЪрд░рд┐рддреНрд░ рдореЗрдВ рд╣реЛрдЧреАред
USB рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЪрд╛рд░ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг - рдЙрдирдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдбрд┐рд▓реАрд╡рд░реА рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рджрд░реЛрдВ рдореЗрдВ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рджрд╛рдпрд┐рддреНрд╡ рдХреЗ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣реИрдВред рдПрд░реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╕реЗ рдореБрдХреНрдд, рдкреВрд░реЗ рдмрд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдкреНрд░рд╕рд╛рд░рдгреЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдмрд╕реЗ рдХрдо рд╣реИ, рд╡реЗ рдмрд╕ рдХреЛ рднрд╛рд░реА рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рдЧрд╛рд░рдВрдЯреАрдХреГрдд рд╡рд┐рддрд░рдг - рдПрдХ рдЖрдХрд╕реНрдорд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рджреЛрд╣рд░рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд┐рдВрдЯрд░, рд╕реНрдХреИрдирд░, рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдПрд░рд┐рдпрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
- рдЗрдВрдЯрд░рдкреНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ - рдЫреЛрдЯреЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЬреЛ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╕рд╣рдЬ рд╣реИрдВ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реЗрд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╕реЗрд╡рд╛ рд╕рдордп рд╕реАрдорд╛ 10-255 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИ
рдХрдо, 1-255 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЧрддрд┐; рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░, 125 ╬╝s рднреА рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдирд┐рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдХреАрдмреЛрд░реНрдб рд╕реЗ рд╡рд░реНрдг рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдорд╛рдЙрд╕ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред - Isochronous рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдирд┐рд░рдВрддрд░ рд╕рдВрдЪрд░рдг, рдПрдХ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдбрд┐рд▓реАрд╡рд░реА рджреЗрд░реА рд╕рдордп рдХреЗ рд╕рд╛рде рдмрд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЗ рдкреВрд░реНрд╡-рд╕рд╣рдордд рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╡реЗ рдЖрдкрдХреЛ рдкреВрд░реНрдг рдЧрддрд┐ рд╕реЗ рдПрдХ рдЪреИрдирд▓ рдХреЛ 1.023 рдПрдордмреА / рдПрд╕ рдХреЗ рдмреИрдВрдб (рдпрд╛ 0.5 рдПрдордмреА / рдПрд╕ рдкрд░ рджреЛ) рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЙрдкрд▓рдмреНрдз рдмреИрдВрдб рдХреЗ 70% рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ (рд╢реЗрд╖ рдХрдо рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рдЪреИрдирд▓реЛрдВ рд╕реЗ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░, рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ 24 рдПрдордмреА / рдПрд╕ (192 рдПрдордмреА / рдПрд╕) рддрдХ рдХрд╛ рдЪреИрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рддреЛ рд╕рдордХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдорд╛рдиреНрдп рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП Isochronous рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛, рдбрд┐рдЬрд┐рдЯрд▓ рдСрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ (USB рд╕реНрдкреАрдХрд░, рдорд╛рдЗрдХреНрд░реЛрдлреЛрди), рдкреНрд▓реЗрдмреИрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдбреЗрдЯрд╛ (рд╕реАрдбреА рдФрд░ рдбреАрд╡реАрдбреА)ред
рдПрдордХреЗ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рджрд╛рд╕ рд╣реЛрдЧрд╛ред
рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХреА рддрд░рд╣ USB рд╕рдВрдЧрдд HID рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдирд╛
USB рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдкреНрд░рдХрд╛рд░ HID (рдорд╛рдирд╡ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕) рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрд╛ рдкреНрд░рдХрд╛рд░, рд░реБрдХрд╛рд╡рдЯ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐ USB рдХреАрдмреЛрд░реНрдб, рдЪреВрд╣реЗ, рдЬреЙрдпрд╕реНрдЯрд┐рдХ, рдореЙрдирд┐рдЯрд░ рд╕реЗрдЯрд┐рдВрдЧ рдкреИрдирд▓, рдмрд╛рд░рдХреЛрдб рд░реАрдбрд░, рдХрд╛рд░реНрдб рд░реАрдбрд░ рдЖрджрд┐ рд╣реИрдВред
HID рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдлрд╛рдпрджреЗ рд╣реИрдВ:
- рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрд╕рд╛рдиреА;
- рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб;
- рд╡рд┐рдВрдбреЛрдЬ рд╕рдкреЛрд░реНрдЯ (рдЕрддрд┐рд░рд┐рдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ)ред
рддреЛ, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓
рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдореИрдирд┐рдкреБрд▓реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореБрдХрд╛рдмрд▓рд╛ рдлрд░ (!) рдХреЗ рд▓рд┐рдП рджреЛ (рдпрд╛ рдЕрдзрд┐рдХ) рдмрдЯрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдереНрд░реЛрдЯрд▓ рд╕реНрдЯрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╣рдо рдЧреИрд░реЗрдЬ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВред C8051F320DK рдбреЗрдореЛ рдмреЛрд░реНрдб рдореЗрдВ рдПрдХ рдЪрд░ рдЕрд╡рд░реЛрдзрдХ рдФрд░ 2 рдмрдЯрди рд╣реИрдВ - рдиреНрдпреВрдирддрдо рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрддред
рд╕рд┐рд▓рдмреЙрд╡реНрд╕реНрдХреА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ HID рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓рд╛ USB рдорд╛рдЙрд╕ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕рдмрд╕реЗ рдорд╛рдирд╡реАрдп рдмрд╛рддрдЪреАрдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
- рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛;
- рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд╛рдо рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ред
рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рд╢реБрд░реВ
рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
code const hid_report_descriptor HIDREPORTDESC =
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x02, // USAGE_PAGE (Simulation Controls)
0x09, 0xbb, // USAGE (Throttle)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x02, // USAGE_MAXIMUM (Button 2)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x55, 0x00, // UNIT_EXPONENT (0)
0x65, 0x00, // UNIT (None)
0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0 // END_COLLECTION
}
рдЕрдм рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдЕрдиреБрднрд╛рдЧ
рд╕рд┐рдореБрд▓реЗрд╢рди рдирд┐рдпрдВрддреНрд░рдг (
рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЕрдиреБрдХрд░рдг) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ
рдереНрд░реЙрдЯрд▓ (рдереНрд░реЛрдЯрд▓ рд╕реНрдЯрд┐рдХ) рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ:
- рдорд╛рдиреЛрдВ рдХреА рд╕реАрдорд╛ рдЬрд┐рд╕рдореЗрдВ рдереНрд░реЙрдЯрд▓ рдЕрднрд┐рдирдп рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реИ LOGICAL_MINIMUM (0) рдФрд░ LOGICAL_MAXIMUM (255),
- рдЗрд╕ рд╢реНрд░реЗрдгреА (рдПрдХ рдмрд╛рдЗрдЯ) рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ - REPORT_SIZE (8) рдФрд░
- рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ REPORT_COUNT (1) рд╣реИред
рдмрдЯрди рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рдорд╛рди рдХрд╣рд╛рдиреА (USAGE_PAGE (
рдмрдЯрди )):
- рдорд╛рдиреЛрдВ рдХреА рд╢реНрд░реЗрдгреА LOGICAL_MINIMUM (0) рдФрд░ LOGICAL_MAXIMUM (1) рд╣реИ;
- рд░реЗрдВрдЬ рдЖрдХрд╛рд░ (рдПрдХ рдмрд┐рдЯ) - REPORT_SIZE (1);
- рдмрдЯрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдмрд╛рдЗрдЯ-рд▓рдВрдмрд╛рдИ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ REPORT_COUNT (8);
рдпрд╣ рд╕рдм рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдм рдпрд╣ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ 2 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред
рд╣рд╛рдБ, рдФрд░ рднреА, .h рдореЗрдВ рдРрд╕реА рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ, hid_report_descriptor рдШреЛрд╖рдгрд╛ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ:
#define HID_REPORT_DESCRIPTOR_SIZE 0x002C
#define HID_REPORT_DESCRIPTOR_SIZE_LE 0x2C00 //LITTLE ENDIAN
рдпрд╣рд╛рдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╕реНрд╡рдпрдВ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХрдВрдкреНрдпреВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛред
рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
www.usb.org (
HID Descriptor Tool ) рдкрд░ рд╕реНрдерд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХреБрдЫ HID рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ HID рдЙрдкрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреАрд╕реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рд╣рдо рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд╛рддреЗ рд╣реИрдВ:
void IN_Report(void){
IN_PACKET[0] = VECTOR;
IN_PACKET[1] = BUTTONS;
// point IN_BUFFER pointer to data packet and set
// IN_BUFFER length to transmit correct report size
IN_BUFFER.Ptr = IN_PACKET;
IN_BUFFER.Length = 2;
}
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдЙрд╕ рдкреИрдХреЗрдЯ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рддрдм рд╣рдорд╛рд░реЗ рдЯреНрд░рд┐рдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рдХреА рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ)ред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд▓рд┐рдЦреЗрдВ, рдЬреЛ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдВ рд╕реЗ рд╡реИрдХреНрдЯрд░ рдФрд░ рдмрдЯрди рд╡реЗрд░рд┐рдПрдмрд▓ рдорд┐рд▓рддреЗ рд╣реИрдВ (рджреЛрдиреЛрдВ, рд╡реИрд╕реЗ, рдЖрдХрд╛рд░ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ рд╣реИрдВ)ред
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ VECTOR рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЕрд╡рд░реЛрдз рдХреА рдШрдЯрдирд╛ рдХреЗ рджреМрд░рд╛рди ADC рд╕реЗ рдорд╛рди рджрд┐рдП рдЧрдП рд╣реИрдВ:
void ADC_Conver_ISR(void) interrupt 10
{
AD0INT = 0;
//
if( VECTOR != ADC0H)
LED = 1;
else
LED = 0;
VECTOR = ADC0H;
}
рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдмрдЯрди рднреА рдЗрд╕реА рддрд░рд╣ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИред рдмрдЯрди рдХреЛ рдЯрд╛рдЗрдорд░ рд╕реЗ рдмрд╛рдзрд┐рдд рдХрд░рдХреЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░реЗрдВред
void Timer2_ISR (void) interrupt 5
{
P2 &= ~Led_2;
if ((P2 & Sw1)==0) // #1
{
// pressed
BUTTONS = BUTTONS | (1<<0);
LED2 = 1;
}
else
{
// not pressed
BUTTONS = BUTTONS & 0xFE;
}
if ((P2 & Sw2)==0) // #2
{
// pressed
BUTTONS = BUTTONS | (1<<1);
LED2 = 1;
}
else
{
// not pressed
BUTTONS = BUTTONS & 0xFD;
}
TF2H = 0; // Timer2
}
рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░
рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╡рд╣ рдирд╛рдо рд╣реЛ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, тАЬJOYSTICK-HABR)тАЭред
рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рд╡рд░рдгрдХ
String2Desc рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ
рд▓рд┐рдЦреЗрдВ#define STR2LEN sizeof ("JOYSTICK-HABR") * 2
code const unsigned char String2Desc [STR2LEN] =
{
STR2LEN, 0x03,
'J', 0,
'O', 0,
'Y', 0,
'S', 0,
'T', 0,
'I', 0,
'C', 0,
'K', 0,
'-', 0,
'H', 0,
'A', 0,
'B', 0,
'R', 0,
};
рдЫрд┐рдкрд╛рдИ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд╣рдЪрд╛рди
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдпреВрдПрд╕рдмреА рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЛрд╕реНрдЯ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ HID рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЙрдЪрд┐рдд рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдХрдо рд╕рдВрдЪрд░рдг рдХреА рдЧрддрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЫрд┐рдкрд╛рдИ-рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдореБрдЦреНрдп рд╕реАрдорд╛ рд╣реИред рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдРрд╕реЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдбреЗрдЯрд╛ рдЕрдВрддрд░рдг рджрд░ 64 рдХреЗрдмреАрдкреАрдПрд╕ рд╣реИред рдпреВрдПрд╕рдмреА рдмрд╕ рдХреА рдкреВрд░реНрдг рдЧрддрд┐ рдХреЗ 12 рдПрдордмреАрдкреАрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрдХреЗрддрдХ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпреВрдПрд╕рдмреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЪреБрдирдиреЗ рдХреА рдмрд╛рдд рдЖрдиреЗ рдкрд░, рдПрдЪрдЖрдИрдбреА рддрдХрдиреАрдХ рдХреЗ рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рд╕рдВрдЪрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрдХреЗрддрд┐рдд рдЧрддрд┐ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд┐рдкрд╛рдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдкрдиреА рд╕рд╣реА рдЬрдЧрд╣ рд▓реЗрддреА рд╣реИред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, HID рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА USB- рд╕рдХреНрд╖рдо MK рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ рдЖрдк рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Silabs USBXpress рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реНрдг USB рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдПрдВ
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╡рд╣ рдХреНрд╖рдг рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдПрдордХреЗ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрд╕реА рд╕рдордп, рдореИрдВ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдФрд░ рдпрд╣ рд╕рдм рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдХреЗ рд╕рд╛рде рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдпреВрдПрд╕рдмреА рд╣реИрдВ рдФрд░ рдПрдХ рднреА COM рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдкрдХрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдЪрд┐рд╕ рд╕реЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЪрд┐рдк рдкрд░ рдпреВрдПрд╕рдмреА-рдпреВрдПрдЖрд░рдЯреА рдмреЛрд░реНрдб рдкрд░ рдореВрд░реНрддрд┐рдпрд╛рдВ FT232RL рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рддрдм рдерд╛ рдХрд┐ рд╕рд┐рд▓рдмрд╕ рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬрд▓рд╛рдК рд▓рдХрдбрд╝реА рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рджрд╛рдВрддреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ "рднрд╡рд┐рд╖реНрдп рдХреА рд░рд╛рд╣" рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдпреВрдПрд╕рдмреАрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдПрдордХреЗ рдФрд░ рд╣реЛрд╕реНрдЯ (рдкреАрд╕реА) рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреВрдПрд╕рдмреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рдпрдВ USB рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛ рдбреНрд░рд╛рдЗрд╡рд░ рд▓реЗрдЦрди рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЬреНрдЮрд╛рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╕рд┐рд▓рдмрд┐рдпреЛрдВ рдХреЛ рдЙрдирдХреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЧрд╛рдЗрдб рдХреА рдмрд╛рдд рдХрд░рдирд╛: рдХреЗрд╡рд▓ 30 рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдирд╛, рдпрд╣ рдмреЗрд╣рдж рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВ, рдмрд╣реБрдд рдХреБрдЯрд┐рд▓ рд╕реНрдерд╛рди рдЕрдХреНрд╕рд░ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкреАрд╕реА рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдорддреМрд░ рдкрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рдмреЗрд╣рдж рднрдпрд╛рдирдХ рд╣реЛрддреЗ рд╣реИрдВред
USBXpress DK C8051F32x, C8051F34x рд▓рд╛рдЗрди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдФрд░ CP210x (USB-to-UART рдмреНрд░рд┐рдЬ рдХрдВрдЯреНрд░реЛрд▓рд░) рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред USBXpress рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, PC рдХреЗ рд▓рд┐рдП USB рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рдКрдкрд░реА рд╕реНрддрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DLL-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗрд╡рд▓ BULK рдореЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдХреЗрд╡рд▓ 3 Kbytes Flash рдореЗрдореЛрд░реА рд▓рдЧреЗрдЧреАред
рдлрд░реНрдорд╡реЗрдпрд░
рдЖрдЗрдП рд╣рдо HID рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдорд╛рди рдПрдХ рдпрд╛ рдХрдо рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рд╣рдо рдкреАрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рддреЛ, TestPanel рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рд╛рд░: рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдПрдбреАрд╕реА (рдкреЛрдЯреЗрдВрд╢рд┐рдпреЛрдореАрдЯрд░) рдФрд░ рдмрд┐рд▓реНрдЯ-рдЗрди рдерд░реНрдорд╛рдореАрдЯрд░ (
рддрд╛рдкрдорд╛рди ) рдХреА рд░реАрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрдЯрди (
Switch1State рдФрд░
Switch2State ) рджрдмрд╛рдиреЗ рд╕реЗ, рдФрд░ рд╣рдо
рдЦреБрдж рдПрд▓ рдИ рдбреА (
LED1 рдФрд░
LED2 ) рдХреЛ рдмреНрд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдФрд░ рдирд╛рдЬреБрдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рдПрдХ рдпреВрдПрд╕рдмреА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓рд┐рдЦрдирд╛;
- рдмреЛрд░реНрдб рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдпреВрдПрд╕рдмреА рдХрд╛ рдкреНрд░рд╛рд░рдВрдн;
- рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдПрдХ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛;
- рдмрд╛рдзрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗред
рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, USB_API.h
рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░
USBX_F320_1.lib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред
USB рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд▓рд┐рдЦрдирд╛
рдЕрдкрдиреЗ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЫрд┐рдкрд╛рдИ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ
code const UINT USB_VID = 0x10C4;
code const UINT USB_PID = 0xEA61;
code const BYTE USB_MfrStr[] = {0x1A,0x03,'S',0,'i',0,'l',0,'a,0,'b,0,'s,0};
code const BYTE USB_ProductStr[] = {0x10,0x03,'U',0,'S',0,'B',0,'X',0,'_',0,'A',0,'P',0};
code const BYTE USB_SerialStr[] = {0x0A,0x03,'H',0,'A',0,'B',0,'R',0};
code const BYTE USB_MaxPower = 15;
code const BYTE USB_PwAttributes = 0x80;
code const UINT USB_bcdDevice = 0x0100;
VID, PID рдФрд░ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдк рдЕрднреА рднреА рдореИрдХреНрд╕рдкрд╛рд╡рд░ рдкреИрд░рд╛рдореАрдЯрд░ (рдЕрдзрд┐рдХрддрдо рд╡рд░реНрддрдорд╛рди = _MaxPower * 2) рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрддрдо рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, PwAttributes - рд╣реЛрд╕реНрдЯ рдХреЗ рджреВрд░рд╕реНрде рд╡реЗрдХ-рдЕрдк рдФрд░ bcdDevice рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ - рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрдЦреНрдпрд╛ред
рдмреЛрд░реНрдб рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдпреВрдПрд╕рдмреА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ
рдЕрдм рд╣рдо рдЦреБрдж рд╣реА рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдордХреЗ рдЕрдердХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред
void main(void)
{
PCA0MD &= ~0x40; // Disable Watchdog timer
USB_Clock_Start(); // Init USB clock *before* calling USB_Init
USB_Init(USB_VID,USB_PID,USB_MfrStr,USB_ProductStr,USB_SerialStr,USB_MaxPower,USB_PwAttributes,USB_bcdDevice);
Initialize();
USB_Int_Enable();
...
рдпрд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХрдореЗрдВрдЯреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпреВрдПрд╕рдмреА рдХреЗ рд▓рд┐рдП рдШрдбрд╝реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдХреА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╢реБрд░реВ рдХрд░реЗрдВ - рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ (); - рдЬреЛ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ, рдЯрд╛рдЗрдорд░ рдФрд░ рдПрдбреАрд╕реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ; рдЗрд╕рдХреЗ рдмрд╛рдж USB рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдПрдХ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛
рдпрд╣рд╛рдБ рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
//... main
while (1)
{
if (Out_Packet[0] == 1) Led1 = 1;
else Led1 = 0;
if (Out_Packet[1] == 1) Led2 = 1;
else Led2 = 0;
In_Packet[0] = Switch1State;
In_Packet[1] = Switch2State;
In_Packet[2] = Potentiometer;
In_Packet[3] = Temperature;
}
// main
}
Out_Packet - рд╣реЛрд╕реНрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреИрдХреЗрдЯ;
In_Packet - рдореЗрдЬрдмрд╛рди рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдПрдХ рдкреИрдХреЗрдЯ;
рд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдПрдордХреЗ рд▓рдЧрд╛рддрд╛рд░ рднреЗрдЬреЗ рдЧрдП рдкреИрдХреЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред
рдмрд╛рдзрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
рдЕрдм 2 рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рдкреИрдХреЗрдЯ рд╕реЗ рдорд╛рди рдХрд╣рд╛рдБ рдорд┐рд▓рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ HID рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдЯрд╛рдЗрдорд░ рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ ADC рдФрд░ рдерд░реНрдорд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди ADC рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдПрдХ рд╕реВрдХреНрд╖реНрдо рдмрд┐рдВрджреБ рд╣реИ - рдПрдбреАрд╕реА рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдорд╛рди рдЯрд╛рдЗрдорд░ (рдЬреЛ рд╣рдо рдмрдЯрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдбреАрд╕реА рд╕реЗ рд╕реНрд╡рдпрдВ рд░реВрдкрд╛рдВрддрд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд░реВрдкрд╛рдВрддрд░рдг рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрдирд╡рд░реНрдЯрд░ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ
рдмреНрд▓реЙрдХ_рд░рд╛рдЗрдЯ (In_Packet, 8)
рдЬреЛ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред
рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ USB рд╕реЗ рд╡реНрдпрд╡рдзрд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ:
void USB_API_TEST_ISR(void) interrupt 16
{
BYTE INTVAL = Get_Interrupt_Source();
if (INTVAL & RX_COMPLETE)
{
Block_Read(Out_Packet, 8);
}
if (INTVAL & DEV_SUSPEND)
{
Suspend_Device();
}
if (INTVAL & DEV_CONFIGURED)
{
Initialize();
}
}
рдпрд╣ рдХреНрд╖рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ Get_Interrupt_Source () API рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрд╡рд░реЛрдз API рдХреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред
рдкреАрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо
рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рд╕рд┐рд▓реЛрдмреЛрд╡рд┐рдЯреНрд╕ рдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХ рдФрд░ рд╕реА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рднреА, рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕реАрдм рдХрд░рддреЗ рд╣реИрдВ, рдпреВрдПрд╕рдмреАрдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рдирдП рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдмрд╛рдж рд╡рд┐рдВрдбреЛрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ:

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рдпрд╛ред

рдпрд╣реА рд╣реИ, рдЕрдм рдЖрдк рдпрд╣рд╛рдВ рдмрдЯрди рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд╛рдпреЛрдб рдмреНрд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЧрд░реНрдо рдПрдордХреЗ рд╣рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддрд╛рдкрдорд╛рди рдХреИрд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, USBXpress рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ USB рдбрд┐рд╡рд╛рдЗрд╕ рдмрдирд╛рдирд╛ HID рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рдФрд░ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдФрд░ рдЧрддрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред рд╕рдмрд╕реЗ рдкрддрд▓рд╛ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдж рд╣реИ, рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд┐рддрдирд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЗрд╡рд▓ BULK рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдореЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИред
рдкреНрд░рдпреБрдХреНрдд рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕реНрд░реЛрдд:
- рдЧреБрдХ рдПрдоред, рдкреАрд╕реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлреЗрд╕ред рд╡рд┐рд╢реНрд╡рдХреЛрд╢ред - рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ: рдкреАрдЯрд░, 2002 ред-- 528 рдПрд╕ред
- рдХреБрд░рд┐рд▓рд┐рди рдП.рдЖрдИ. рдпреВрдПрд╕рдмреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд┐рд▓рд┐рдХреЙрди рд▓реИрдмреНрд╕ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ред рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореИрдЧрдЬрд╝реАрди рдирдВрдмрд░ 5, 2007
- PIC рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ USB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ
- SiUSBXpress рд▓рд┐рдирдХреНрд╕ рдбреНрд░рд╛рдЗрд╡рд░