
рдореИрдВ рдЖрдкрдХреЗ
рд▓рд┐рдП AVR рдЯрд┐рдиреА 45/85 рдХрд╛ рдирдпрд╛ рдХреЙрдореНрдкреИрдХреНрдЯ
рдмреВрдЯрд▓реЛрдбрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдЬреАрдПрдирдпреВ рдЬреАрдкреАрдПрд▓ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реА-рдпреВрдПрд╕рдмреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдСрдЯреЛрд▓реЛрдбрд░ рдХрд╛ рдЖрдзрд╛рд░ рдПрдВрдмреЗрдбреЗрдб рдХреНрд░рд┐рдПрд╢рдВрд╕ рд╕реЗ рдПрдЯреАрдЯрд┐рдиреА 85 рдпреВрдПрд╕рдмреА рдмреВрдЯ рд▓реЛрдбрд░ рдФрд░ рдбрд┐рдЧрд┐рд╕рд┐рдкрд╛рд░реНрдХ рдмреЛрд░реНрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдорд╛рдЗрдХреНрд░реЛрдиреНрдпреВрдХреНрд▓рд┐рдпрд╕-рдЯреА 85 рдереЗред
рдКрдкрд░ рдХреА рддрд░рд╣, TinyHID рд▓реЛрдбрд░ V-USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- ATtiny45 рдФрд░ ATtiny85 рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- рдХреЙрдореНрдкреИрдХреНрдЯ (рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде 2kb)
- рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп (рдЗрд╕рдореЗрдВ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ рдЖрдХрд╛рд░ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛)
- рдХрд┐рд╕реА рднреА рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)
- рдпрд╣ AVRdude рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп C # рдореЗрдВ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
- рдЦреБрдж рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
рдФрд░ рдПрд╡реАрдЖрд░ рдЯрд┐рдиреА 85 рдХреНрдпреЛрдВ?
рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдЖрд░реНрдерд┐рдХ, рд╕рдЬреНрдЬрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ AVR рдЯрд┐рдиреА x5 рдХреЗ рд╕рд╛рде, рдЖрдк рджреЛ рдмрд╛рд░ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ рддрд░рд╣ рд╕реЗ рдмрдЪрдд рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдХреАрдордд рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ: рдЯрд┐рдВрдХреА рдореЗрдЧ рд╕реЗ рд╕рд╕реНрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЯрд┐рдиреА рдПрдХреНрд╕ 5 рдореЗрдВ рдПрдХ рдкреАрдПрд▓рдПрд▓ рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдЧреБрдВрдЬрдпрдорд╛рди рдпрдВрддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ рдХреИрдкреЗрд╕рд┐рдЯрд░ рдкрд░ рднреА рдмрдЪрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб рдкрд░ рдЬрдЧрд╣ рдХрд╛ рдореБрджреНрджрд╛ рднреА рд╣реИред QNF рдмреЙрдбреА рдореЗрдВ, рдПрдХ рдХреЙрдХрд░реЛрдЪ 2.5 рдмрд╛рдИ 2.5 рдорд┐рдореА рдЖрдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░, рд╣рдореЗрдВ рдПрдХ рдЧреБрдВрдЬрдпрдорд╛рди рдпрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд╕рд░реНрдХрд┐рдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж 12x5 рдорд┐рдореА рдкрд░ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, AVR рдЯрд┐рдиреА 85 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдЙрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ USB рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рдХрд┐ рдпрд╣ рдХреЙрдХрд░реЛрдЪ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдИрдУ рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)
рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдЯреЛрд▓реЙрдбрд░ рдХреНрдпреЛрдВ?
AVR рдореЗрдЧрд╛ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрд▓реЙрдЗрдЯрд░ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯрд┐рдиреА 85 рдХреЗ рд╕рд╛рде рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЗрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
- рдпрджрд┐ BOOTRST рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд┐рдЯ 0 рдкрд░ рд╕реЗрдЯ рд╣реИ, рддреЛ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдХ рд╢реВрдиреНрдп рдкрддреЗ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдмреВрдЯ рд░реАрд╕реЗрдЯ рдкрддреЗ (рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
- рдмреВрдЯ рд░реАрд╕реЗрдЯ рдкрддреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдСрдЯреЛрд▓реИрдбрд░ рд╕реНрд╡рдпрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдмреВрдЯ рд░реАрд╕реЗрдЯ рдкрддреЗ рдкрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдЯреЗрдмрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдСрдЯреЛрд▓реИрдбрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдЦреБрдж рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред
- рдпрджрд┐ рдЖрдкрдХреЛ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд░реБрдХрд╛рд╡рдЯ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╢реВрдиреНрдп рдкрддреЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд░реНрдорд╡реЗрдпрд░ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред
- рдлрд╝реНрд▓реИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдСрдЯреЛрд▓реИрдбрд░ рдпреВрдПрд╕рдмреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдореЗрдЬрдмрд╛рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдЯреЛрд▓реИрдбрд░ рдХрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ, рдЬреЛ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдЦреБрдж рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдФрд░ рдЕрдм 85 рд╡реЗрдВ рдЯрд┐рдиреА рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ:
- ATTiny рд╣рдореЗрд╢рд╛ рдПрдХ рд╢реВрдиреНрдп рдкрддреЗ рд╕реЗ рдмреВрдЯ рд╣реЛрддрд╛ рд╣реИ; рдЖрдк рдЗрд╕реЗ рджреВрд╕рд░реЗ рдкрддреЗ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
- рдЗрдВрдЯрд░рдкреНрдЯ рд╡реИрдХреНрдЯрд░ рднреА рдХрд╣реАрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
- рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдирд┐рдпрдВрддреНрд░рдХ 4.5 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рд░реБрдХрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред
- рдЦреИрд░, рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рд╕реЗрд▓реНрдл рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реБрд░рдХреНрд╖рд╛ рднреА рдирд╣реАрдВ рд╣реИред
рдФрд░ рдХрд╛рдордЪреЛрд░ред
- рдХреНрд▓рд┐рдпрд░ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЙрди рдпреВрдирд┐рдЯреНрд╕ рд╕реЗ рднрд░реА рд╣реЛрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрдВрдЯреНрд░реЛрд▓рд░ рджреНрд╡рд╛рд░рд╛ NOP рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░реАрд╕реЗрдЯ рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдг рдСрдЯреЛрд▓реИрдбрд░ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрдо рд╕реЗ рдХрдо 1,500 рдПрдирдУрдкреА рдкреВрд░реЗ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
- рд▓реЗрдХрд┐рди рдпреВрдПрд╕рдмреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред PCINT0 рдЗрдВрдЯрд░рдкреНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмрд╛рдзрд┐рдд рд╡реЗрдХреНрдЯрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдСрдЯреЛрд▓реИрдбрд░ рдкрддреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдмреВрдЯ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдСрдЯреЛрд▓реИрдбрд░ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╡реИрдХреНрдЯрд░ рдХреЛ RESET рдФрд░ PCINT0 рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдСрдЯреЛрд▓реИрдбрд░ рднреА RESET рдФрд░ PCINT0 рд╡реИрдХреНрдЯрд░ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
- рдСрдЯреЛрд▓реЙрдбрд░ рдСрдЯреЛрд▓реИрдбрд░ рд╕реЗ рдкрд╣рд▓реЗ рдкрддреЗ рдкрд░ рд▓рд╛рдЧреВ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ RESET рдФрд░ PCINT рд▓рд┐рдЦрддрд╛ рд╣реИред
- рд╡реА-рдпреВрдПрд╕рдмреА рдкреНрд░реЛрд╕реЗрд╕рд░ PCINT0 рдХрд╛ рд╕рдВрд╢реЛрдзрди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ PCINT0 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд░реНрдорд╡реЗрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдСрдЯреЛрд▓реИрдбрд░ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ TCCR1 == 0 && TCNT1 == 0xff рд╣реИред рдЕрдиреНрдпрдерд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВрдбрд▓рд░ рдЪрд▓рд╛рдПрдВред
- рдореЗрдореЛрд░реА рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдпрд╛ рдХреНрд▓рд┐рдпрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рджреЗрд░реАред рдЗрд╕ рд╕рдордп, рдирд┐рдпрдВрддреНрд░рдХ рдСрдкрд░реЗрд╢рди рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЬрдмрд╛рди рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЗрдЬрдмрд╛рди рдЗрд╕реЗ рдирд╣реАрдВ рдЦреЛрддрд╛ рд╣реИред
- рдореЗрдореЛрд░реА рдХреНрд▓реАрдирдЕрдк рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдСрдЯреЛрд▓реИрдбрд░ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ RESET рдФрд░ PCINT0 рд╡реИрдХреНрдЯрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдСрдЯреЛрд▓реИрдбрд░ рдЕрдВрдд рд╕реЗ рд╢реБрд░реБрдЖрдд рддрдХ рдлреНрд▓реИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдлрд╛рдИ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рд╕рдлрд╛рдИ / рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдмрд┐рдЬрд▓реА рдЖрдЙрдЯреЗрдЬ рд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛ, рд▓реЗрдХрд┐рди рдСрдЯреЛрд▓реИрдбрд░ рдЪрд╛рд▓реВ рд░рд╣реЗрдЧрд╛ред рдпрд╛ FLASH рдХрд╛ рдкрд╣рд▓рд╛ рдкреГрд╖реНрда рдЕрднреА рддрдХ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ / рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдСрдЯреЛрд▓реИрдбрд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рд╡реЗрдХреНрдЯрд░ рдкрд░ рдЪрд▓реЗрдЧрд╛ред рдпрд╛ рддреЛ рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рдордВрдЬреВрд░реА рджреЗ рджреА рдЧрдИ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдПрдирдУрдкреА рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдЯреЛрд▓реИрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдмрдЬрд╛рдп рдСрдЯреЛрд▓реИрдбрд░ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
рдЖрдк
рдПрдВрдмреЗрдб рдЯрд┐рдиреА 85 рдкрд░
рдПрдВрдмреЗрдбреЗрдб рдХреНрд░рд┐рдПрд╢рдВрд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдСрдЯреЛрд▓реИрдбрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд┐рдпрд╛ рдХреЛ рдХреНрдпреЛрдВ рдордЬрдмреВрдд рдХрд░реЗрдВ?
AVR рдЯрд┐рдиреА рдкрд░ рдХреНрд▓рд╛рд╕рд┐рдХ MEGA- рдЖрдзрд╛рд░рд┐рдд рдСрдЯреЛрд▓реЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмрд┐рдирд╛ рднреА, 2 рдСрдЯреЛрд▓реИрдбрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ: рдПрдЯреАрдЯреАрдиреА85 рдпреВрдПрд╕рдмреА рдмреВрдЯ рд▓реЛрдбрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдиреНрдпреВрдХреНрд▓рд┐рдпрд╕-рдЯреА 85, рдФрд░ рджреЛрдиреЛрдВ рдПрдХ рдмрд╛рд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдпреВрдПрд╕рдмреАрд╕реНрдкрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЙрдкрд░реНрдпреБрдХреНрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реЛрд╕реНрдЯ рдкрд░ libusb рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрджреНрднреБрдд рдФрд░ рдмрд╣реБрдЖрдпрд╛рдореА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдФрд░ рдореИрдХ рдУрдПрд╕ рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 2x2 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ TinyHID рд▓реЛрдбрд░ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдЖрдХрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдкреАрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ 8.1 x64 рдХреЗ рддрд╣рдд, рд▓рд┐рдмрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрдм рдХреЛрдИ рдорд╛рдореВрд▓реА рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЧрд╣рд░реА-рдЧрд╣рд░реА рдПрдХ рдЖрдЗрдЯрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдХрд┐рд╕реА рдХреЛ рднреА, рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдПрдЪрдЖрдИрдбреА рдлрд╝реАрдЪрд░ рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдПрдХ рдСрдЯреЛрд▓реИрдбрд░ рдмрдирд╛рдирд╛ рдерд╛ред рд╕рднреА рдЫрд┐рдкрд╛рдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдУрдПрд╕ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрд╡рд░реВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд╡рдЬрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд▓рд╛рддреА рд╣реИред рдПрдлрдПрдПрд▓рдПрдПрд╕рдПрдЪ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдЯреЛрд▓реИрдбрд░ рдХрд╛ рд╡рдЬрди 2kb рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рд╕реЗ рдХрдо рд╣реИред
рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдФрд░ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ / usbloader / usbloader.h рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
// ATtiny, USB D- #define USB_CFG_DMINUS_BIT 2 // ATtiny, USB D+ #define USB_CFG_DPLUS_BIT 1 // ATtiny, // ( , ) // #define LED_PIN 4 // ATtiny, ( ) // ( ) #define START_JUMPER_PIN 0 // 1, EEPROM ( ) #define CAN_ERASE_EEPROM 0 // 1, FLASH ( ) #define CAN_READ_FLASH 0 // 0, ( ) #define CAN_LEAVE_LOADER 1
рдЙрд╕реА рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ USB_CFG_DPLUS_BIT рдХреЛ INT0 рдкреИрд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PCINT0 рдЗрдВрдЯрд░рдкреНрдЯ рдСрдЯреЛрд▓реИрдбрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдкреИрд░ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдмреВрдЯрд▓реЛрдбрд░ 2kb рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдпрджреНрдпрдкрд┐ рдПрдВрдб-рдЯреВ-рдПрдВрдбред рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЙрд╕реЗ рдЗрди рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рд╛рде рд╣реА рдЖрдкрдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрдерд╛рди рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк AtmelStudio рдпрд╛ Makefile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рдЪрдпрдирд┐рдд рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдг рдЦреЛрд▓реЗрдВ, рдЯреВрд▓рдХрд┐рди рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ, рдФрд░ "AVR / GNU рд▓рд┐рдВрдХрд░ / рдореЗрдореЛрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕" рдЖрдЗрдЯрдо рдореЗрдВ, рдореВрд▓реНрдп рдХреЛ рдХрдо рдХрд░реЗрдВ ".text = 0xc00"ред рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ 32 рд╢рдмреНрджреЛрдВ рдХреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреА 0xbe0, 0xbc0, 0xba0ред 0xba0 рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреЛрдИ рдФрд░ рдХрдореА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдкрдХреЛ рдирд┐рд░рдВрддрд░ BOOTLOADER_WADDRESS рдХреЗ рдорд╛рди рдХреЛ рднреА рдХрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ AVR / GNU C рдХрдВрдкрд╛рдЗрд▓рд░ / рд╕рд┐рдВрдмрд▓ рдкреЗрдЬ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди ".text =" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (F7) рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
makefile
Makefile рдЦреЛрд▓реЗрдВ, рдФрд░ рдирд┐рд░рдВрддрд░ BOOTLOADER_ADDRESS рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рддрдХ рдХрдо рдХрд░реЗрдВред рдХреЗрд╡рд▓ 64-рдмрд╛рдЗрдЯ рднрд╛рдЧреЛрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (AtmelStudio рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ Makefile рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣реА рд╣реИ, 17c0, 1780, 1740. 1740 рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреЛрдИ рдФрд░ рдХрдореА рдирд╣реАрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣реЛ рдЧрдпрд╛, рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдм рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рдЬрд╛рдПрдВред
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ C # рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╕реНрдЯрдбрд┐рдпреЛ 2012 рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдореЛрдиреЛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд╝рдорд╛рд░рд┐рди рдореЗрдВ рднреА рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред HID рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, HidSharp рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ MONO рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрдирд╛ рджреЗрдЧрд╛ред
рдбрд╛рдЙрдирд▓реЛрдб рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЖрд╕рд╛рди рд╣реИ:
TinyLoaderCmd.exe firmware.hex
рдФрд░ 3 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рддрд┐рд▓рдЪрдЯреНрдЯрд╛ рд╕рд┐рд▓реЗ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрджрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рди рдХреЗрд╡рд▓ рдирд┐рдпрдВрддреНрд░рдХ рдлреНрд▓реИрд╢ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЬрдм рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛, рддреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЕрдкрдиреЗ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ TinyHID рд▓реЛрдбрд░ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
void UploadNewFirmware(string file) { HexFile file = new HexFile(args[0]); Loader ldr = Loader.TryGetLoader(40); byte[] programm = new byte[Loader.LOADERSTART]; for (int i = 0; i < programm.Length; i++) programm[i] = 0xff; file.Fill(programm); ldr.WriteFlash(programm, 0); ldr.LeaveBootloader(); }
рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдСрдЯреЛрд▓реИрдбрд░ рдмреВрдЯ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
void runBootloader() { cli(); TCCR1 = 0; TCNT1 = 0xff; asm volatile ("rjmp __vectors"); }
рд╡рд╣ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪрдордХрддреА рдЪрдордХрддреА рд╣реИред рдФрд░ рдЙрд╕ рд╕рдордп рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛:
- рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред
- рдпрд╣ рдЙрд╕ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ (Loader.TryGetLoader) рдХрд░реЗрдЧрд╛ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдЪреБрдирддрд╛ рд╣реИред
- рдПрдХ рдирдпрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ред
- рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред
- рдпрд╣ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЗ рдирдП рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдирд╣реАрдВ рдЙрдард╛рддрд╛ред
рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рджрд┐рдпрд╛ рдФрд░ рдирдпрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдм рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрдЫрддрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореЗрдореЛрд░реА рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реА? рдареАрдХ рд╣реИ, рдпрд╛ TinyHID рд▓реЛрдбрд░ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрд╡рдЧреБрдг рдХреЗ рдЬреАрд╡рди рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ? рд▓реЗрдХрд┐рди рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рди рдХреЗрд╡рд▓ рд╕рд┐рд▓реЗ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реАрд▓ рднреА рд╣реИред рдФрд░ рдореИрдВ рдЗрд╕реЗ рдорд┐рд▓рд╛рдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ - TinyHID рд▓реЛрдбрд░ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ!
рд╕реНрд╡-рдЪрдордХрддреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TinyLoaderCmd.exe reload bootloader.hex рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ (рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ - рдХреЛрдИ рднреА рдХрд┐рд╕реА рдЪреАрдЬ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ)
- рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдмрдирд╛рддреА рд╣реИред рдЗрд╕рдореЗрдВ рдирдП рдСрдЯреЛрд▓реИрдбрд░ рдХреА рдЫрд╡рд┐, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА (рдлреНрд▓реИрд╢ рдФрд░ рд╕реАрдЖрд░рд╕реА 16 рдореЗрдВ рдЧрдВрддрд╡реНрдп рдкрддрд╛), рд╕рд╛рде рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдкрдбреЗрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рд░реАрд▓реЛрдбрд░) рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
- рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рддрд░рд╣, рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдбрд┐рд╡рд╛рдЗрд╕ рд░рд┐рдмреВрдЯ рдХрд░рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ), рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкреБрдирдГ рд▓реЛрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд░реАрд▓реЛрдбрд░ CRC16 рдФрд░ рд╕рд╛рде рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рдирдП рдСрдЯреЛрд▓реИрдбрд░ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
- рдпрджрд┐ рд╕рднреА рдЬрд╛рдБрдЪреЗрдВ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдкреБрдирдГ рд▓реЛрдбрд░ рдореЗрдореЛрд░реА рдХреЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖рдг рд╕реЗ рдкреАрдЫреЗ рдореБрдбрд╝рдирд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдмрд┐рдЬрд▓реА рдмрдВрдж рд╣реЛрддреА рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдг рдкреБрд░рд╛рдиреЗ рдмреВрдЯрд▓реЛрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рдореБрдЦреНрдп рдЪрд░рдг рдЫрд╡рд┐ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддреЗ рдкрд░ рдПрдХ рдирдП рдСрдЯреЛрд▓реИрдбрд░ рдХреА рдирдХрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреГрд╖реНрда рдХреЛ рд╕реАрдзреЗ рдСрдЯреЛрд▓реИрдбрд░ рдХреЗ рд╕рд╛рдордиреЗ рд╕рд╛рдл рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рд╕рднреА рдСрдЯреЛрд▓рд░рд╛рдЗрдбрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
- рдФрд░ рдлрд╛рдЗрдирд▓ рдореЗрдВ - рдирдП рдСрдЯреЛрд▓реИрдбрд░ рдХреЗ RESET рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд░рдордг - рдЬрдмрдХрд┐ рдСрдЯреЛрд▓реИрдбрд░ рдлреНрд▓реЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░реЗрдЧрд╛
рдкреБрдирдГ рд▓реЛрдбрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рд╕реАрдЖрд░рд╕реА рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддрд░реНрдХ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдПрдХ рдЧрд▓рдд рдирдпрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдПрдХ рдХреЙрдХрд░реЛрдЪ рдХреЛ рдИрдВрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛, рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬреАрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ - рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд╣реА рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реАрд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рджреВрд╕рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ TinyHID рд▓реЛрдбрд░ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА AVR рдЯрд┐рдиреА 85 рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж: