ATtiny85 рдХреЗ рд▓рд┐рдП рдХреЙрдореНрдкреИрдХреНрдЯ рдпреВрдПрд╕рдмреА рдЫрд┐рдкрд╛рдИ рдмреВрдЯрд▓реЛрдбрд░


рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП AVR рдЯрд┐рдиреА 45/85 рдХрд╛ рдирдпрд╛ рдХреЙрдореНрдкреИрдХреНрдЯ рдмреВрдЯрд▓реЛрдбрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕ рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдЬреАрдПрдирдпреВ рдЬреАрдкреАрдПрд▓ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реА-рдпреВрдПрд╕рдмреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдСрдЯреЛрд▓реЛрдбрд░ рдХрд╛ рдЖрдзрд╛рд░ рдПрдВрдмреЗрдбреЗрдб рдХреНрд░рд┐рдПрд╢рдВрд╕ рд╕реЗ рдПрдЯреАрдЯрд┐рдиреА 85 рдпреВрдПрд╕рдмреА рдмреВрдЯ рд▓реЛрдбрд░ рдФрд░ рдбрд┐рдЧрд┐рд╕рд┐рдкрд╛рд░реНрдХ рдмреЛрд░реНрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдорд╛рдЗрдХреНрд░реЛрдиреНрдпреВрдХреНрд▓рд┐рдпрд╕-рдЯреА 85 рдереЗред
рдКрдкрд░ рдХреА рддрд░рд╣, TinyHID рд▓реЛрдбрд░ V-USB рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:




рдФрд░ рдПрд╡реАрдЖрд░ рдЯрд┐рдиреА 85 рдХреНрдпреЛрдВ?


рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рдЖрд░реНрдерд┐рдХ, рд╕рдЬреНрдЬрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ AVR рдЯрд┐рдиреА x5 рдХреЗ рд╕рд╛рде, рдЖрдк рджреЛ рдмрд╛рд░ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ рддрд░рд╣ рд╕реЗ рдмрдЪрдд рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдХреАрдордд рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ: рдЯрд┐рдВрдХреА рдореЗрдЧ рд╕реЗ рд╕рд╕реНрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдЯрд┐рдиреА рдПрдХреНрд╕ 5 рдореЗрдВ рдПрдХ рдкреАрдПрд▓рдПрд▓ рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреНрд╡рд╛рд░реНрдЯреНрдЬ рдЧреБрдВрдЬрдпрдорд╛рди рдпрдВрддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛ рдХреИрдкреЗрд╕рд┐рдЯрд░ рдкрд░ рднреА рдмрдЪрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб рдкрд░ рдЬрдЧрд╣ рдХрд╛ рдореБрджреНрджрд╛ рднреА рд╣реИред QNF рдмреЙрдбреА рдореЗрдВ, рдПрдХ рдХреЙрдХрд░реЛрдЪ 2.5 рдмрд╛рдИ 2.5 рдорд┐рдореА рдЖрдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░, рд╣рдореЗрдВ рдПрдХ рдЧреБрдВрдЬрдпрдорд╛рди рдпрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд╕рд░реНрдХрд┐рдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж 12x5 рдорд┐рдореА рдкрд░ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, AVR рдЯрд┐рдиреА 85 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдЙрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ USB рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рдХрд┐ рдпрд╣ рдХреЙрдХрд░реЛрдЪ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдИрдУ рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдЯреЛрд▓реЙрдбрд░ рдХреНрдпреЛрдВ?


AVR рдореЗрдЧрд╛ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрд▓реЙрдЗрдЯрд░ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯрд┐рдиреА 85 рдХреЗ рд╕рд╛рде рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЗрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:



рдФрд░ рдЕрдм 85 рд╡реЗрдВ рдЯрд┐рдиреА рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ:



рдФрд░ рдХрд╛рдордЪреЛрд░ред



рдЖрдк рдПрдВрдмреЗрдб рдЯрд┐рдиреА 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"); } 

рд╡рд╣ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪрдордХрддреА рдЪрдордХрддреА рд╣реИред рдФрд░ рдЙрд╕ рд╕рдордп рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛:



рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?


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


рдкреБрдирдГ рд▓реЛрдбрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рд╕реАрдЖрд░рд╕реА рд╕рддреНрдпрд╛рдкрди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддрд░реНрдХ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдПрдХ рдЧрд▓рдд рдирдпрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдПрдХ рдХреЙрдХрд░реЛрдЪ рдХреЛ рдИрдВрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛, рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬреАрд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ - рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рд╣реА рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реАрд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рджреВрд╕рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд╛рде рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ TinyHID рд▓реЛрдбрд░ рдХреЛ рдлреНрд▓реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА AVR рдЯрд┐рдиреА 85 рдСрдЯреЛрд▓реИрдбрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж:

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


All Articles