{"id":344887,"date":"2023-02-02T15:02:07","date_gmt":"2023-02-02T15:02:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=344887"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=344887","title":{"rendered":"<span>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0430\u044f \u043f\u0443\u043b\u044c\u0442\u043e\u043c USB HID-\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043d\u0430 ATtiny45<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. <\/p>\n<p>\u042f \u044d\u043c\u0431\u0435\u0434\u0434\u0435\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u044d\u0442\u043e \u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430, \u0447\u0442\u043e \u0432\u043e\u0437\u044f\u0442\u0441\u044f \u0441 \u0447\u0438\u043f\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u0442\u0438\u0440\u0430\u043b\u043e\u043a, \u0410\u0440\u0434\u0443\u0438\u043d\u043e-\u043f\u043e\u0434\u0435\u043b\u043a\u0430\u043c\u0438 \u0438 \u0443\u043c\u043d\u044b\u043c\u0438 \u0434\u043e\u043c\u0430\u043c\u0438), \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u0435\u0431\u0435\u0437\u044b\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0430. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0443\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u043d\u0435 \u043f\u0435\u0442-\u043f\u0440\u043e\u0435\u043a\u0442, \u0430 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u043f\u0443\u0449\u0435\u043d\u0430. \u0412\u0441\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0434\u0430\u043d\u044b \u043f\u043e \u0445\u043e\u0434\u0443 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u043e <s>\u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438<\/s> \u043a\u043e\u0434 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 <em>open-source<\/em>, \u0438 \u044f \u043f\u043e \u0438\u0434\u0435\u0435 \u043e\u0431\u044f\u0437\u0430\u043d \u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0442 <a href=\"https:\/\/github.com\/AndreyGRY\/AQ-IRR\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0433\u0438\u0442<\/a>.<\/p>\n<p><em>Nota bene<\/em>: \u044f \u041d\u0415 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. <a href=\"https:\/\/studio-diy.3dn.ru\/news\/mikrokontrollery_attiny25_attiny45_attiny85\/2014-12-23-40\" rel=\"noopener noreferrer nofollow\">ATtiny45 <\/a>&#8212; <s>\u044d\u0442\u043e \u0434\u0440\u0435\u0432\u043d\u044f\u044f \u0445\u0440\u0435&#8230;<\/s> <em>deprecated MCU <\/em>(\u0438\u0437\u0432\u0438\u043d\u044f\u044e\u0441\u044c \u0437\u0430 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0438\u0437\u043c) \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438, \u0438 \u043b\u0438\u0447\u043d\u043e \u044f \u0431\u044b \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 STM32. \u041d\u043e \u043a\u0440\u043e\u0432\u0430\u0432\u044b\u0439 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437, \u0432\u0441\u0435 \u0434\u0435\u043b\u0430 &#8212; \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 AVR, \u0438 \u0432 \u0441\u0435\u0440\u0438\u0438 \u0442\u0430\u043a\u043e\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0439 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc0\/458\/6b9\/cc04586b9dcd3892c404dd3a9ded734d.PNG\" alt=\"\u0418 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438, \u0437\u0430 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c...\" title=\"\u0418 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438, \u0437\u0430 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c...\" width=\"1570\" height=\"596\"\/><figcaption>\u0418 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438, \u0437\u0430 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c&#8230;<\/figcaption><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0433\u043e\u043b\u043e\u0432\u043d\u044f\u043a\u0430 \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0448\u0438\u0448\u0435\u043a, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f. \u0421\u0430\u043c\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u0432\u044b\u0448\u043b\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c &#8212; \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432 \u041f\u041e \u0438 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435, \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435. \u0418\u043d\u0430\u0447\u0435 \u044f \u0431\u044b \u0438 \u043d\u0435 \u043f\u043e\u0448\u0435\u043b \u0441 \u043d\u0438\u043c \u0432 \u043b\u044e\u0434\u0438. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c.<\/p>\n<h3>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430<\/h3>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430-\u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0418\u041a-\u043f\u0443\u043b\u044c\u0442\u0430 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 HID-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 USB-\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u041e\u0421, \u043d\u043e \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0432\u0432\u043e\u0434\u0430. \u041f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438 \u043d\u0435\u0442 &#8212; \u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 <em>NEC<\/em> (\u043f\u0443\u043b\u044c\u0442\u0430). \u041f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 (\u041c\u041a), \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0438 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u0438.<\/p>\n<p>\u041f\u0440\u044f\u043c\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u041f\u041e \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b (\u0445\u043e\u0442\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435), \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443\u0442.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d? \u0421\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438 \u0432\u0430\u043c. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041a \u043f\u0443\u043b\u044c\u0442\u043e\u043c \u043b\u0438\u0431\u043e \u0445\u043e\u0434\u044c\u0431\u044b \u043f\u043e GUI-\u043c\u0435\u043d\u044e \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c Linux-\u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043c\u0430\u0440\u0442-TV. \u0417\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0436\u0435\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u0425\u0430\u043a\u0435\u0440\u0441\u043a\u0438\u0439 <em>key-logger<\/em> (\u043e\u0441\u0443\u0436\u0434\u0430\u044e). \u041f\u0440\u043e\u0441\u0442\u043e <em>just for lulz<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043b\u044c\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043c\u043d\u043e\u0433\u043e&#8230;<\/p>\n<h2>\u041b\u0438\u043a\u0431\u0435\u0437<\/h2>\n<p>\u0421\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u044f\u0441\u043d\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u044d\u0442\u043e \u0430\u0437\u0431\u0443\u0447\u043d\u044b\u0435 \u0438\u0441\u0442\u0438\u043d\u044b, \u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u044e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e USB \u0438 HID: <\/p>\n<p>\u0428\u0438\u043d\u0430 USB, \u0445\u043e\u0442\u044c \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0441\u0442 \u0441 \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u043c, \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u0443\u044e \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e, \u0433\u0434\u0435 \u043a\u043e\u0440\u043d\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <em>Host<\/em>, \u0443\u0437\u043b\u0430\u043c\u0438 &#8212; <em>Hubs<\/em>, \u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430\u043c\u0438 &#8212; <a href=\"https:\/\/www.keil.com\/pack\/doc\/mw\/USB\/html\/_u_s_b__endpoints.html\" rel=\"noopener noreferrer nofollow\"><em>Endpoints <\/em><\/a>\u0442\u0438\u043f\u0430 <em>Control, Interrupt <\/em>\u0438 <em>Bulk<\/em>. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 2 <em>endpoints <\/em>&#8212; <em>Control <\/em>\u0438 <em>Interrupt. Control <\/em>\u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430, \u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <em>vusb<\/em>. <em>Interrupt <\/em>\u0436\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 <em>Device-to-Host<\/em>. \u0414\u0435\u0432\u0430\u0439\u0441 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041d\u043e \u0445\u043e\u0441\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435.  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b6f\/961\/208\/b6f961208175f08f3783f8b15669bc18.png\" width=\"657\" height=\"512\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6f\/961\/208\/b6f961208175f08f3783f8b15669bc18.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f USB \u0432 \u0447\u0430\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 <em>Human Interface Device (HID)<\/em> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 USB \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u042d\u0412\u041c \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u041e\u0421 &#8212; \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 HID <em>mouclass.sys\/kbdclass.sys\/&#8217;etc&#8217;.sys <\/em>\u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u0443 \u0438\u043b\u0438 <em>hid-generic<\/em> \u0438 \u0442.\u0434., \u043d\u0435 \u0441\u0443\u0442\u044c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043a\u0430\u043a \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e <em>Mouse<\/em>, \u0438 \u043a\u0430\u043a <a href=\"https:\/\/www.researchgate.net\/publication\/297739371_The_Development_of_USB_HID_based_Fixed_Cockpit_Simulator\" rel=\"noopener noreferrer nofollow\"><em>Spaceship Simulation Device<\/em><\/a>, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <em>Keyboard+Power Controls<\/em> (\u0432\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0442.\u043a. \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u043c\u0443 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043a\u043d\u043e\u043f\u043a\u0430 Power \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 <em>ACPI. <\/em>\u041d\u0430\u043c \u0442\u0430\u043a\u0430\u044f \u0440\u043e\u0441\u043a\u043e\u0448\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0445\u043d\u0435\u043c \u043a\u0440\u043e\u043c\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0435\u0449\u0435 \u0438 <em>Power Controls device<\/em>).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ae8\/673\/a5d\/ae8673a5d8dee9bcd8ce23471ee06c88.jpeg\" width=\"463\" height=\"484\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae8\/673\/a5d\/ae8673a5d8dee9bcd8ce23471ee06c88.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 <em>Usages<\/em>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043a\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 <a href=\"https:\/\/usb.org\/document-library\/hid-usage-tables-13\" rel=\"noopener noreferrer nofollow\"><em>HID Usage Tables<\/em><\/a>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u044b\u0439 \u0442\u043e\u043a, <em>Vendor ID<\/em>, \u0438 \u0442.\u0434. \u0412\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e <a href=\"https:\/\/www.usb.org\/document-library\/device-class-definition-hid-111\" rel=\"noopener noreferrer nofollow\"><em>Device Class Definition for HID<\/em><\/a>, \u0438\u043d\u0430\u0447\u0435 \u043c\u043d\u043e\u0433\u043e\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c.<\/p>\n<p>\u041f\u0440\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b:<\/p>\n<p>\u042d\u0442\u043e \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 HID-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043e\u0431\u0449\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441 \u0445\u043e\u0441\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0435\u043c \u043a\u0440\u043e\u043c\u0435 <em>Interrupt-IN<\/em>, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u0445, \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u043f\u043e <em>Interrupt-OUT<\/em> &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0438 \u0445\u043e\u0441\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435. \u041d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <em>Interrupt-OUT <\/em>\u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u0435\u043c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 Caps Lock \/ Num Lock \/ Scroll Lock, \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. <\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u043a \u0445\u043e\u0441\u0442\u0443 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0431\u0430\u0439\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <em>report protocol<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0441\u0430\u043c\u0438 \u0432 <em>Report Descriptor.<\/em> \u0412\u043e\u043e\u0431\u0449\u0435 \u0432 <em>Interface Descriptor<\/em> \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices\" rel=\"noopener noreferrer nofollow\"><em>boot protocol<\/em><\/a> \u0438 \u0442\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e. \u041e\u0431\u044b\u0447\u043d\u043e <em>report protocol<\/em> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 8 \u0431\u0430\u0439\u0442: <\/p>\n<ul>\n<li>\n<p>0-\u0439 \u0431\u0430\u0439\u0442 &#8212; <em>Modifier keys status<\/em> &#8212; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448;<\/p>\n<\/li>\n<li>\n<p>1-\u0439 \u0431\u0430\u0439\u0442 &#8212; <em>Reserved field<\/em> &#8212; \u0431\u0435\u0437 \u0440\u0430\u0437\u043d\u0438\u0446\u044b;<\/p>\n<\/li>\n<li>\n<p>2-7 \u0431\u0430\u0439\u0442\u044b &#8212; <em>Scan codes<\/em> &#8212; \u0434\u043e 6 \u043a\u043e\u0434\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448.<\/p>\n<\/li>\n<\/ul>\n<p>8 \u0431\u0438\u0442 \u0431\u0430\u0439\u0442\u0430 <em>Modifier keys status<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Right\/Left Ctrl\/Shift\/Alt\/GUI. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e \u0448\u0435\u0441\u0442\u0438 \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 \u0410\u043b\u0444\u0430\u0432\u0438\u0442\u044b \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u043e\u0432 \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435. \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0443 <a href=\"https:\/\/gist.github.com\/MightyPork\/6da26e382a7ad91b5496ee55fdc73db2\" rel=\"noopener noreferrer nofollow\">MightyPork<\/a>. \u041d\u043e \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <em>Report ID<\/em>.<\/p>\n<p>\u0415\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448. Auto-repeat &#8212; \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0437\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u043d\u0435 \u043a\u0430\u043a \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435, \u043d\u043e \u043a\u0430\u043a \u0435\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0422\u043e \u0435\u0441\u0442\u044c, \u043d\u0430\u0436\u0430\u0442\u0430\u044f &#171;\u0410&#187; \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 &#8216;\u0447\u0430\u0441\u0442\u043e\u0442\u0430_\u043e\u043f\u0440\u043e\u0441\u0430&#8217; * &#8216;\u0432\u0440\u0435\u043c\u044f_\u043f\u0430\u0443\u0437\u044b&#8217; \u0440\u0430\u0437, \u043f\u043e\u043a\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u0441 &#171;0&#187; \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u0410&#187;. \u0411\u044b\u0432\u0430\u043b\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0447\u0442\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043c\u0430\u0442\u0447\u0430 \u0432 CS-GO \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0435 \u0438\u0434\u0442\u0438, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0434\u043e \u043b\u0430\u0433\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0443? \u0418\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0431\u0443\u044e &#8212; \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041f\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u041c\u041a:<\/p>\n<p><a href=\"https:\/\/www.microchip.com\/en-us\/product\/ATtiny45\" rel=\"noopener noreferrer nofollow\"><em>ATtiny45 <\/em><\/a>&#8212; \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 <em>AVR<\/em>. \u041d\u0430 <em>AVR<\/em> \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b <em>Arduino<\/em> (\u0441 \u043a\u043b\u043e\u043d\u0430\u043c\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 MCU, \u0442\u043e\u0439 \u0436\u0435 STM32. \u041d\u043e \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0438\u0442 \u0436\u0438\u0440\u043d\u044b\u0439 \u043f\u043e \u043c\u0435\u0440\u043a\u0430\u043c AVR <em>ATmega328<\/em> \u0441 \u0432\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u043c \u0430\u0440\u0434\u0443\u0438\u043d\u043e\u0432\u0441\u043a\u0438\u043c \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u043e\u043c &#8212; \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0437\u0430\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430). \u041d\u0430 \u0431\u043e\u0440\u0442\u0443 <em>ATtiny45<\/em> 4 \u041a\u0411 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0435\u043c\u043d\u043e\u0433\u043e EEPROM, 6 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u043e\u0436\u0435\u043a, 1 \u0442\u0430\u0439\u043c\u0435\u0440, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043e 20 \u041c\u0413\u0446.  \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c <em>USB 1.0<\/em> <em>Low-Speed<\/em> (1.5 Mb\/s). \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u0430\u0436\u0435 <em>Full-Speed (<\/em>12 Mb\/s) ATtiny \u043d\u0435 \u0432\u044b\u0442\u044f\u043d\u0435\u0442. \u0412\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0440\u0446\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043d\u043e\u0436\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 8\u041c\u0413\u0446 RC-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 2. \u041d\u043e 16 \u043d\u0430 1.5 \u043d\u0430\u0446\u0435\u043b\u043e \u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 16,5 \u041c\u0413\u0446. \u0422\u0430\u043a\u0443\u044e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0448\u044c, \u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 USB \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 16\u041c\u0413\u0446.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 USB \u0431\u0435\u0440\u0443\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430\u044f <em>vusb<\/em>.\u041d\u0430\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0435, \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>usbconfig.h<\/em> \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435. <\/p>\n<p>\u041f\u0440\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 NEC:<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u043d\u0444\u0440\u0430\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u043b \u043f\u043e\u0441\u044b\u043b\u043a\u0443. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 AVR <a href=\"https:\/\/habr.com\/ru\/post\/257041\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043c\u043e\u0442\u0440\u0438 \u0442\u0443\u0442<\/a>, \u043d\u043e \u0435\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e &#8212; \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430, \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u0441\u044b\u043b\u043a\u0430 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f, \u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043b\u0438\u043d\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u042d\u0445, \u044f \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0431\u0438\u043b \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438&#8230;<\/p>\n<figure class=\"bordered\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/e4e\/562\/f12\/e4e562f12bf0422eb3c6dcaa2afbb5aa.jpg\" width=\"auto\" height=\"auto\" data-src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/e4e\/562\/f12\/e4e562f12bf0422eb3c6dcaa2afbb5aa.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h4>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h4>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u043b\u0430\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u041c\u041a, \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a \u0438 \u043f\u0430\u0441\u0441\u0438\u0432\u043a\u0430, \u043d\u043e \u0441\u0445\u0435\u043c\u0443 \u0432\u0430\u043c \u044f \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0443 :). \u041d\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f: \u0441\u0445\u0435\u043c\u0430\u043c\u0438 USB \u043d\u0430 ATtiny \u0437\u0430\u0432\u0430\u043b\u0435\u043d \u0432\u0435\u0441\u044c \u0433\u0438\u043a\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 &#8212; \u0432\u043e\u0442 <a href=\"https:\/\/codeandlife.com\/2012\/02\/22\/v-usb-with-attiny45-attiny85-without-a-crystal\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0430 <em>PB0<\/em> \u0435\u0449\u0435 \u0432\u043e\u0442\u043a\u043d\u0438\u0442\u0435 \u0432\u044b\u0445\u043e\u0434 \u0441 \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0442\u0438\u043f\u0430 <em>TSOP361<\/em> (\u043d\u0443 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0431\u043b\u0438\u0436\u0435 \u043a \u0435\u0433\u043e <em>+5V<\/em> \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u044e\u0442) \u0438 \u043d\u0430 \u0434\u0430\u0442\u0430-\u043b\u0438\u043d\u0438\u0438 USB \u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041a\u0430\u043a-\u043d\u0438\u043a\u0430\u043a, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 USB \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u041c\u041a \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u0441\u043a\u043e\u0440\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0431\u044b, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u043e\u043b\u0435\u0435 \u0436\u0438\u0440\u043d\u044b\u0439 MCU, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 USB-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0438\u043f\u0430 <a href=\"https:\/\/www.chipdip.ru\/product\/ft232rq\" rel=\"noopener noreferrer nofollow\"><em>FT232<\/em> <\/a>\u043f\u0440\u0438 \u043d\u0443\u0436\u0434\u0435 (\u0445\u043e\u0442\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e FT232 \u044f \u0431\u044b \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b). \u041d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0432\u043e\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u043f\u0443\u0442\u0438 \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u0438 \u043a\u043e\u0434\u0430 \u0446\u0435\u043d\u043e\u0439 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u0440\u044f\u0447\u0443\u0449\u0438\u0445\u0441\u044f \u0438 \u043f\u043b\u043e\u0445\u043e \u0443\u0431\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u043b\u0430\u0442\u044b \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e <a href=\"https:\/\/alexgyver.ru\/lessons\/digispark\/\" rel=\"noopener noreferrer nofollow\"><em>Digispark<\/em><\/a>&#8216;\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 \u0410\u0440\u0434\u0443\u0438\u043d\u043e, \u043d\u043e&#8230; 4\u041a\u0411 \u0435\u0441\u0442\u044c 4 \u041a\u0411. \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043f\u043e USB \u0438 \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0443\u0447\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0442 \u0430\u0440\u0434\u0443\u0438\u043d\u0449\u0438\u043a\u043e\u0432. \u041d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 \u044d\u0442\u0438\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u0442\u0440\u0430\u0442\u044f \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0438 \u0440\u0430\u0437\u0434\u0443\u0442\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u0440\u044f\u0434 \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c <em>Makefile<\/em>, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e <em>main.\u0441<\/em> \u0434\u0430 \u043f\u0430\u043f\u043a\u0443 <em>usbdrv<\/em>. \u041d\u0443 \u0438 <em>usbconfig.h<\/em> &#8212; \u0442\u0430\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c <em>usages<\/em>, \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <em>vusb<\/em>. \u041e\u043d\u0430 \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 SOF-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 &#8212; \u0438\u043d\u0430\u0447\u0435 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e RC-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 1% \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 USB \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. <\/p>\n<p>IDE, \u0440\u0430\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u0433\u043e\u043b\u043e\u043c Makefile, \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 &#8212; <em>Atmel Studio, VS Code, Arduino IDE, \u0411\u043b\u043e\u043a\u043d\u043e\u0442<\/em>&#8230; \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 <em>\u0410\u0440\u0434\u0443\u0438\u043d\u043e ISP-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 <\/em>(\u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/em>), \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0435\u0437 Arduino IDE \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441 \u043d\u0435\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <em>avrdude<\/em>, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 AtTiny45. \u042f \u0431\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b <a href=\"https:\/\/alexgyver.ru\/lessons\/naked-chip\/\" rel=\"noopener noreferrer nofollow\">ATTinyCore<\/a>.\u00a0\u0422\u0430\u043c \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 <em>libusb<\/em> \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u043a\u0430\u0442\u0438\u0442 \u0438 \u0442\u0430\u043a, \u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043a \u043a\u043e\u0434\u0443, \u043d\u0430\u043a\u043e\u043d\u0435\u0446:<\/p>\n<pre><code class=\"cpp\">\/\/ USB report descriptor const PROGMEM char usbHidReportDescriptor[USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH] =  {      0x05, 0x01,                    \/\/ USAGE_PAGE (Generic Desktop)     0x09, 0x06,                    \/\/ USAGE (Keyboard)     0xa1, 0x01,                    \/\/ COLLECTION (Application)     0x85, 0x01,   \/\/ Report ID (1)     0x05, 0x07,                    \/\/   USAGE_PAGE (Keyboard)     0x19, 0xe0,                    \/\/   USAGE_MINIMUM (Keyboard LeftControl)     0x29, 0xe7,                    \/\/   USAGE_MAXIMUM (Keyboard Right GUI)     0x15, 0x00,                    \/\/   LOGICAL_MINIMUM (0)     0x25, 0x01,                    \/\/   LOGICAL_MAXIMUM (1)     0x95, 0x08,                    \/\/     Report Count (8)     0x75, 0x01,                    \/\/     Report Size (1)     0x81, 0x02,                    \/\/     INPUT (Data,Var,Abs) ,1 byte     0x95, 0x01,                         \/\/     Report Count (1)     0x75, 0x08,                         \/\/     Report Size (8)     0x81, 0x01,                         \/\/     Input (Constant) reserved byte(1)     0x95, 0x05,                         \/\/   Report Count (5)(4?)     0x75, 0x08,                         \/\/     Report Size (8)     0x15, 0x00,     \/\/   LOGICAL_MINIMUM (0)     0x25, 0x70,                    \/\/   LOGICAL_MAXIMUM (101)     0x05, 0x07,     \/\/   USAGE_PAGE (Key codes)     0x19, 0x00,                    \/\/   USAGE_MINIMUM (Reserved (no event indicated))     0x29, 0x65,                    \/\/   USAGE_MAXIMUM (Keyboard Application)     0x81, 0x00,                    \/\/   INPUT (Data,Ary,Abs)     0xC0,    \/* End Collection                           *\/     \/\/ system controls, like power, needs a 3rd different report and report descriptor     0x05, 0x01,             \/\/ USAGE_PAGE (Generic Desktop)     0x09, 0x80,             \/\/ USAGE (System Control)     0xA1, 0x01,             \/\/ COLLECTION (Application)     0x85, 0x02, \/\/   REPORT_ID     0x95, 0x01,             \/\/   REPORT_COUNT (1)     0x75, 0x02,             \/\/   REPORT_SIZE (2)     0x15, 0x01,             \/\/   LOGICAL_MINIMUM (1)     0x25, 0x03,             \/\/   LOGICAL_MAXIMUM (3)     0x09, 0x82,             \/\/   USAGE (System Sleep)     0x09, 0x81,             \/\/   USAGE (System Power)     0x09, 0x83,             \/\/   USAGE (System Wakeup)     0x81, 0x60,             \/\/   INPUT     0x75, 0x06,             \/\/   REPORT_SIZE (6)     0x81, 0x03,             \/\/   INPUT (Cnst,Var,Abs)     0xC0                   \/\/ END_COLLECTION };    \/* End Collection                           *\/<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u044d\u0442\u043e <em>Report Descriptor<\/em>. \u041f\u043e \u0441\u0443\u0442\u0438, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f <em>vusb<\/em>, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0432 <em>usbconfig.h<\/em> \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0444\u0430\u0439\u043d\u044b. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0434\u0432\u0430 \u0440\u0435\u043f\u043e\u0440\u0442\u0430 &#8212; <em>Keyboard<\/em> \u0441 ID = 1 \u0438 <em>System Control<\/em> \u0441 ID = 2. Usages \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f USB-IF \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 <em>hid-tool<\/em> \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 <a href=\"https:\/\/github.com\/microsoft\/hidtools\" rel=\"noopener noreferrer nofollow\"><em>Waratah<\/em><\/a>. \u0414\u0430\u0436\u0435 \u043e\u0431\u0438\u0434\u043d\u043e \u0437\u0430 \u0440\u0430\u043d\u043d\u0438\u0435 \u043c\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b.<\/p>\n<pre><code class=\"cpp\">static const uint8_t  keyReport[61][2] PROGMEM = { \/\/NUMBER IR_CODE HID_USB_CODE\/\/Keyboard analog (?\/!) IC Button \/*0 *\/{0,0x2E},      \/\/ = key ! zoom+ ! \/*1 *\/{0xD8,0x66},\/\/Power ! Power button \/*2 *\/{0x78,0x3B},\/\/F2 KEY ! Mute button \/*3 *\/{0x20,0x2D},\/\/ - key ! Zoom- ! \/*4 *\/{0xC2,0x3A},\/\/ F1 key ! Menu button ! \/*5 *\/{0x94,0x45},\/\/ F12 key ! Home button ! \/*6 *\/{0xC8,0x4A},\/\/ Home key ! PC button ! \/*7 *\/{0x30,0x1E},\/\/1 \/*8 *\/{0x88,0x1F},\/\/2 \/*9 *\/{0x88,0x04},\/\/A \/*10*\/{0x88,0x05},\/\/B \/*11*\/{0x88,0x06},\/\/C \/*12*\/{0x70,0x20},\/\/3 \/*13*\/{0x70,0x07},\/\/D \/*14*\/{0x70,0x08},\/\/E \/*15*\/{0x70,0x09},\/\/F \/*16*\/{0x08,0x21},\/\/4 \/*17*\/{0x08,0x0A},\/\/G \/*18*\/{0x08,0x0B},\/\/H \/*19*\/{0x08,0x0C},\/\/I \/*20*\/{0xA8,0x22},\/\/5 \/*21*\/{0xA8,0x0D},\/\/J \/*22*\/{0xA8,0x0E},\/\/K \/*23*\/{0xA8,0x0F},\/\/L \/*24*\/{0x48,0x23},\/\/6 \/*25*\/{0x48,0x10},\/\/M \/*26*\/{0x48,0x11},\/\/N \/*27*\/{0x48,0x12},\/\/O \/*28*\/{0x28,0x24},\/\/7 \/*29*\/{0x28,0x13},\/\/P \/*30*\/{0x28,0x14},\/\/Q \/*31*\/{0x28,0x15},\/\/R \/*32*\/{0x28,0x16},\/\/S \/*33*\/{0x98,0x25},\/\/8 \/*34*\/{0x98,0x17},\/\/T \/*35*\/{0x98,0x18},\/\/U \/*36*\/{0x98,0x19},\/\/V \/*37*\/{0x68,0x26},\/\/9 \/*38*\/{0x68,0x1A},\/\/W \/*39*\/{0x68,0x1B},\/\/X \/*40*\/{0x68,0x1C},\/\/Y \/*41*\/{0x68,0x1D},\/\/Z \/*42*\/{0xB8,0x27},\/\/0 \/*43*\/{0xB8,0x2C},\/\/Spacebar \/*44*\/{0x18,0x37},\/\/\".\" key \/*45*\/{0x18,0x25},\/\/\"*\" key(Shift + 8) \/*46*\/{0x58,0x20},\/\/# key(Shift + 3) \/*47*\/{0x58,0x1F},\/\/@ key(Shift + 2) \/*48*\/{0x54,0x2A},\/\/Backspace ! Backspace button \/*49*\/{0xA0,0x52},\/\/up key \/*50*\/{0x10,0x50},\/\/left key \/*51*\/{0x50,0x4F},\/\/right key \/*52*\/{0xB0,0x51},\/\/down key \/*53*\/{0x90,0x28},\/\/Enter (Return) ! Enter button \/*54*\/{0x40,0x42},\/\/F9 key ! Call button \/*55*\/{0xF8,0x29},\/\/Escape ! Return button \/*56*\/{0xF0,0x41},\/\/F8 key ! Decline button \/*57*\/{0x60,0x30},\/\/keypad SQBRAK RIGHT ! Vol+ button \/*58*\/{0x80,0x2F},\/\/keypad SQBRAK LEFT ! Vol- button \/*59*\/{0x82,0x2C},\/\/ Spacebar ! Far\/Near button ! \/*60*\/{0xD0,0x3C},\/\/ F3! LAYOUT ! };<\/code><\/pre>\n<p>\u0410 \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0418\u041a-\u043f\u0443\u043b\u044c\u0442\u0430 \u0432 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u044b \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0443\u043b\u044c\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0443\u043b\u044c\u0442\u0430. \u0414\u0430\u043b\u044c\u0448\u0435 \u0435\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 command \u043f\u0443\u043b\u044c\u0442\u0430 \u0432 \u043c\u0438\u0433\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430. \u0418 \u044d\u0442\u043e \u043d\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u044d\u0442\u043e &#8212; \u0441\u0442\u0438\u043b\u044c. \u041a\u0441\u0442\u0430\u0442\u0438, PROGMEM \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043e \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u044c. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043d\u043e\u0438\u043a\u043e\u0432: \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441, \u0441\u0442\u043e\u0438\u0442 \u043a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u043e \u0432\u0441\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438,   \u0438\u043d\u0430\u0447\u0435 \u043f\u043e \u0434\u0430\u043c\u043f\u0443 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 USB, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u041c\u041a \u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u044b. \u0412\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u0420\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430, \u043d\u043e \u0435\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f vusb, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f. <\/p>\n<pre><code class=\"cpp\">void remote_read() { unsigned int timer_value;   if(nec_state != 0){     timer_value = TCNT0;                         \/\/ Store Timer1 value     TCNT0 = 0;                                   \/\/ Reset Timer1   }   switch(nec_state){    case 0 :                                      \/\/ Start receiving IR data (we're at the beginning of 9ms pulse)     TCNT0  = 0;                                  \/\/ Reset Timer1 TCCR0B |= (1 &lt;&lt; 2)|(1 &lt;&lt; 0);\/\/ set16.5MHz\/1024 prescaler TCCR0B &amp;= ~(1 &lt;&lt; 1); nec_state = 1;                               \/\/ Next state: end of 9ms pulse (start of 4.5ms space)     pulse_counts = 0;     return;    case 1 :                                      \/\/ End of 9ms pulse     if((timer_value > 152) || (timer_value &lt; 138)){         \/\/ Invalid interval ==> stop decoding and reset      nec_state = 0;                             \/\/ Reset decoding process       TCCR0B = 0;                                \/\/ Disable Timer1 module     }     else       nec_state = 2;                             \/\/ Next state: end of 4.5ms space (start of 562\u00b5s pulse)     return;    case 2 :                                      \/\/ End of 4.5ms space     if((timer_value > 80) || (timer_value &lt; 65)){      repeats++;\/\/repeat sequence if 2.2 ms space        nec_state = 0;                             \/\/ Reset decoding process       TCCR0B = 0;                                \/\/ Disable Timer1 module     }     else       nec_state = 3;                             \/\/ Next state: end of 562\u00b5s pulse (start of 562\u00b5s or 1687\u00b5s space)     return;    case 3 :                                      \/\/ End of 562\u00b5s pulse     if((timer_value > 11) || (timer_value &lt; 7)){           \/\/ Invalid interval ==> stop decoding and reset       TCCR0B = 0;                                \/\/ Disable Timer1 module       nec_state = 0;                             \/\/ Reset decoding process     }     else       nec_state = 4;                             \/\/ Next state: end of 562\u00b5s or 1687\u00b5s space     return;    case 4 :                                      \/\/ End of 562\u00b5s or 1687\u00b5s space     if((timer_value > 29) || (timer_value &lt; 7)){           \/\/ Time interval invalid ==> stop decoding       TCCR0B = 0;                                \/\/ Disable Timer1 module       nec_state = 0;                             \/\/ Reset decoding process       return;     }     if( timer_value > 16)                     \/\/ If space width > 1ms (short space) { nec_code |= (1 &lt;&lt; (31 - pulse_counts) ); }     else                                        \/\/ If space width &lt; 1ms (long space) { nec_code &amp;= ~(1 &lt;&lt; (31 - pulse_counts) ); }     pulse_counts++;     if(pulse_counts > 31){                                  \/\/ If all bits are received      nec_ok = 1;                                \/\/ Decoding process OK GIMSK &amp;= ~(1 &lt;&lt; PCIE);   return;     }     nec_state = 3;                               \/\/ Next state: end of 562\u00b5s pulse (start of 562\u00b5s or 1687\u00b5s space)   } }<\/code><\/pre>\n<figure class=\"float\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/429\/3ad\/6b1\/4293ad6b10bb3f8ac41a7c8180feb272.png\" width=\"auto\" height=\"auto\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/429\/3ad\/6b1\/4293ad6b10bb3f8ac41a7c8180feb272.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0410 \u0432\u043e\u0442 \u0438 \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043e\u0442 \u043f\u0443\u043b\u044c\u0442\u0430. \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440, \u0436\u0434\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0438\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438, \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0432\u0440\u0430\u0437\u0443\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0418 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c 4 \u0431\u0430\u0439\u0442\u0430  \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0418\u0437 \u043d\u0438\u0445 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 2-\u0439 &#8212; \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d, \u0430 \u0441\u0432\u0435\u0440\u044f\u0442\u044c \u0441 \u0438\u043d\u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041a\u0441\u0442\u0430\u0442\u0438, <em>repeats<\/em> \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0435\u0449\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0445\u043e\u0441\u0442\u0443 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u0415\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u044d\u043c\u043f\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0447\u0430\u0441\u0442\u043e\u0442\u044b <em>usbpoll<\/em>, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0439.<\/p>\n<pre><code class=\"cpp\">\/\/ during normal operation, a SOF marker is sent by the host every 1ms  \/\/ if no SOF markers are received for a longer period of time, it  \/\/ indicates that the USB bus has been suspended (or disconnected, but  \/\/ then we lose power as well)   if(usbSofCount == old_sof) { \/\/ I was too lazy to use a timer, so I count how many iterations of \/\/ the main loop have passed without a SOF marker timer_poll_no_usbSOF++; if(timer_poll_no_usbSOF > 30 \/*&amp;&amp; usb_sleep == USB_ACTIVE*\/)\/\/125ms long? usb_sleep = USB_SLEEPING; } else { old_sof = usbSofCount; timer_poll_no_usbSOF = 0; usb_sleep = USB_ACTIVE; }  if(usb_sleep != USB_ACTIVE) { if(usb_sleep == USB_SLEEPING &amp;&amp; _code) { \/\/ send USB remote wakeup by signalling SE0 (both D+ and D- low) for 10 ms unsigned char tmp0 = PORTB; unsigned char tmp1 = DDRB;  usbPoll();  cli(); \/\/ disable interrupts, prevent V-USB from interfering PORTB=(tmp0 &amp; ~(1&lt;&lt;USB_CFG_DMINUS_BIT)) | (1&lt;&lt;USB_CFG_DPLUS_BIT); DDRB|=((1&lt;&lt;USB_CFG_DPLUS_BIT)|(1&lt;&lt;USB_CFG_DMINUS_BIT)); for(i=0;i&lt;10;i++) { \/\/wdt_reset(); _delay_ms(1); } PORTB = tmp0; DDRB = tmp1; usb_sleep = USB_WAKING; sei();          usbPoll();\/\/test } }  GIMSK |= (1 &lt;&lt; PCIE);\/\/  enables IR receiver  for (uint8_t k = 0; k &lt; 6; k++)\/\/125! ms with enabled interrupts (108 ms - repeat sequences period). {         usbPoll(); _delay_ms(25); if (repeats > last_repeats) { last_repeats = repeats; k = 0; } } usbPoll(); <\/code><\/pre>\n<pre><code class=\"cpp\">if ( (state &amp;&amp; usbInterruptIsReady() &amp;&amp; repeats&lt;=1) )\/\/ if key released { state = 0; repeats = 1; last_repeats = 1; for (int t=1; t&lt;8; t++) reportBuffer[t] = 0; nec_state = 0; usbSetInterrupt(reportBuffer, sizeof(reportBuffer)); } <\/code><\/pre>\n<figure class=\"float\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6a2\/427\/983\/6a2427983222058299fe7510891906c0.png\" width=\"auto\" height=\"auto\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a2\/427\/983\/6a2427983222058299fe7510891906c0.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b Start of Frame (SOF)    \u043e\u0442 \u0445\u043e\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043d\u0430\u0441 \u0445\u043e\u0441\u0442 \u0438\u043b\u0438 \u0437\u0430\u0431\u0438\u043b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u041e\u0421 \u0432 \u0441\u043e\u043d. \u0414\u043b\u044f \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u044b \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c D+ \u0438 D- \u0432 <em>low<\/em>. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432 \u0431\u0438\u043e\u0441\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <em>USB Remote Wake Up Enabled<\/em>. \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0446\u0438\u043a\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u043b\u0435\u0437\u0430\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u044f\u0442. \u041a\u0430\u043a-\u043d\u0438\u043a\u0430\u043a, <em>vusb<\/em> \u0443\u0436\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 <em>INT0<\/em>, \u0438 \u0432\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u043e 150 \u043c\u0441 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0446\u0438\u043a\u043b\u0430 \u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0436\u0438\u043c\u043e \u043c\u0430\u043b\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u0417\u0430\u0442\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0446\u0438\u043a\u043b\u0430. \u0418\u0437-\u0437\u0430 \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 AtTiny \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435  <em>*_poll<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a &#171;\u0442\u0438\u043f\u0430_\u0442\u0430\u0439\u043c\u0435\u0440\u044b&#187; (<code>*_poll > 0 -><\/code><em> <\/em>\u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0446\u0438\u043a\u043b\u0430, \u0438\u043d\u0430\u0447\u0435 &#171;\u0442\u0438\u043f\u0430_\u0442\u0430\u0439\u043c\u0435\u0440&#187; \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c), \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442.<\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043e\u0442\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043a\u0430\u043d-\u043a\u043e\u0434, \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u0430.<\/p>\n<pre><code class=\"cpp\">if(nec_ok || timer_poll_switchkey > 1) {                                    \/\/ If the mcu receives NEC message with successful if (nec_ok &amp;&amp; timer_poll_switchkey==0) { command = nec_code >> 8; nec_state = 0; TCCR0B = 0;                                  \/\/ Disable Timer1 module }  for(int j=0; j&lt;=60; j++) { if ( command == pgm_read_byte(&amp;keyReport[j][0]) ) {                             if ((j+alt_counter==46) || (j+alt_counter==47))\/\/need for getting start of quevue, else index on the end                             {                                 if (timer_poll_switchkey == 0)\/\/ is first                                 {                                     lastKey = pgm_read_byte(&amp;keyReport[j][1]);                                     alt_counter = 0;                                     timer_poll_switchkey++;\/\/start _timer_                                     break;                                 }                                 if (timer_poll_switchkey&lt;20 &amp;&amp; timer_poll_switchkey>2 &amp;&amp; nec_ok)\/\/ choose multibutton                                 {                                     if (lastKey == pgm_read_byte(&amp;keyReport[j+alt_counter][1]) )\/\/ is not first                                     {                                         if (alt_counter > 0) alt_counter = 0;\/\/offset of letter position                                         else alt_counter++;                                     }                                      lastKey = pgm_read_byte(&amp;keyReport[j+alt_counter][1]);                                     reportBuffer[1] = 0b00000010;\/\/Modifier keys status                                     reportBuffer[3] = lastKey;                                     break;                                 }                                 else                                     if (timer_poll_switchkey>=20)\/\/end _timer_                                         {                                         lastKey = pgm_read_byte(&amp;keyReport[j+alt_counter][1]);\/\/ end waiting, send                                         alt_counter = 0;                                         timer_poll_switchkey = 0;\/\/end _timer_                                         reportBuffer[1] = 0b00000010;\/\/Modifier keys status                                         reportBuffer[3] = lastKey;                                         _code = 1;                                         break;                                         }                             }                             else \/\/end _timer_                                 {                                 lastKey = pgm_read_byte(&amp;keyReport[j][1]);\/\/ end waiting, send                                 alt_counter = 0;                                 timer_poll_switchkey = 0;\/\/end _timer_                                 reportBuffer[3] = lastKey;                                 _code = 1;                                 if ((j+alt_counter==46) || (j+alt_counter==47)|| (j+alt_counter==48))                                     reportBuffer[1] = 0b00000010;\/\/Modifier keys status                                 else                                     reportBuffer[1] = 0;\/\/Modifier keys status                                 break;                             }                         } }  if (timer_poll_switchkey > 1 || timer_poll_switchkey==0) \/\/ if first time, one cycle more { nec_ok = 0;                                  \/\/ Reset decoding process address = 0; nec_code = 0; } } <\/code><\/pre>\n<figure class=\"float\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f79\/2d7\/763\/f792d77637f04b768103bbb129442edc.png\" width=\"auto\" height=\"auto\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f79\/2d7\/763\/f792d77637f04b768103bbb129442edc.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e\u0442 \u0436\u0443\u0442\u043a\u0438\u0439 \u043a\u043b\u0443\u0431\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043d\u0430 \u0445\u043e\u0441\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0418\u041a-\u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#171;\u0442\u0438\u043f\u0430-\u0442\u0430\u0439\u043c\u0435\u0440\u0430&#187;, \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043d\u0430 \u043f\u0443\u043b\u044c\u0442\u0435 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u041e\u0421. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0441\u0442\u0430\u0440\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432: \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439. \u0410 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435, \u0441 \u0434\u0432\u0443\u043c\u044f-\u0447\u0435\u0442\u044b\u0440\u044c\u043c\u044f. \u0412\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 &#171;\u0442\u0438\u043f\u0430-\u0442\u0430\u0439\u043c\u0435\u0440\u043e\u043c&#187; \u0432\u0440\u0435\u043c\u044f. \u0412 \u043a\u043e\u0434\u0435 \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0443\u043b\u044c\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u043d\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">if ((_code == 1 &amp;&amp; timer_poll_switchkey==0 &amp;&amp; !state) || (repeats > 1)) { state = 1;  if (usbInterruptIsReady()) { if (reportBuffer[3] == 0x66) { reportBuffer[0] = 0x2;\/\/ ID reportBuffer[1] = 0x1;\/\/ SysCtrl Sleep  usbSetInterrupt(reportBuffer, \/*sizeof(reportBuffer)*\/2);  while(!usbInterruptIsReady());  reportBuffer[1] = 0; usbSetInterrupt(reportBuffer, \/*sizeof(reportBuffer)*\/2);  state = 0; } else usbSetInterrupt(reportBuffer, \/*sizeof(reportBuffer)*\/8);  } timer_poll_switchkey = 0;\/\/ stop timer buildReport(); alt_counter = 0; _code = 0; command = -1; }  if (timer_poll_switchkey > 0) timer_poll_switchkey++; <\/code><\/pre>\n<figure class=\"float full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/06d\/aca\/10e\/06daca10e9ad16479437d9c6f0193ec9.png\" width=\"908\" height=\"1033\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/06d\/aca\/10e\/06daca10e9ad16479437d9c6f0193ec9.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0443 \u0442\u0443\u0442, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0441\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <em>Power<\/em> \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u041e\u0421 (<em>Power Controls Usage Types<\/em> \u0442\u0438\u043f\u0430 <em>One Shot Control<\/em>, \u0430 <em>Keyboard &#8212; Selector<\/em>, \u0441\u043c. \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 HID), \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 &#8212; \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043a\u0430\u043d-\u043a\u043e\u0434, \u043f\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438 &#8212; \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u0440\u0435\u043f\u043e\u0440\u0442. \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c id 2, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 &#8212; 1. \u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u0430\u0448\u0438\u043c <em>Report Descripto<\/em>r \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c 2 \u0431\u0430\u0439\u0442\u0430, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c &#8212; 8. <\/p>\n<h2>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/h2>\n<p>\u0423\u0443\u0443. \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u0436\u0435 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e <em>UART<\/em>, \u0432\u044b\u0439\u0434\u0435\u0442 \u0437\u0430\u043f\u0430\u0440\u043d\u043e\u0439. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u044f \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u0432 \u0433\u0438\u0442\u0435. \u041a\u0440\u0430\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0443 \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c:<\/p>\n<ol>\n<li>\n<p>\u041d\u0443\u0436\u0435\u043d <em>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 ISP<\/em>. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u043b\u0430\u0442\u044b \u0410\u0440\u0434\u0443\u0438\u043d\u043e. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0447\u0442\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445. <\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <em>avrdude<\/em> \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u041e\u043d\u0430 \u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 <em>Arduino IDE<\/em>, \u043d\u043e \u0434\u043e \u043d\u0435\u0433\u043e \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u0443\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043b\u043e\u0433\u0435 \u0432\u044b\u0432\u043e\u0434\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c, \u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0431\u043e\u043b\u043e\u0447\u0435\u043a, \u043c\u043d\u0435 \u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c <a href=\"https:\/\/easyelectronics.ru\/sinaprog-graficheskaya-obolochka-dlya-avrdude.html\" rel=\"noopener noreferrer nofollow\"><em>Sina Prog<\/em><\/a>. \u041d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <em>fuse \u0431\u0438\u0442\u043e\u0432<\/em> \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438, \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c <a href=\"https:\/\/forum.easyelectronics.ru\/viewtopic.php?f=4&amp;t=2975\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. \u041d\u043e \u043f\u043e-\u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 <em>makefile &#8212; make clean, make fuse, make flash<\/em> &#8212; \u0438 \u0433\u043e\u0442\u043e\u0432\u043e.<\/p>\n<\/li>\n<li>\n<p>Fuse-\u0431\u0438\u0442\u044b \u043d\u0443\u0436\u043d\u043e \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0432 \u0442\u043e\u043c \u0436\u0435 Makefile. \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435 &#8212; \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0440\u043e\u0447\u044c \u043e\u043a\u0438\u0440\u043f\u0438\u0447\u0438\u0442\u044c \u041c\u041a! \u0421\u0430\u043c\u0443 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0431\u0435\u0440\u0435\u0447\u044c &#8212; \u043e\u0441\u043e\u0431\u043e\u0439 \u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u044c\u044e \u043e\u043d\u0430 \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0442\u0430\u043a\u0442 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0443\u043f\u0435\u0440\u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c. \u041d\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u044f \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b \u0441\u0442\u0435\u043d\u0434 \u0441 \u043e\u043a\u043e\u043b\u043e\u043d\u0443\u043b\u0435\u0432\u044b\u043c \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432, \u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u0432 \u0443\u043f\u043e\u0440 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u041c\u041a, \u043f\u043e\u043a\u0430 \u0447\u0443\u0442\u044c \u043d\u0435 \u043f\u043e\u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c GND, \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u0434\u0435\u043d\u0435\u0448\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0430\u043a\u0442. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u043d\u043e \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0443 \u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u043c \u0438 \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c PB0 &#8212; \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u043c \u043e\u043d \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f. <\/p>\n<\/li>\n<\/ol>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u0442\u043e\u0434\u044b \u0431\u0435\u0437\u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438, \u043d\u043e \u0447\u0442\u043e \u0434\u0440\u0435\u0432\u043d\u0438\u0435 HID-\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0447\u0442\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0434\u0440\u0435\u0432\u043d\u0438\u0435 \u0418\u041a-\u043f\u0443\u043b\u044c\u0442\u044b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u0435\u0431\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0435\u0449\u0435 \u0438 \u043d\u0430\u0441 \u0441 \u0432\u0430\u043c\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u043c\u0438\u0444\u0430\u0445 \u043e \u0432\u0435\u043b\u0438\u043a\u0438\u0445 \u043f\u0440\u043e\u0433\u0435\u0440\u0430\u0445-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0449\u0438\u043a\u0430\u0445 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0438 \u0438\u0445 \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u0430\u0445-\u0430\u0439\u0442\u0438RUST&#8217;\u0430\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0435\u0441\u0442\u044c&#8230; <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u0442\u0430\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u043e\u043c \u043f\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0432\u0441\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c, \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e &#8212; \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u043c \u0441 \u043f\u0430\u0440\u043e\u0439-\u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0440\u044e\u043a\u043e\u0432, \u0430 \u0434\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e &#8212; \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f. \u0414\u0435\u0440\u0437\u0430\u0439\u0442\u0435!<\/p>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432:<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/AndreyGRY\/AQ-IRR\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/AndreyGRY\/AQ-IRR<\/a> &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0433\u0438\u0442;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/alexgyver.ru\/lessons\/naked-chip\/\" rel=\"noopener noreferrer nofollow\">https:\/\/alexgyver.ru\/lessons\/naked-chip\/<\/a> &#8212; \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435 bare-metal-AVR;<\/p>\n<\/li>\n<li>\n<p><a href=\"http:\/\/microsin.ru\/content\/view\/613\/44\/\" rel=\"noopener noreferrer nofollow\">http:\/\/microsin.ru\/content\/view\/613\/44\/<\/a> &#8212; \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 vusb;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.microchip.com\/en-us\/product\/ATtiny45\" rel=\"noopener noreferrer nofollow\">https:\/\/www.microchip.com\/en-us\/product\/ATtiny45<\/a> &#8212; \u043e\u0431 AtTiny45;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices\" rel=\"noopener noreferrer nofollow\">https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices<\/a> &#8212; \u043e HID;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.keil.com\/pack\/doc\/mw\/USB\/html\/_u_s_b__endpoints.html\" rel=\"noopener noreferrer nofollow\">https:\/\/www.keil.com\/pack\/doc\/mw\/USB\/html\/_u_s_b__endpoints.html<\/a> &#8212; \u043f\u0440\u043e \u043e\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.researchgate.net\/publication\/297739371_The_Development_of_USB_HID_based_Fixed_Cockpit_Simulator\" rel=\"noopener noreferrer nofollow\">https:\/\/www.researchgate.net\/publication\/297739371_The_Development_of_USB_HID_based_Fixed_Cockpit_Simulator<\/a> &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 HID-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/usb.org\/document-library\/hid-usage-tables-13\" rel=\"noopener noreferrer nofollow\">https:\/\/usb.org\/document-library\/hid-usage-tables-13<\/a> &#8212; \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f HID Usage Tables;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.usb.org\/document-library\/device-class-definition-hid-111\" rel=\"noopener noreferrer nofollow\">https:\/\/www.usb.org\/document-library\/device-class-definition-hid-111<\/a> &#8212; \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f Device Class Definition for HID;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices\" rel=\"noopener noreferrer nofollow\">https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices<\/a> &#8212; \u043f\u0440\u043e boot\/report \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/gist.github.com\/MightyPork\/6da26e382a7ad91b5496ee55fdc73db2\" rel=\"noopener noreferrer nofollow\">https:\/\/gist.github.com\/MightyPork\/6da26e382a7ad91b5496ee55fdc73db2<\/a> &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/257041\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/post\/257041\/<\/a> &#8212; \u043f\u0440\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b NEC \u043d\u0430 AVR;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/codeandlife.com\/2012\/02\/22\/v-usb-with-attiny45-attiny85-without-a-crystal\/\" rel=\"noopener noreferrer nofollow\">https:\/\/codeandlife.com\/2012\/02\/22\/v-usb-with-attiny45-attiny85-without-a-crystal\/<\/a> &#8212; \u0441\u0445\u0435\u043c\u0430 USB \u0434\u043b\u044f AtTiny45;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.chipdip.ru\/product\/ft232rq\" rel=\"noopener noreferrer nofollow\">https:\/\/www.chipdip.ru\/product\/ft232rq<\/a> &#8212; \u043f\u0440\u043e FT232;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/microsoft\/hidtools\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/microsoft\/hidtools<\/a> &#8212; \u043f\u0440\u043e Waratah;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/easyelectronics.ru\/sinaprog-graficheskaya-obolochka-dlya-avrdude.html\" rel=\"noopener noreferrer nofollow\">https:\/\/easyelectronics.ru\/sinaprog-graficheskaya-obolochka-dlya-avrdude.html<\/a> &#8212; \u043f\u0440\u043e SinaProg;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/forum.easyelectronics.ru\/viewtopic.php?f=4&amp;t=2975\" rel=\"noopener noreferrer nofollow\">https:\/\/forum.easyelectronics.ru\/viewtopic.php?f=4&amp;t=2975<\/a> &#8212; \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f avrdude<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/714436\/\"> https:\/\/habr.com\/ru\/post\/714436\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. <\/p>\n<p>\u042f \u044d\u043c\u0431\u0435\u0434\u0434\u0435\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u044d\u0442\u043e \u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430, \u0447\u0442\u043e \u0432\u043e\u0437\u044f\u0442\u0441\u044f \u0441 \u0447\u0438\u043f\u0430\u043c\u0438 \u0434\u043b\u044f \u0441\u0442\u0438\u0440\u0430\u043b\u043e\u043a, \u0410\u0440\u0434\u0443\u0438\u043d\u043e-\u043f\u043e\u0434\u0435\u043b\u043a\u0430\u043c\u0438 \u0438 \u0443\u043c\u043d\u044b\u043c\u0438 \u0434\u043e\u043c\u0430\u043c\u0438), \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u0435\u0431\u0435\u0437\u044b\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0430. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0443\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u043d\u0435 \u043f\u0435\u0442-\u043f\u0440\u043e\u0435\u043a\u0442, \u0430 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u043f\u0443\u0449\u0435\u043d\u0430. \u0412\u0441\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0434\u0430\u043d\u044b \u043f\u043e \u0445\u043e\u0434\u0443 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435. \u041d\u043e <s>\u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438<\/s> \u043a\u043e\u0434 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 <em>open-source<\/em>, \u0438 \u044f \u043f\u043e \u0438\u0434\u0435\u0435 \u043e\u0431\u044f\u0437\u0430\u043d \u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0442 <a href=\"https:\/\/github.com\/AndreyGRY\/AQ-IRR\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0433\u0438\u0442<\/a>.<\/p>\n<p><em>Nota bene<\/em>: \u044f \u041d\u0415 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. <a href=\"https:\/\/studio-diy.3dn.ru\/news\/mikrokontrollery_attiny25_attiny45_attiny85\/2014-12-23-40\" rel=\"noopener noreferrer nofollow\">ATtiny45 <\/a>&#8212; <s>\u044d\u0442\u043e \u0434\u0440\u0435\u0432\u043d\u044f\u044f \u0445\u0440\u0435&#8230;<\/s> <em>deprecated MCU <\/em>(\u0438\u0437\u0432\u0438\u043d\u044f\u044e\u0441\u044c \u0437\u0430 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0438\u0437\u043c) \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u043c\u0438, \u0438 \u043b\u0438\u0447\u043d\u043e \u044f \u0431\u044b \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 STM32. \u041d\u043e \u043a\u0440\u043e\u0432\u0430\u0432\u044b\u0439 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437, \u0432\u0441\u0435 \u0434\u0435\u043b\u0430 &#8212; \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 AVR, \u0438 \u0432 \u0441\u0435\u0440\u0438\u0438 \u0442\u0430\u043a\u043e\u0435 \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0439 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435.<\/p>\n<figure class=\"bordered full-width\"><figcaption>\u0418 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438, \u0437\u0430 \u044d\u0442\u0443 \u0431\u043e\u043b\u044c&#8230;<\/figcaption><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0433\u043e\u043b\u043e\u0432\u043d\u044f\u043a\u0430 \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0448\u0438\u0448\u0435\u043a, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f. \u0421\u0430\u043c\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u0432\u044b\u0448\u043b\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c &#8212; \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432 \u041f\u041e \u0438 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0435, \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435. \u0418\u043d\u0430\u0447\u0435 \u044f \u0431\u044b \u0438 \u043d\u0435 \u043f\u043e\u0448\u0435\u043b \u0441 \u043d\u0438\u043c \u0432 \u043b\u044e\u0434\u0438. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c.<\/p>\n<h3>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430<\/h3>\n<p>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430-\u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0418\u041a-\u043f\u0443\u043b\u044c\u0442\u0430 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 HID-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 USB-\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u041e\u0421, \u043d\u043e \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0432\u0432\u043e\u0434\u0430. \u041f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438 \u043d\u0435\u0442 &#8212; \u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 <em>NEC<\/em> (\u043f\u0443\u043b\u044c\u0442\u0430). \u041f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 (\u041c\u041a), \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0438 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u0438.<\/p>\n<p>\u041f\u0440\u044f\u043c\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430 \u041f\u041e \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b (\u0445\u043e\u0442\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435), \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443\u0442.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d? \u0421\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438 \u0432\u0430\u043c. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u041f\u041a \u043f\u0443\u043b\u044c\u0442\u043e\u043c \u043b\u0438\u0431\u043e \u0445\u043e\u0434\u044c\u0431\u044b \u043f\u043e GUI-\u043c\u0435\u043d\u044e \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c Linux-\u0431\u0430\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043c\u0430\u0440\u0442-TV. \u0417\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0436\u0435\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c. \u0425\u0430\u043a\u0435\u0440\u0441\u043a\u0438\u0439 <em>key-logger<\/em> (\u043e\u0441\u0443\u0436\u0434\u0430\u044e). \u041f\u0440\u043e\u0441\u0442\u043e <em>just for lulz<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043b\u044c\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043c\u043d\u043e\u0433\u043e&#8230;<\/p>\n<h2>\u041b\u0438\u043a\u0431\u0435\u0437<\/h2>\n<p>\u0421\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u044f\u0441\u043d\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u044d\u0442\u043e \u0430\u0437\u0431\u0443\u0447\u043d\u044b\u0435 \u0438\u0441\u0442\u0438\u043d\u044b, \u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u044e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e USB \u0438 HID: <\/p>\n<p>\u0428\u0438\u043d\u0430 USB, \u0445\u043e\u0442\u044c \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0441\u0442 \u0441 \u0434\u0435\u0432\u0430\u0439\u0441\u043e\u043c, \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u0443\u044e \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e, \u0433\u0434\u0435 \u043a\u043e\u0440\u043d\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 <em>Host<\/em>, \u0443\u0437\u043b\u0430\u043c\u0438 &#8212; <em>Hubs<\/em>, \u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430\u043c\u0438 &#8212; <a href=\"https:\/\/www.keil.com\/pack\/doc\/mw\/USB\/html\/_u_s_b__endpoints.html\" rel=\"noopener noreferrer nofollow\"><em>Endpoints <\/em><\/a>\u0442\u0438\u043f\u0430 <em>Control, Interrupt <\/em>\u0438 <em>Bulk<\/em>. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 2 <em>endpoints <\/em>&#8212; <em>Control <\/em>\u0438 <em>Interrupt. Control <\/em>\u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430, \u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <em>vusb<\/em>. <em>Interrupt <\/em>\u0436\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 <em>Device-to-Host<\/em>. \u0414\u0435\u0432\u0430\u0439\u0441 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041d\u043e \u0445\u043e\u0441\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043d\u044f\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435.  <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f USB \u0432 \u0447\u0430\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 <em>Human Interface Device (HID)<\/em> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 USB \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u042d\u0412\u041c \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u041e\u0421 &#8212; \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 HID <em>mouclass.sys\/kbdclass.sys\/&#8217;etc&#8217;.sys <\/em>\u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u0443 \u0438\u043b\u0438 <em>hid-generic<\/em> \u0438 \u0442.\u0434., \u043d\u0435 \u0441\u0443\u0442\u044c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043a\u0430\u043a \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e <em>Mouse<\/em>, \u0438 \u043a\u0430\u043a <a href=\"https:\/\/www.researchgate.net\/publication\/297739371_The_Development_of_USB_HID_based_Fixed_Cockpit_Simulator\" rel=\"noopener noreferrer nofollow\"><em>Spaceship Simulation Device<\/em><\/a>, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <em>Keyboard+Power Controls<\/em> (\u0432\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0442.\u043a. \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u043c\u0443 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u043a\u043d\u043e\u043f\u043a\u0430 Power \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 <em>ACPI. <\/em>\u041d\u0430\u043c \u0442\u0430\u043a\u0430\u044f \u0440\u043e\u0441\u043a\u043e\u0448\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0445\u043d\u0435\u043c \u043a\u0440\u043e\u043c\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0435\u0449\u0435 \u0438 <em>Power Controls device<\/em>).<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 <em>Usages<\/em>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043a\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 <a href=\"https:\/\/usb.org\/document-library\/hid-usage-tables-13\" rel=\"noopener noreferrer nofollow\"><em>HID Usage Tables<\/em><\/a>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u044b\u0439 \u0442\u043e\u043a, <em>Vendor ID<\/em>, \u0438 \u0442.\u0434. \u0412\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e <a href=\"https:\/\/www.usb.org\/document-library\/device-class-definition-hid-111\" rel=\"noopener noreferrer nofollow\"><em>Device Class Definition for HID<\/em><\/a>, \u0438\u043d\u0430\u0447\u0435 \u043c\u043d\u043e\u0433\u043e\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c.<\/p>\n<p>\u041f\u0440\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b:<\/p>\n<p>\u042d\u0442\u043e \u043d\u0438\u0437\u043a\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 HID-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043e\u0431\u0449\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441 \u0445\u043e\u0441\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0435\u043c \u043a\u0440\u043e\u043c\u0435 <em>Interrupt-IN<\/em>, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u0445, \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u043f\u043e <em>Interrupt-OUT<\/em> &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0438 \u0445\u043e\u0441\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435. \u041d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <em>Interrupt-OUT <\/em>\u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0430\u0435\u043c &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 Caps Lock \/ Num Lock \/ Scroll Lock, \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. <\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u043a \u0445\u043e\u0441\u0442\u0443 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0431\u0430\u0439\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <em>report protocol<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0441\u0430\u043c\u0438 \u0432 <em>Report Descriptor.<\/em> \u0412\u043e\u043e\u0431\u0449\u0435 \u0432 <em>Interface Descriptor<\/em> \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"https:\/\/wiki.osdev.org\/USB_Human_Interface_Devices\" rel=\"noopener noreferrer nofollow\"><em>boot protocol<\/em><\/a> \u0438 \u0442\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e. \u041e\u0431\u044b\u0447\u043d\u043e <em>report protocol<\/em> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 8 \u0431\u0430\u0439\u0442: <\/p>\n<ul>\n<li>\n<p>0-\u0439 \u0431\u0430\u0439\u0442 &#8212; <em>Modifier keys status<\/em> &#8212; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448;<\/p>\n<\/li>\n<li>\n<p>1-\u0439 \u0431\u0430\u0439\u0442 &#8212; <em>Reserved field<\/em> &#8212; \u0431\u0435\u0437 \u0440\u0430\u0437\u043d\u0438\u0446\u044b;<\/p>\n<\/li>\n<li>\n<p>2-7 \u0431\u0430\u0439\u0442\u044b &#8212; <em>Scan codes<\/em> &#8212; \u0434\u043e 6 \u043a\u043e\u0434\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448.<\/p>\n<\/li>\n<\/ul>\n<p>8 \u0431\u0438\u0442 \u0431\u0430\u0439\u0442\u0430 <em>Modifier keys status<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Right\/Left Ctrl\/Shift\/Alt\/GUI. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e \u0448\u0435\u0441\u0442\u0438 \u043d\u0430\u0436\u0430\u0442\u044b\u0445 \u043a\u043b\u0430\u0432\u0438\u0448 \u0410\u043b\u0444\u0430\u0432\u0438\u0442\u044b \u0441\u043a\u0430\u043d-\u043a\u043e\u0434\u043e\u0432 \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435. \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0443 <a href=\"https:\/\/gist.github.com\/MightyPork\/6da26e382a7ad91b5496ee55fdc73db2\" rel=\"noopener noreferrer nofollow\">MightyPork<\/a>. \u041d\u043e \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u0430\u0439\u0442 \u0434\u043b\u044f <em>Report ID<\/em>.<\/p>\n<p>\u0415\u0449\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448. Auto-repeat &#8212; \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0437\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u043d-\u043a\u043e\u0434 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u043d\u0435 \u043a\u0430\u043a \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435, \u043d\u043e \u043a\u0430\u043a \u0435\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0422\u043e \u0435\u0441\u0442\u044c, \u043d\u0430\u0436\u0430\u0442\u0430\u044f &#171;\u0410&#187; \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 &#8216;\u0447\u0430\u0441\u0442\u043e\u0442\u0430_\u043e\u043f\u0440\u043e\u0441\u0430&#8217; * &#8216;\u0432\u0440\u0435\u043c\u044f_\u043f\u0430\u0443\u0437\u044b&#8217; \u0440\u0430\u0437, \u043f\u043e\u043a\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u0441 &#171;0&#187; \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u0410&#187;. \u0411\u044b\u0432\u0430\u043b\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0447\u0442\u043e \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043c\u0430\u0442\u0447\u0430 \u0432 CS-GO \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0435 \u0438\u0434\u0442\u0438, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0434\u043e \u043b\u0430\u0433\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0443? \u0418\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u044e\u0431\u0443\u044e &#8212; \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041f\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u041c\u041a:<\/p>\n<p><a href=\"https:\/\/www.microchip.com\/en-us\/product\/ATtiny45\" rel=\"noopener noreferrer nofollow\"><em>ATtiny45 <\/em><\/a>&#8212; \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 <em>AVR<\/em>. \u041d\u0430 <em>AVR<\/em> \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u044b <em>Arduino<\/em> (\u0441 \u043a\u043b\u043e\u043d\u0430\u043c\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a, \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0410\u0440\u0434\u0443\u0438\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 MCU, \u0442\u043e\u0439 \u0436\u0435 STM32. \u041d\u043e \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0438\u0442 \u0436\u0438\u0440\u043d\u044b\u0439 \u043f\u043e \u043c\u0435\u0440\u043a\u0430\u043c AVR <em>ATmega328<\/em> \u0441 \u0432\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u043c \u0430\u0440\u0434\u0443\u0438\u043d\u043e\u0432\u0441\u043a\u0438\u043c \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u043e\u043c &#8212; \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0437\u0430\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430). \u041d\u0430 \u0431\u043e\u0440\u0442\u0443 <em>ATtiny45<\/em> 4 \u041a\u0411 \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0435\u043c\u043d\u043e\u0433\u043e EEPROM, 6 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u043e\u0436\u0435\u043a, 1 \u0442\u0430\u0439\u043c\u0435\u0440, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u043e 20 \u041c\u0413\u0446.  \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c <em>USB 1.0<\/em> <em>Low-Speed<\/em> (1.5 Mb\/s). \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0434\u0430\u0436\u0435 <em>Full-Speed (<\/em>12 Mb\/s) ATtiny \u043d\u0435 \u0432\u044b\u0442\u044f\u043d\u0435\u0442. \u0412\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0440\u0446\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043d\u043e\u0436\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 8\u041c\u0413\u0446 RC-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 2. \u041d\u043e 16 \u043d\u0430 1.5 \u043d\u0430\u0446\u0435\u043b\u043e \u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 16,5 \u041c\u0413\u0446. \u0422\u0430\u043a\u0443\u044e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0448\u044c, \u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 USB \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 16\u041c\u0413\u0446.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 USB \u0431\u0435\u0440\u0443\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430\u044f <em>vusb<\/em>.\u041d\u0430\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0435, \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>usbconfig.h<\/em> \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435. <\/p>\n<p>\u041f\u0440\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 NEC:<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u043d\u0444\u0440\u0430\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0418\u041a-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u043b \u043f\u043e\u0441\u044b\u043b\u043a\u0443. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 AVR <a href=\"https:\/\/habr.com\/ru\/post\/257041\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043c\u043e\u0442\u0440\u0438 \u0442\u0443\u0442<\/a>, \u043d\u043e \u0435\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e &#8212; \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430, \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0431\u0430\u0439\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u0441\u044b\u043b\u043a\u0430 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f, \u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043b\u0438\u043d\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u042d\u0445, \u044f \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0431\u0438\u043b \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438&#8230;<\/p>\n<figure class=\"bordered\"><figcaption><\/figcaption><\/figure>\n<h4>\u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h4>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u043b\u0430\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u041c\u041a, \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a \u0438 \u043f\u0430\u0441\u0441\u0438\u0432\u043a\u0430, \u043d\u043e \u0441\u0445\u0435\u043c\u0443 \u0432\u0430\u043c \u044f \u043d\u0435 \u043f\u043e\u043a\u0430\u0436\u0443 :). \u041d\u043e \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f: \u0441\u0445\u0435\u043c\u0430\u043c\u0438 USB \u043d\u0430 ATtiny \u0437\u0430\u0432\u0430\u043b\u0435\u043d \u0432\u0435\u0441\u044c \u0433\u0438\u043a\u043e\u0432\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 &#8212; \u0432\u043e\u0442 <a href=\"https:\/\/codeandlife.com\/2012\/02\/22\/v-usb-with-attiny45-attiny85-without-a-crystal\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0430 <em>PB0<\/em> \u0435\u0449\u0435 \u0432\u043e\u0442\u043a\u043d\u0438\u0442\u0435 \u0432\u044b\u0445\u043e\u0434 \u0441 \u0418\u041a-\u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0442\u0438\u043f\u0430 <em>TSOP361<\/em> (\u043d\u0443 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0431\u043b\u0438\u0436\u0435 \u043a \u0435\u0433\u043e <em>+5V<\/em> \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u044e\u0442) \u0438 \u043d\u0430 \u0434\u0430\u0442\u0430-\u043b\u0438\u043d\u0438\u0438 USB \u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041a\u0430\u043a-\u043d\u0438\u043a\u0430\u043a, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u0438 USB \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u041c\u041a \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u043b\u044f \u0441\u043a\u043e\u0440\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0431\u044b, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u043e\u043b\u0435\u0435 \u0436\u0438\u0440\u043d\u044b\u0439 MCU, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 USB-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0438\u043f\u0430 <a href=\"https:\/\/www.chipdip.ru\/product\/ft232rq\" rel=\"noopener noreferrer nofollow\"><em>FT232<\/em> <\/a>\u043f\u0440\u0438 \u043d\u0443\u0436\u0434\u0435 (\u0445\u043e\u0442\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e FT232 \u044f \u0431\u044b \u043d\u0435 \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b). \u041d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0432\u043e\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u043f\u0443\u0442\u0438 \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u043e\u0439 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0438 \u0438 \u043a\u043e\u0434\u0430 \u0446\u0435\u043d\u043e\u0439 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u0440\u044f\u0447\u0443\u0449\u0438\u0445\u0441\u044f \u0438 \u043f\u043b\u043e\u0445\u043e \u0443\u0431\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c<\/h3>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043f\u043b\u0430\u0442\u044b \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e <a href=\"https:\/\/alexgyver.ru\/lessons\/digispark\/\" rel=\"noopener noreferrer nofollow\"><em>Digispark<\/em><\/a>&#8216;\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435 \u0410\u0440\u0434\u0443\u0438\u043d\u043e, \u043d\u043e&#8230; 4\u041a\u0411 \u0435\u0441\u0442\u044c 4 \u041a\u0411. \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043f\u043e USB \u0438 \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0443\u0447\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0442 \u0430\u0440\u0434\u0443\u0438\u043d\u0449\u0438\u043a\u043e\u0432. \u041d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 \u044d\u0442\u0438\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u0442\u0440\u0430\u0442\u044f \u0444\u043b\u0435\u0448-\u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0438 \u0440\u0430\u0437\u0434\u0443\u0442\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u0440\u044f\u0434 \u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c <em>Makefile<\/em>, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e <em>main.\u0441<\/em> \u0434\u0430 \u043f\u0430\u043f\u043a\u0443 <em>usbdrv<\/em>. \u041d\u0443 \u0438 <em>usbconfig.h<\/em> &#8212; \u0442\u0430\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c <em>usages<\/em>, \u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <em>vusb<\/em>. \u041e\u043d\u0430 \u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 SOF-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0445\u043e\u0441\u0442\u0430 &#8212; \u0438\u043d\u0430\u0447\u0435 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e RC-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 1% \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 USB \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. <\/p>\n<p>IDE, \u0440\u0430\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 \u0433\u043e\u043b\u043e\u043c Makefile, \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 &#8212; <em>Atmel Studio, VS Code, Arduino IDE, \u0411\u043b\u043e\u043a\u043d\u043e\u0442<\/em>&#8230; \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 <em>\u0410\u0440\u0434\u0443\u0438\u043d\u043e ISP-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 <\/em>(\u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/em>), \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0435\u0437 Arduino IDE \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441 \u043d\u0435\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <em>avrdude<\/em>, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 AtTiny45. \u042f \u0431\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b <a href=\"https:\/\/alexgyver.ru\/lessons\/naked-chip\/\" rel=\"noopener noreferrer nofollow\">ATTinyCore<\/a>.\u00a0\u0422\u0430\u043c \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 <em>libusb<\/em> \u0434\u043b\u044f<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-344887","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=344887"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/344887\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=344887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=344887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=344887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}