{"id":414835,"date":"2024-06-30T00:00:05","date_gmt":"2024-06-30T00:00:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=414835"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=414835","title":{"rendered":"<span>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u041e\u0421 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/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>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0443\u044e \u041e\u0421 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043d\u043e \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043c\u0430\u043d\u0443\u0430\u043b\u0430, \u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u0438\u0441\u043a\u0430\u043b, \u0445\u0437. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0447\u0442\u043e \u043a \u0447\u0435\u043c\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0441\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u0438\u0449\u0443\u0449\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445 \u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043d\u0430 <s>Pikabu<\/s> \u0425\u0430\u0431\u0440\u0435, \u0430 \u043d\u0435 \u0432 \u043f\u0430\u0442\u0435\u043d\u0442\u0430\u0445, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0443\u043d\u044b\u043b\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0441 \u043c\u0435\u043c\u0430\u043c\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/733\/89f\/28a\/73389f28a855392f58b37aca4723130f.png\" width=\"417\" height=\"499\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/733\/89f\/28a\/73389f28a855392f58b37aca4723130f.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043b\u044e\u0434\u0435\u0439, \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u041e\u0421, \u0445\u043e\u0442\u044f \u0431\u044b \u0448\u0430\u043f\u043e\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0435\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0443\u0436\u0435 \u0441\u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u041e\u0421. \u041f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e, \u043d\u043e \u0441\u0432\u043e\u044e!)<\/p>\n<p>\u0418\u0442\u0430\u043a\u2026 \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043a\u0440\u0443\u0442\u043e \u043b\u0438, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u0412\u043e\u0442 \u0438 \u0440\u0435\u0448\u0438\u043b, \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u041e\u0421.<\/p>\n<blockquote>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0446\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u041e\u0421, \u0434\u0430\u0442\u044c \u0435\u0439 \u043f\u0430\u0444\u043e\u0441\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u0440\u0443\u0442\u044b\u0435 \u043f\u0430\u0446\u0430\u043d\u044b. \u042f \u0435\u0435 \u0432\u044b\u043b\u043e\u0436\u0443, \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u0434\u0435\u043b\u0430\u044e. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435\u0442. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0434\u043e\u0434\u0435\u043b\u0430\u044e&#8230; \u041c\u0435\u043d\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 &#8212; \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0435\u0436\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u041f\u0435\u0440\u0432\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0431\u044b\u043b\u0430 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435. \u041a\u043e\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e, \u0442.\u043a. \u0441\u0434\u0435\u043b\u0430\u043b \u044f \u044d\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430 \u0432\u0435\u0447\u0435\u0440, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0448\u0435\u043b \u0434\u0430\u043b\u044c\u0448\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b Sleep \u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u044b.<\/p>\n<p>\u041d\u0443 \u0430 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u2013 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0438 \u0440\u0430\u0437\u0443 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0448\u044c\u0441\u044f \u0437\u0430\u0432\u0441\u0435\u0433\u0434\u0430\u0442\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0438\u0445 \u041e\u0421, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0438\u0434\u0435\u0439 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0444\u0438\u0447\u0443, \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u043a\u0430\u043a\u0438\u0435 \u0444\u0438\u0447\u0438 \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u044b, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u0414\u0430, \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c, \u043d\u0435 \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043d\u0438\u0447\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c. \u0418\u0437 \u041e\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e <a href=\"http:\/\/wiki.pic24.ru\/doku.php\/osa\/ref\/intro\" rel=\"noopener noreferrer nofollow\">OSA <\/a>\u043d\u0430 PIC24F. \u0414\u0430 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u2013 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430 \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0434\u0430\u043b\u0435\u043a\u0430. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u200b<\/p>\n<p>\u0425\u043e\u0442\u044f&#8230;, \u044f \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c Windows? \u0414\u0430! \u041e\u043d\u0430 \u0436\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f? \u0422\u043e\u0436\u0435 \u0434\u0430! \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u044f \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c! \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u0440\u044f \u043d\u0430\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e \u043d\u0430 \u0441\u0435\u0431\u044f&#8230;<\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u041e\u0421<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b32\/392\/174\/b323921749d7ec32d9cabed151addc59.png\" width=\"624\" height=\"125\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b32\/392\/174\/b323921749d7ec32d9cabed151addc59.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0443\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c, \u044f \u043d\u0435 \u0434\u0430\u044e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043a\u0430\u043a \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0436\u0443 \u0441\u0432\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442 \u0447\u0435\u0433\u043e \u044f \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0445\u043e\u0442\u0435\u043b \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u0432\u0430\u0445 \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Google (\u0438\u043b\u0438 Senior Google User, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435) \u2013 \u0438\u043c\u0435\u043d\u0443\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abEmbedded Operating System\u00bb.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432 \u2013 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0445\u043e\u043b\u0438\u0432\u0430\u0440\u0438\u0442\u044c!)<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u044d\u0442\u043e \u00abEmbedded OS\u00bb, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u041e\u0421\u00bb \u0438\u043b\u0438 \u00ab\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u00bb.<\/p>\n<p><strong>\u041c\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435<\/strong><\/p>\n<p><em>Embedded OS<\/em> \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u2013 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 (\u0434\u0430, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0430\u0440\u0434\u0443\u0438\u043d\u043e, \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0432\u043a\u0443\u0448\u0430\u044e \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 :D).<\/p>\n<h2>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u041e\u0421<\/h2>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u2013 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0435\u0448\u0430\u0442\u044c \u043d\u0430\u0448\u0430 \u041e\u0421, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<\/p>\n<p>\u041e\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0442\u043e\u0433\u0434\u0430, \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u00ab1\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u043e \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0441\u0442\u0435\u043a \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044b\u0436\u043e\u043a \u0432 \u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab2\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u00ab2\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u2026 \u043d\u0443 \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u2026 \u0438 \u2026 \u00abhere we go again\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0431\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u043e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u0437 <a href=\"https:\/\/habr.com\/ru\/post\/267573\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0442\u0435\u043c\u0443. \u041f\u0440\u043e\u0448\u0443 \u043c\u0435\u043d\u044f sorry, \u043d\u0435 \u0440\u0443\u0433\u0430\u0439\u0442\u0435, \u043d\u043e \u043c\u043d\u0435 \u043b\u0435\u043d\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/872\/636\/7a4\/8726367a4b9f97f0c65aded90ef2ec37.png\" width=\"263\" height=\"364\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/872\/636\/7a4\/8726367a4b9f97f0c65aded90ef2ec37.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0443\u0436\u0435 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438 <s>\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c<\/s> \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u0418\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e: <\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u0417\u0430\u0434\u0430\u0447\u0430\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u0421\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u042f\u0434\u0440\u043e\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u0431\u043b\u0443\u0434\u044b!<\/p>\n<\/li>\n<li>\n<p><s>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e;<\/s><\/p>\n<\/li>\n<li>\n<p><s>\u041f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043d\u043e\u0432\u043e.<\/s><\/p>\n<\/li>\n<\/ol>\n<h2>\u0422\u0435\u0440\u043c\u0438\u043d\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p><strong>\u0417\u0430\u0434\u0430\u0447\u0430<\/strong><\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0421\u0438-\u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b.<\/p>\n<p>\u0412\u0435\u0441\u044c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<pre><code class=\"cpp\">void Task1(void) {   for(;;)   {       \/* some important actions *\/   } } <\/code><\/pre>\n<p><strong>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u042d\u0442\u043e \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0447\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u0435 \u0431\u043e\u044f\u0441\u044c \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0430\u043c\u043e\u0439 \u041e\u0421.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043a\u0430\u043a 1\u043c\u0441, \u0442\u043e\u0433\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u041e\u0421 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435. \u0423\u0441\u043b\u043e\u0432\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 50\u043c\u043a\u0441.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4ed\/0ce\/3fb\/4ed0ce3fb2007e6a0b7956d9d149bdb7.png\" width=\"522\" height=\"285\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ed\/0ce\/3fb\/4ed0ce3fb2007e6a0b7956d9d149bdb7.png\"\/><figcaption><\/figcaption><\/figure>\n<p><em>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043b\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2013 \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0443\u0441\u043f\u0435\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u0442\u0430\u043a, \u043d\u043e \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041c\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0439\u0442\u0438 \u0432 \u043b\u0435\u0441 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u044b, \u0434\u0435\u0440\u0436\u0443 \u0441\u0435\u0431\u044f \u0432 \u0440\u0443\u043a\u0430\u0445!<\/em><\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043d\u0430 1\u043c\u0441;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 1 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u00ab\u0442\u0438\u043a-\u0442\u0430\u043a\u00bb \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0421 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 2 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 2 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u00ab\u0442\u0438\u043a-\u0442\u0430\u043a\u00bb \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0421 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 2 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>Aaaand \u2026 here we go again \u2026<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435:<\/strong> \u041e\u0421 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0439 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u043a\u0430 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041d\u043e <u>\u0441\u0430\u043c\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/u>, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439, \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, Sleep, \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u044b \u0438 \u0442.\u043f. \u041e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c.<\/p>\n<p>\u041b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0420\u041e\u041d (\u043d\u0435\u0442, \u044d\u0442\u043e \u043d\u0435 &#171;\u043f\u043e\u0445&#187;)). \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0421\u0438, \u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u0438 \u0432 \u043d\u0438\u0445 \u0442\u0443\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u0432\u0441\u0435 \u0434\u0435\u043b\u043e.<\/p>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u041e\u0417\u0423. \u042d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u043b\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u00abstatic\u00bb.<\/p>\n<p>\u0410 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435?<\/p>\n<p>\u041d\u0443 \u0430 \u0438\u0445 \u043a\u0430\u043a \u0431\u044b \u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0432\u0441\u0435. \u041e\u043d\u0438 \u043a\u0430\u043a \u0431\u044b \u0435\u0441\u0442\u044c. \u041d\u043e \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u2013 \u0438\u0445 \u043d\u0435\u0442.<\/p>\n<p>\u041d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0436\u0435 \u043e\u043d\u0438 \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f?<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043e\u043d\u0438, \u043a\u0430\u043a \u0440\u0430\u0437, \u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u0421\u0438 \u2013 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0421\u0438, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">uint8_t d;  void Function(void) { uint8_t a; uint8_t b; uint8_t c;  c = a + b;  PORTB = c;  d = c \u2013 a; } <\/code><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 a, b \u0438 c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0438 \u043d\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u00abc = a + b\u00bb \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abd\u00bb \u2013 \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u041e\u0417\u0423, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p><strong>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u041e\u0421:<\/strong> \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0420\u041e\u041d \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0438 \u043e\u043d\u0430 \u0443\u0432\u0435\u0440\u0435\u043d\u0430, \u0447\u0442\u043e \u0432\u0441\u0435 \u0420\u041e\u041d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0435\u0439, \u0438 \u043e\u043d\u0430 \u0442\u043e\u0447\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043d\u0438\u043a\u0442\u043e \u0435\u0439 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c!<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3e9\/047\/b2e\/3e9047b2e52d8032749f9d93bdeccf2d.png\" width=\"355\" height=\"430\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3e9\/047\/b2e\/3e9047b2e52d8032749f9d93bdeccf2d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0443\u2026, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u2013 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0436\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0418 \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b? \u0415\u0441\u043b\u0438, \u043f\u043e \u0441\u0443\u0442\u0438, \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u044b.<\/p>\n<p>\u0410 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p><strong>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445<\/strong>, \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442: <a href=\"https:\/\/gcc.gnu.org\/wiki\/avr-gcc#Register_Layout\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b03\/a23\/98c\/b03a2398c0260ecb4fe6d753b129f548.png\" alt=\"\u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 AVR\" title=\"\u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 AVR\" width=\"624\" height=\"142\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b03\/a23\/98c\/b03a2398c0260ecb4fe6d753b129f548.png\"\/><figcaption>\u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 AVR<\/figcaption><\/figure>\n<p><strong>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445<\/strong>, \u0438\u0437 \u00ab\u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445\u00bb \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b R18-R27, R30, R31, \u043d\u0435 \u0434\u0443\u043c\u0430\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043d\u0443\u0436\u043d\u044b \u0435\u0449\u0435 \u043a\u043e\u043c\u0443-\u0442\u043e, \u0430 \u0432\u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b R2-17, R28, R29 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u2013 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0412\u043e\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0442\u0438\u0445\u0430\u0440\u044f \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"1c\">push R15 push R16 push R17<\/code><\/pre>\n<p>\u0418 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c:<\/p>\n<pre><code>pop R17 pop R16 pop R15<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432 \u0441\u0442\u0435\u043a, \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0438\u0445 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043a \u0431\u044b\u043b\u043e.<\/p>\n<p>push\/pop \u2013 \u044d\u0442\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c.<\/p>\n<p>\u0418\u0442\u0430\u043a&#8230;<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u00ab\u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0430\u00bb \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 <s>\u043f\u043e\u0448\u043b\u0430 \u043f\u043e \u043f\u0438\u0437<\/s> \u0441\u043b\u043e\u043c\u0430\u043b\u0430\u0441\u044c, \u0442\u043e, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u041e\u0421 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u2013 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u2013 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u043b\u0438, \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0421\u0438.<\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432 \u0441\u0442\u0435\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u044c\u0438\u0446\u0435&#8230;<\/p>\n<p>\u0414\u043b\u044f AVR \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abSREG\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e.<\/p>\n<p><strong>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/strong><\/p>\n<p>\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { SaveRegsIntoStack(); SelectNextTask(); RestoreRegsFromStack(); return; }<\/code><\/pre>\n<p><strong>SaveRegsIntoStack<\/strong> \u2013 \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0441\u0442\u0435\u043a.<\/p>\n<p><strong>RestoreRegsFromStack<\/strong> \u2013 \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { push R0 push R1 \u2026 R2 \u2026 R30 \u2026 push R31 push SREG   currentTask = GetNextTask();  pop SREG pop R31 \u2026 R30 \u2026 R2 \u2026 pop R1 pop R0  return; }<\/code><\/pre>\n<p><strong>\u0421\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u0421\u0442\u0435\u043a \u2013 \u044d\u0442\u043e \u0442\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0442\u0435\u043a, \u043a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0438\u0445 \u041e\u0421 \u043d\u0430 \u00ab\u0441\u043b\u0430\u0431\u044b\u0445\u00bb \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u043a\u0430\u043a \u0440\u0430\u0437 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a, \u0438 \u0434\u0430\u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u043c\u0430\u043b\u043e \u043c\u0435\u0441\u0442\u0430, \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 AVR \u2013 \u0432\u0441\u0435\u0433\u043e 32 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 4 \u0437\u0430\u0434\u0430\u0447\u0438, \u0442\u043e \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u043e (32 * 4) = 128 \u0431\u0430\u0439\u0442. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 ATmega88 \u0432\u0441\u0435\u0433\u043e 1\u041a\u0431 \u041e\u0417\u0423 \u2013 \u044d\u0442\u043e \u0442\u0430\u043a\u0438 \u043f\u043e\u0442\u0435\u0440\u044f \u043f\u043e\u0442\u0435\u0440\u044c.<\/p>\n<p><strong>\u0412\u044b\u0432\u043e\u0434:<\/strong> \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u2013 \u044f\u0432\u043d\u043e \u043d\u0435\u0440\u0430\u0437\u0443\u043c\u043d\u043e \ud83d\ude00<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0435\u043a \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0444\u0435\u0440 \u0431\u0430\u0439\u0442, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0432\u043e\u0439, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u043d\u0430\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<p>\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0435\u0446 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u041e\u0417\u0423 \u0438 \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0442\u0443\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441\u0430, \u0430 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0411\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0435\u0439 \u041e\u0421, \u041e\u0417\u0423 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\"><strong>Address<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\"><strong>Data<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">1<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">2<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">3<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">4<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">5<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">6<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">7<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">8<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">9<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">11<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">12<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">13<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">14<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"257\" width=\"257\">\n<p align=\"center\"><strong>RAMEND -><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">15<\/p>\n<\/td>\n<td data-colwidth=\"88\" width=\"88\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u041e\u0421, \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\"><strong>Address<\/strong><\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\"><strong>Data<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">0<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"15\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Common<br \/> variables<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">1<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">2<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">3<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">4<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">5<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">6<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">7<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">8<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">9<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">10<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">11<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">12<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">13<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">14<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">15<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 3<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">16<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">17<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">18<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">19<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">20<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">21<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">22<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">23<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 2<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">24<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">25<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">26<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">27<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">28<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">29<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">30<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">31<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 1<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">32<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">33<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">34<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">35<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">36<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">37<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">38<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">39<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">40<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">41<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">42<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">43<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">44<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"258\" width=\"258\">\n<p align=\"center\"><strong>RAMEND -><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"93\" width=\"93\">\n<p align=\"center\">45<\/p>\n<\/td>\n<td data-colwidth=\"89\" width=\"89\">\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Hardware SP<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0441\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">typedef struct { uint8_t *buf;\/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 uint8_t *ptr;\/\/ \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u0430\u0439\u0442 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 } Stack_t<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0441\u0442\u0435\u043a, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439, \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430, \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u043c\u0435\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ push R0 push R1 \u2026 R2 \u2026 R30 \u2026 push R31 push SREG   \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0441\u0442\u0435\u043a *\/ currentTask->stack.ptr = HARDWARE_STACK_POINTER;  \/* \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 *\/ currentTask = GetNextTask();  \/* \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ HARDWARE_STACK_POINTER = currentTask->stack.ptr;  \/* \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ pop SREG pop R31 \u2026 R30 \u2026 R2 \u2026 pop R1 pop R0  return; }<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p><strong>\u0421\u0442\u0435\u043a \u044f\u0434\u0440\u0430 \u0438 \u0441\u0442\u0435\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f<\/strong><\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0435\u0449\u0435 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u044f\u0434\u0440\u043e \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a.<\/p>\n<p>\u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0443\u0436\u0435 \u0434\u0430\u0432\u0430\u043b \u0441\u0441\u044b\u043b\u043a\u0443: <a href=\"https:\/\/habr.com\/ru\/post\/267573\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f25\/23c\/366\/f2523c3661b06f75a95035235f82bbae.png\" width=\"216\" height=\"247\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f25\/23c\/366\/f2523c3661b06f75a95035235f82bbae.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u0421\u0442\u0435\u043a \u044f\u0434\u0440\u0430<\/strong><\/p>\n<p>\u0421\u0442\u0435\u043a \u044f\u0434\u0440\u0430 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442. \u0412 \u043a\u043e\u0434\u0435 \u044f\u0434\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043e\u0432 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0432 \u0441\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447, \u0442.\u043a. \u044d\u0442\u043e \u043d\u0435\u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u043e, \u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u0443\u043c\u0430\u0442\u044c \u00ab\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0435\u0449\u0435 \u0431\u0430\u0439\u0442 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u043a\u0438\u043d\u0443\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e\u00bb.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0441\u0442\u0435\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432 \u043d\u0435\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430. \u0415\u0441\u043b\u0438 \u044f\u0434\u0440\u043e \u0438\u043c\u0435\u0435\u0442 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0442\u043e \u044d\u0442\u043e 3 \u0430\u0434\u0440\u0435\u0441\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 AVR, \u0442\u043e \u044d\u0442\u043e 6 \u0431\u0430\u0439\u0442. \u0412\u043e\u043e\u0431\u0449\u0435 \u0444\u0438\u0433\u043d\u044f\u2026<\/p>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435 \u2013 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0438\u0436\u0435. \u0423\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ push R0 push R1 \u2026 R2 \u2026 R30 \u2026 push R31 push SREG   \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0441\u0442\u0435\u043a *\/ currentTask->stack.ptr = HARDWARE_STACK_POINTER;  \/* \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u044f\u0434\u0440\u0430 *\/ HARDWARE_STACK_POINTER = kernelStack.ptr;  \/* \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 *\/ currentTask = GetNextTask();  \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 *\/ \/* \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442.\u043a. \u043c\u044b \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, *\/ \/* \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. *\/ \/* \u041d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 *\/ kernelStack.ptr = HARDWARE_STACK_POINTER;  \/* \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ HARDWARE_STACK_POINTER = currentTask->stack.ptr;  \/* \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ pop SREG pop R31 \u2026 R30 \u2026 R2 \u2026 pop R1 pop R0  return; }<\/code><\/pre>\n<p><strong>\u0421\u0442\u0435\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/strong><\/p>\n<p>\u0421\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041f\u043e\u0447\u0435\u043c\u0443? \u042f \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0434\u043e\u043f\u0438\u0441\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u044e, \u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b, \u0447\u0442\u043e \u044f \u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b, \u0434\u0430, \u0442\u0430\u043c \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432, \u043d\u043e \u044f \u043d\u0435 \u0445\u043e\u0447\u0443 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u043d\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0438 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a \u0441\u0442\u0430\u0442\u044c\u0435. \u042d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041f\u0443\u0441\u0442\u044c, \u043b\u0443\u0447\u0448\u0435, \u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u041d\u043e \u044f \u0435\u0433\u043e \u043e\u043f\u0438\u0448\u0443. \u042d\u0442\u043e \u0443\u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u200b<\/p>\n<p>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0432\u0435\u0440\u043d\u0443\u0441\u044c \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044e \u044d\u0442\u043e\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a, \u043a\u043e\u0433\u0434\u0430 \u0438 \u041e\u0421 \u0434\u043e\u043f\u0438\u043b\u044e.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0437\u0430\u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u044f\u0434\u0440\u0430, \u0442.\u043a. \u043e\u043d\u0438 \u043e\u0431\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445, \u0438 \u043a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0441\u0442\u0430\u043b \u2013 \u0442\u043e\u0433\u043e \u0438 \u0441\u0442\u0435\u043a!<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0442\u0435\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041e\u0421 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u0432\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0446\u0435.<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">ISR(SOME_IMPORTANT_INTERRUPT) { \/* \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 PUSH, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 *\/  \/* \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0435\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ currentTask->stack.ptr = HARDWARE_STACK_POINTER;  \/* \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u044f\u0434\u0440\u0430\/\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f *\/ HARDWARE_STACK_POINTER = kernelStack.ptr;  \/* \u0427\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 *\/ \/* \u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026 *\/ \/* \u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026 *\/  \/* \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 *\/ HARDWARE_STACK_POINTER = currentTask->stack.ptr;  \/* \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 POP, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 *\/  return; }<\/code><\/pre>\n<p>\u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u043e \u0432 \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<h2>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a<\/h2>\n<p>\u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e, \u0442.\u043a. \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043d\u043e \u0441\u0443\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0421\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u0439 \u041e\u0421 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c.<\/p>\n<p>\u0410 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u043d\u0435 \u0438\u0437-\u0437\u0430 \u043b\u0435\u043d\u0438, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0434\u0438 \u0431\u043b\u0430\u0433\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d, \u043c\u044b \u0436\u0435 \u043d\u0435 \u0438\u0437\u0432\u0435\u0440\u0433\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e, \u0438 \u043d\u0435 \u0434\u0430\u0432\u0430\u0442\u044c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438\u2026<\/p>\n<blockquote>\n<p>\u042f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043e\u0434\u043d\u043e\u043a\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u0449\u0438\u043a\u043e\u043c \u0432 \u043e\u0434\u043d\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0438\u0440\u043c\u0435, \u0433\u0434\u0435 \u043c\u0435\u043d\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c 1\u0421, \u0442\u0430\u043a \u0447\u0442\u043e \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u043e\u043d \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0435\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0431\u044b\u043b \u0440\u043e\u0436\u0434\u0435\u043d \u200b<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u044f \u043d\u0435 \u0442\u0430\u044e \u0437\u043b\u043e\u0431\u0443 \u043d\u0430 1\u0421, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b \u0440\u043e\u0436\u0434\u0435\u043d \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c XD<\/p>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>\u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0422.\u043a. \u043c\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u041e\u0421 \u043d\u0430 AVR, \u0442\u043e \u043b\u0443\u0447\u0448\u0435\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u2013 \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043c \u041e\u0417\u0423 \u0442\u0430\u043a \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447 \u2013 \u044d\u0442\u043e \u043f\u0440\u044f\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c!<\/p>\n<p>\u0410 \u0442\u0443\u043f\u043e\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0437 2, 4 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 10 (\u0434\u0435\u0441\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447, \u043a\u0430\u0440\u043b) \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u2013 \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0434\u043d\u043e\u0441\u0432\u044f\u0437\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044c, \u0442.\u043a. \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u0410 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u2013 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u044d\u0442\u043e \u00abfuture simple\u00bb \u200b<\/p>\n<p>\u041a\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u044f \u0442\u0443\u043f\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0438 \u0441 \u043e\u0434\u043d\u043e- \u0438 \u0441 \u0434\u0432\u0443\u0441\u0432\u044f\u0437\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0440\u0435\u0448\u0438\u043b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439, \u0442.\u043a. \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u043d \u043f\u0440\u043e\u0449\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439.<\/p>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044f \u043d\u0435 \u0445\u043e\u0442\u0435\u043b, \u0442.\u043a. \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435. \u041d\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c &#171;\u0440\u0430\u0431\u043e\u0447\u0438\u0439&#187; \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 \u0438 \u0437\u0430\u0431\u0438\u043b, \u0441\u043a\u0438\u043d\u0443\u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439)<\/p>\n<pre><code class=\"cpp\">static Task_t *GetNextTask (void) { static uint8_t currentTaskIndex = 0; bool taskAvailable; uint8_t i;  if(Kernel_currentTask->status == TASK_STATUS_RUN) { Kernel_currentTask->status = TASK_STATUS_READY; }  i = CONFIG_USER_TASKS_NUMBER; while(i--) { Kernel_currentTask = &amp;Kernel_tasksList[currentTaskIndex];  taskAvailable = false; if(Kernel_currentTask->status == TASK_STATUS_READY) { taskAvailable = true; }  currentTaskIndex++; if(currentTaskIndex >= CONFIG_USER_TASKS_NUMBER) { currentTaskIndex = 0; }  if(taskAvailable) { break; } }  if(!taskAvailable) { Kernel_currentTask = &amp;taskIdle; }  Kernel_currentTask->status = TASK_STATUS_RUN;  return Kernel_currentTask; }<\/code><\/pre>\n<h2>\u042f\u0434\u0440\u043e<\/h2>\n<p>\u042f\u0434\u0440\u043e \u041e\u0421 \u2013 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u041e\u0421, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u041e\u0421, \u0447\u0435 \u0442\u0430\u043a \u043c\u0430\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b?! \u0410? \u0410? \u0410? \u0410?<\/p>\n<p>\u041d\u0443 \u0430 \u044f \u043e\u0442\u0432\u0435\u0447\u0443 \u2013 \u044f\u0434\u0440\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435.<\/p>\n<p>\u0412\u043e\u0442, \u043a\u0430\u043a \u0431\u044b \u0438 \u0432\u0441\u0435\u2026<\/p>\n<h2>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a<\/h2>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0415\u043a\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u0430\u0432\u0430\u043b\u0438 \u043c\u043d\u0435 \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e.<\/p>\n<p>\u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442. \u0410\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435. \u041e\u043d \u0436\u0435 \u043d\u0430 \u0442\u043e \u0438 \u00ab\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439\u00bb. \u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0410 \u0432\u043e\u0442, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u00ab\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u00bb \u2013 \u0442\u0430 \u0435\u0449\u0435 \u0434\u0438\u043b\u0435\u043c\u043c\u0430.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0434\u0435\u0439 \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u043d\u043e. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435. \u041d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u042f, \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440, \u0438 \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0430\u043c\u044b\u0439 \u043a\u0440\u0443\u0442\u043e\u0439. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439, \u0442.\u043a. \u043e\u043d \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e \u043e\u0431\u044a\u0435\u043c\u0443 \u043a\u043e\u0434\u0430 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e.<\/p>\n<p><strong>\u0414\u0438\u043b\u0435\u043c\u043c\u0430<\/strong><\/p>\n<p>\u0412\u043e\u0442 \u0435\u0441\u0442\u044c \u0443 \u043d\u0430\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0440\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u2013 \u043a\u0430\u043a \u043d\u0430 \u043f\u043e\u0434\u0431\u043e\u0440, \u0445\u043e\u0442\u044c \u00ab\u043a\u043e\u0441\u044b\u043d\u043a\u0443\u00bb \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439!<\/p>\n<p>\u041d\u043e, \u044f\u0434\u0440\u043e \u041e\u0421 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0438. \u0410 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0441\u0442\u0435\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043b\u044e\u0441 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0430.<\/p>\n<p>\u0418 \u0432\u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u043c\u044b \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0418\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044f\u0434\u0440\u0430 \u041e\u0421 \u00abKernel()\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432 \u0441\u0442\u0435\u043a;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abKernel()\u00bb.<\/p>\n<\/li>\n<\/ul>\n<p>\u0410 \u043a\u0443\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f?<\/p>\n<p>\u0410\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u0432 \u0441\u0442\u0435\u043a\u0435 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0442.\u043a. \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 (Hardware SP) \u0438 \u043a\u0430\u0440\u0442\u0430 \u041e\u0417\u0423 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<\/td>\n<td>\n<p align=\"center\"><strong>Address<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Data<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">0<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"15\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Common<br \/> variables<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">1<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">2<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">3<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">5<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">6<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">7<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">8<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">9<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">10<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">11<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">12<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">13<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">14<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">15<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 3<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">16<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">17<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">18<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">19<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">20<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">21<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">22<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">23<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 2<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">24<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">25<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">26<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">27<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">28<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">29<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">30<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">31<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td rowspan=\"7\">\n<p align=\"center\">\n<p align=\"center\"><strong>Task 1<br \/> stack<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">32<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">33<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">34<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">35<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">36<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">37<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">38<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Stack pointer<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">39<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">40<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">41<\/p>\n<\/td>\n<td>\n<p align=\"center\">0x00<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>&lt;-Hardware SP<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">42<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>0xCC<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">43<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>0xDD<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\n<\/td>\n<td>\n<p align=\"center\">44<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>0xAA<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\"><strong>RAMEND -><\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\">45<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>0xBB<\/strong><\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<ul>\n<li>\n<p>0xCCDD \u2013 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>0xAABB \u2013 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 main() \u0438\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0438 \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0437\u0430\u0434\u0430\u0447. \u0415\u0441\u043b\u0438 \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abKernel()\u00bb \u043c\u044b \u043d\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u043d\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0432 \u0437\u0430\u0434\u0430\u0447\u0443, \u0442.\u043a, \u0435\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u00ab\u0417\u0430\u0434\u0430\u0447\u0430 1\u00bb, \u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u044f\u0447\u0435\u0439\u043a\u0443 \u00ab38\u00bb, \u0430 \u0442\u0430\u043c \u044f\u0432\u043d\u043e \u043d\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0442\u0430\u043c \u043b\u0438\u0431\u043e \u043c\u0443\u0441\u043e\u0440, \u043b\u0438\u0431\u043e \u043d\u0443\u043b\u0438.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u0441\u0442\u0435\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0410\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0442\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 (\u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438);<\/p>\n<\/li>\n<li>\n<p>\u0410\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435<\/strong> \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442.\u043a. \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0443\u0434\u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043f\u0430\u0434\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043d\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0435\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430. \u0418 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0442\u0430\u043f\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0442.\u043a. \u043c\u044b \u0435\u0433\u043e \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c, \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0435\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0410 \u0432\u043e\u0442 <strong>\u0432\u0442\u043e\u0440\u043e\u0435<\/strong> \u2013 \u0434\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c\u2026 \u0412 \u044d\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430!<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u0431\u044b\u043b\u043e \u0442\u0430\u043a.<\/p>\n<p>\u0412 \u00abChangeContext()\u00bb \u0435\u0441\u0442\u044c \u0444\u043b\u0430\u0433 \u00abstatic bool firstEntry = true;\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0445\u043e\u0434 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abChangeContext()\u00bb \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0445\u043e\u0434 \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u0438\u0437 \u041e\u0417\u0423, \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043d\u0430 \u0441\u0442\u0435\u043a, \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u0438 \u043c\u043e\u0436\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0442\u0435\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043f\u043e\u0442\u043e\u043c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u00abfalse\u00bb.<\/p>\n<p>\u0418 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u0430\u0445 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0432 \u0441\u0432\u043e\u0439 \u0441\u0442\u0435\u043a \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u041e\u0421.<\/p>\n<p>\u0412\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0437\u0430 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043c\u044b \u0435\u0433\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044e \u0441\u0435\u043a\u0446\u0438\u0438, \u0432 \u0441\u0430\u043c\u043e\u043c \u044f\u0434\u0440\u0435, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u2013 \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u2013 \u044d\u0442\u043e \u043d\u0435 \u043a\u0440\u0443\u0442\u043e!<\/p>\n<p>\u041c\u044b \u0436\u0435 \u043a\u0440\u0443\u0442\u044b\u0435? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043a\u0440\u0443\u0442\u044b\u0435!<\/p>\n<p>\u0418\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435!<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p>\u0410\u0434\u0440\u0435\u0441\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u0435\u0435 \u043d\u0430\u0447\u0430\u043b\u0435, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432 HEX \u0444\u0430\u0439\u043b, \u043d\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043d\u0430\u0445\u043e\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/397\/ae5\/cdb\/397ae5cdb35f0be2e4538915b72e6d9e.png\" width=\"622\" height=\"130\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/397\/ae5\/cdb\/397ae5cdb35f0be2e4538915b72e6d9e.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0440\u0430\u0441\u043d\u044b\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u043a\u0440\u0438\u0432\u043e\u0439, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a, \u0441\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0441 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d21\/1dc\/aac\/d211dcaac7034d149c54a6dd14364a36.png\" width=\"624\" height=\"614\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d21\/1dc\/aac\/d211dcaac7034d149c54a6dd14364a36.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u043e\u043d\u043e \u0436\u0435, \u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u043b\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u00abTIMER0 COMPA\u00bb.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4aa\/68f\/5f4\/4aa68f5f4a6ce5cac03d65fb12135c00.png\" width=\"385\" height=\"479\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4aa\/68f\/5f4\/4aa68f5f4a6ce5cac03d65fb12135c00.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0438\u0434\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u00ab<strong>0x76C0<\/strong>\u00bb. \u0422.\u043a. \u044d\u0442\u043e Big-endian, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0430\u043c \u00ab<strong>0xC076<\/strong>\u00bb.<\/p>\n<p>\u0428\u043e \u0442\u0430\u043a\u043e\u0435 <strong>0xC076<\/strong>?<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0432, \u0447\u0442\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 ASM (\u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u043b \u043d\u0430 ASM, \u0434\u0430, \u044f \u043a\u0440\u0443\u0442\u043e\u0439) \u044f \u043f\u0438\u0441\u0430\u043b:<\/p>\n<pre><code class=\"1c\">RJMP 0x0000; Reset RJMP 0x0001; INT0 RJMP 0x0002; INT1 ...<\/code><\/pre>\n<p>\u041f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0448\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435! \u0422\u043e\u0447\u043d\u0435\u0435, \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u2026<\/p>\n<p>\u0412 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0435 \u00abAVR Assembler Instruction Set Manual\u00bb \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e RJMP, \u0438 \u0432\u0438\u0434\u0438\u043c \u0435\u0435 \u0444\u043e\u0440\u043c\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e8\/3d4\/370\/6e83d43708dc3c983008ff89d76a467a.png\" width=\"624\" height=\"64\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6e8\/3d4\/370\/6e83d43708dc3c983008ff89d76a467a.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0413\u0434\u0435 0b1100 => 0xC<\/p>\n<p>\u0418 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c, \u0447\u0442\u043e \u00ab0xC0\u00bb \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u2013 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f RJMP, \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"0x76 + 15 = 0x85\" alt=\"0x76 + 15 = 0x85\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cc\/545\/ea9\/1cc545ea991d3d6f8c21fc8f5b7f4803.svg\" width=\"148\" height=\"18\"\/><\/p>\n<p>\u0413\u0434\u0435 \u00ab<u>15<\/u>\u00bb \u2013 \u044d\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0443 \u043c\u0435\u043d\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0441\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 0x85.<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u0442\u0443\u0434\u0430, \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u0442\u0435\u043a \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u044f\u0434\u0440\u0435 \u043c\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u043c, \u0442.\u043a. \u044d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0423\u0436\u0435 \u043a\u0440\u0443\u0442\u043e!<\/p>\n<p>\u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0418 \u0431\u0435\u0440\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 Timer2 \u0432\u043c\u0435\u0441\u0442\u043e Timer0? \u0422\u0430 \u0432\u044b \u0448\u043e? \u042d\u0442\u043e \u043d\u0430\u043c \u0448\u043e, \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0434\u0435\u0444\u0430\u0439\u043d\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u043e\u0433\u0443 \u0441\u043b\u043e\u043c\u0430\u0442\u044c? \u0418 \u0442\u0430\u043a \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f?<\/p>\n<p>\u0422\u0430\u043a \u043d\u0443 \u043d\u0435, \u044d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043a\u0440\u0443\u0442\u043e! \u041d\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u043a\u0440\u0443\u0442\u043e\u0441\u0442\u0438!<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 3<\/strong><\/p>\n<p>\u042f \u0434\u0435\u0440\u0436\u0430\u043b \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0443 \u043a\u0430\u043f\u0435\u0446 \u043a\u0430\u043a \u043d\u0435 \u0445\u043e\u0442\u0435\u043b.<\/p>\n<p>\u041e\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441 \u043e\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432.<\/p>\n<p>\u041d\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0441\u0432\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u0422\u0430 <s>\u0431\u043b\u2026<\/s><\/p>\n<p>\u0412 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u044b \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u00abChangeContext()\u00bb \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u00ab\u043f\u0440\u044b\u0433\u0430\u0435\u043c\u00bb \u0432 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432 \u0441\u0442\u0435\u043a \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0435\u0440\u043d\u0443\u0432\u0448\u0438\u0441\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abChangeContext()\u00bb, \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 \u0441\u0440\u0430\u0437\u0443 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u041e\u0434\u043d\u0438 \u043f\u043b\u044e\u0441\u044b!<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u043d\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0442.\u043a. \u043e\u043d \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 2 \u0431\u0430\u0439\u0442\u0430 \u043d\u0430 \u043b\u0438\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0434\u0430 \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0434\u0435\u0444\u0430\u0439\u043d\u044b \u0432 config-\u0444\u0430\u0439\u043b\u0435 \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2013 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0438\u0437 \u043d\u0435\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f, \u0430 \u043c\u044b \u2013 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u044b, \u043d\u043e \u043d\u0435 \u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u00abgoto\u00bb \u0442\u043e\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u044b, \u043d\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u044d\u0442\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435. \u0418 \u043d\u0435 \u0437\u0440\u044f, \u0445\u043e\u0442\u044f \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u043e\u043d \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u043e\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u041e\u0421 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u0432 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0435 \u043d\u0438\u0436\u0435. \u042d\u0442\u043e \u043e\u043f\u044f\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434. \u041a\u043e\u0434 \u00abOS_Init\u00bb \u0438 \u00abOS_CreateTask\u00bb \u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0442.\u043a. \u044d\u0442\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"cpp\">int main(void) { cli(); Timer1A_Init(); OS_Init(); OS_CreateTask(Task1, stackBufTask1, sizeof(stackBufTask1)); OS_CreateTask(Task2, stackBufTask2, sizeof(stackBufTask2)); sei(); OS_Start(); }  void OS_Start (void) { currentTask = &amp;tasksList[0]; StackPointer_SetAddress(currentTask->stackPointer); \/* \u0429\u0430 \u0431\u0443\u0438\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 *\/ RJMP ChangeContext   \/* \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043d\u0435 \u0431\u0443\u0438\u0442 *\/     }  void ChangeContext(void) { \/* \u041a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435 *\/ }<\/code><\/pre>\n<h2>\u0413\u043e\u043b\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/158\/554\/a06\/158554a06e6908742bc44678a80b9eae.png\" width=\"370\" height=\"314\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/158\/554\/a06\/158554a06e6908742bc44678a80b9eae.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0413\u0443\u0433\u043b \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043c\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u00abnaked functions\u00bb, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0434\u0443\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u044f \u0438\u0449\u0443 \u043f\u043e\u0440\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0442 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043c\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4c0\/83d\/bbf\/4c083dbbfe8fb4c60afefe406b396f57.png\" width=\"444\" height=\"288\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c0\/83d\/bbf\/4c083dbbfe8fb4c60afefe406b396f57.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0430\u0436\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>\u0410 \u0442.\u043a. \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435, \u0441\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 push\/pop \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u043c\u0438, \u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0435\u0434\u0435\u0442. \u0421\u0442\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0438\u043b\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u043b\u044e\u0431\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u043e\u0442 \u0432 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"cpp\">\/* \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 TIMER0 COMPA *\/ ISR(TIMER0_COMPA_vect) { push R16 push R17  \/* User code *\/  pop R17 pop R16 }  \/* \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044f\u0434\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u041e\u0421 *\/ void Kernel(void) { push R16 push R17  \/* User code *\/  pop R17 pop R16 }<\/code><\/pre>\n<p>\u0414\u0430\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432\u0441\u0435 \u043b\u043e\u043c\u0430\u044e\u0442. \u0414\u0430\u0436\u0435 \u043e\u0434\u043d\u043e\u0433\u043e. \u0414\u0430\u0436\u0435 \u043d\u0430 \u043f\u043e\u043b \u0431\u0438\u0442\u0438\u043a\u0430!<\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b.<\/p>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00abnaked\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c prolog (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abpush\u00bb) \u0438 epilog (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u00abpop\u00bb \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u00abret\u00bb \u0438\u043b\u0438 \u00abreti\u00bb, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0438).<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e \u041e\u0421, \u0438 \u0441\u0430\u043c\u043e \u044f\u0434\u0440\u043e \u041e\u0421 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u00abnaked\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0432\u0441\u0435 \u044d\u0442\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<\/blockquote>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 WinAVR, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Atmel Studio (\u043d\u0443, \u0438\u043b\u0438 \u043a\u0430\u043a \u0442\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0434\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u2013 Microchip Studio).<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00abChangeContext()\u00bb \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0438\u0434:<\/p>\n<pre><code class=\"cpp\">\/* \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 TIMER0 COMPA *\/ ISR(TIMER0_COMPA_vect, ISR_NAKED) {  }  \/* \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044f\u0434\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u041e\u0421 *\/ void ChangeContext(void) __attribute__ ((naked));<\/code><\/pre>\n<h2>\u0421\u0435\u0440\u0432\u0438\u0441\u044b \u041e\u0421<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u00abSleep\u00bb \u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u044b.<\/p>\n<p>\u0412\u0430\u0436\u043d\u044b\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435\u043c \u0431\u0443\u0434\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0443 \u00abIdle\u00bb.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0442.\u043a. \u043e\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<p><strong>\u0417\u0430\u0434\u0430\u0447\u0430 &#171;Idle&#187;<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447 \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432\u044b\u0437\u0432\u0430\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u00abSleep\u00bb, \u0438 \u0441\u043f\u044f\u0442 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 1000 \u043c\u0441, \u0447\u0442\u043e-\u0442\u043e \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043a\u043e\u0434 \u0441\u0430\u043c\u0438\u0445 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<p>\u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d Idle-task. \u042d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u0430\u043a \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0436\u0434\u0443\u0442.<\/p>\n<p>\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u044f \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0442.\u043a. \u0442\u0430\u043a \u043f\u0440\u043e\u0449\u0435, \u043d\u043e \u0435\u0441\u0442\u044c \u043c\u044b\u0441\u043b\u0438 \u0438 \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445, \u043d\u043e \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f.<\/p>\n<p>\u0422\u0435\u043b\u043e \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c \u2013 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<pre><code class=\"cpp\">static void IdleTask(void) { uint8_t i; for(;;) { for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { Kernel_DisableInterrupts(); if(Kernel_tasksList[i].status == TASK_STATUS_READY) { Kernel_Isr(); } Kernel_EnableInterrupts(); } } }<\/code><\/pre>\n<p><strong>Sleep<\/strong><\/p>\n<p>\u042d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u043d\u0435\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>\u0422\u0443\u0442 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0432 \u0430\u0440\u0434\u0443\u0438\u043d\u0430\u0445 \u044d\u0442\u0438\u0445 \u0432\u0430\u0448\u0438\u0445, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u00abdelay()\u00bb \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c.<\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u043a\u0430\u043a \u0446\u0438\u043a\u043b \u00abwhile\u00bb:<\/p>\n<ol>\n<li>\n<p>\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u00abRUN\u00bb \u0432 \u00abSLEEP\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u00abSLEEP\u00bb \u0432 \u00abREADY\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e \u041e\u0421 \u00abKernel()\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u042f\u0434\u0440\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0432\u0441\u0435\u2026<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void Service_Sleep(uint16_t cycles) { Kernel_DisableInterrupts(); currentTask->status = TASK_STATUS_SLEEP; currentTask->timer = cycles; ChangeContext(); Kernel_EnableInterrupts(); }<\/code><\/pre>\n<p><strong>\u0421\u0435\u043c\u0430\u0444\u043e\u0440\u044b<\/strong><\/p>\n<p>\u042d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u043c\u0430\u0444\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u043a\u0435\u043c-\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2aa\/0d4\/1e5\/2aa0d41e5ba44988fd60675457155046.png\" width=\"300\" height=\"283\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2aa\/0d4\/1e5\/2aa0d41e5ba44988fd60675457155046.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u0430\u043c\u0438 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0441 \u00abSleep\u00bb, \u0442.\u043a. \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u043f\u044f\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u043b \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u043e\u0432, \u043d\u043e \u043f\u043e\u0437\u0436\u0435 \u0447\u0443\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0435\u043c\u0430\u0444\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0436\u0434\u0435\u0442.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043a\u043e\u0434, \u043e\u043f\u044f\u0442\u044c, \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u0437\u0430\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439.<\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f, \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u0430 \u00abService_SetSemaphore()\u00bb \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0435\u043c\u0430\u0444\u043e\u0440, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<pre><code class=\"cpp\">void Service_WaitSemaphore(uint8_t semaphoreId) { Kernel_DisableInterrupts(); if(semaphoreId &lt; CONFIG_SEMAPHORES_NUMBER) { if(currentTask->semaphorePtr == &amp;semaphores[semaphoreId]) { *currentTask->semaphorePtr = false; } else { currentTask->status = TASK_STATUS_SLEEP; currentTask->semaphorePtr = &amp;semaphores[semaphoreId]; ChangeContext(); } } Kernel_EnableInterrupts(); }  void Service_SetSemaphore(uint8_t semaphoreId) { uint8_t i; if(semaphoreId &lt; CONFIG_SEMAPHORES_NUMBER) { semaphores[semaphoreId] = true; for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { if(tasksList[i].semaphorePtr == &amp;semaphores[semaphoreId]) { *tasksList[i].semaphorePtr = false; tasksList[i].semaphorePtr = NULL; tasksList[i].status = TASK_STATUS_READY; } } } }<\/code><\/pre>\n<h2>\u041f\u0438\u0448\u0435\u043c \u041e\u0421, \u0442.\u043a. \u043c\u044b \u0443\u0436\u0435 \u0443\u043c\u043d\u044b\u0435<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0443\u0436\u0435 \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u043b\u0438 \u2013 \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c!<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0435\u043c \u043d\u0430 ATmega88.<\/p>\n<p><strong>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/123\/e4b\/d23\/123e4bd23b8e91ddc5e35b7d48594931.png\" width=\"624\" height=\"265\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/123\/e4b\/d23\/123e4bd23b8e91ddc5e35b7d48594931.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0434\u0442\u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044f \u0444\u0438\u0447\u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e.<\/p>\n<h2>os\/kernel\/config\/cpu.h<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u0434\u0435\u0444\u0430\u0439\u043d\u044b \u0434\u043b\u044f \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0444\u0438\u0447 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b.<\/p>\n<p>\u042f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 &#171;avr\/io.h&#187; \u0430\u0434\u0440\u0435\u0441 STACK_POINTER, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0437\u044f\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 (0x005D) \u0438 \u0437\u0430\u0434\u0435\u0444\u0430\u0439\u043d\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p><strong>CPU_KERNEL_TIMER_REGISTER<\/strong> \u2013 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u041e\u0421.<\/p>\n<p><strong>Cpu_KernelTimerClear()<\/strong> \u2013 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u0430. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u044f\u0434\u0440\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0440\u044b\u0436\u043a\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 \u041e\u0421. \u041a\u0430\u043a-\u043d\u0438\u043a\u0430\u043a 40 \u043c\u043a\u0441\u2026<\/p>\n<details class=\"spoiler\">\n<summary>cpu.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef CPU_H_ #define CPU_H_  #include &lt;avr\/io.h>  \/* Hardware stack interface config *\/ #define CPU_STACK_POINTER_REGISTER_ADDRESS0x005D  \/* Timer for 'kernel ISR' interface config *\/ #define CPU_KERNEL_TIMER_REGISTERTCNT0 #define Cpu_KernelTimerClear()(CPU_KERNEL_TIMER_REGISTER = 0x00)  #endif \/* CPU_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>os\/kernel\/config\/stack_cfg.h<\/h2>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0435\u043a\u0430. \u0420\u0430\u0437\u043c\u0435\u0440 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f., \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c, \u0442.\u043a. \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u00ab\u0432\u0440\u0443\u0447\u043d\u0443\u044e\u00bb \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p><strong>STACK_SPACE_FOR_GENERAL_PURPOSE_REGISTERS<\/strong> \u2013 \u043a\u043e\u043b-\u0432\u043e \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0435\u043a\u0435.<\/p>\n<p><strong>STACK_SPACE_FOR_STATUS_REGISTER<\/strong> \u2013 \u043a\u043e\u043b-\u0432\u043e \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430. \u042d\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abSREG\u00bb \u0443 AVR.<\/p>\n<p><strong>STACK_SPACE_FOR_RETURN_TO_TASK_ROUTINE<\/strong> \u2013 \u043a\u043e\u043b-\u0432\u043e \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0437\u0430\u0434\u0430\u0447\u0443. \u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438\u0437 \u044f\u0434\u0440\u0430 \u041e\u0421. \u042d\u0442\u043e \u043b\u0438\u0431\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0437\u0430\u0434\u0430\u0447\u0438, \u043b\u0438\u0431\u043e \u0442\u043e\u0447\u043a\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437.<\/p>\n<p><strong>STACK_SPACE_FOR_COMMON_USE<\/strong> \u2013 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0435\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438. <\/p>\n<p><strong>STACK_MINIMUM_EXPECTED_SIZE_FOR_TASK<\/strong> \u2013 \u044d\u0442\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<\/p>\n<p><strong>StackPointer_GetAddress()<\/strong> \u2013 \u044d\u0442\u043e\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0431\u0430\u0439\u0442, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p><strong>StackPointer_SetAddress(__addr__)<\/strong> \u2013 \u044d\u0442\u043e\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441.<\/p>\n<details class=\"spoiler\">\n<summary>stack_cfg.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef STACK_CFG_H_ #define STACK_CFG_H_  #include \"cpu.h\"  #define STACK_SPACE_FOR_GENERAL_PURPOSE_REGISTERS32 #define STACK_SPACE_FOR_STATUS_REGISTER1 #define STACK_SPACE_FOR_RETURN_TO_TASK_ROUTINE2 #define STACK_SPACE_FOR_COMMON_USE(STACK_SPACE_FOR_GENERAL_PURPOSE_REGISTERS + STACK_SPACE_FOR_STATUS_REGISTER) #define STACK_MINIMUM_EXPECTED_SIZE_FOR_TASK(STACK_SPACE_FOR_COMMON_USE + STACK_SPACE_FOR_RETURN_TO_TASK_ROUTINE)  #define STACK_POINTER_REGISTER(*((uint16_t *)CPU_STACK_POINTER_REGISTER_ADDRESS)) #define StackPointer_GetAddress()((uint8_t *)STACK_POINTER_REGISTER) #define StackPointer_SetAddress(__addr__)(STACK_POINTER_REGISTER = (uint16_t)(__addr__))  #endif \/* STACK_CFG_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>os\/kernel\/core\/\u2026<\/h2>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u00abstack\u00bb \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c. \u0422\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e:<\/p>\n<p><strong>stack.h<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>stack.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef STACK_H_ #define STACK_H_  #include &lt;stdint.h> #include &lt;stddef.h>  typedef struct { uint8_t *stackPointer; uint8_t *stackBegin; uint8_t *stackEnd; } Stack_t;  void Stack_Init(Stack_t *stack, uint8_t *stackBuf, size_t stackSize); void Stack_PushByte(Stack_t *stack, uint8_t byte);  #endif \/* STACK_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>stack.c<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>stack.c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include &lt;stddef.h> #include \"stack.h\"  void Stack_Init(Stack_t *stack, uint8_t *stackBuf, size_t stackSize) { uint8_t *stackBegin; uint8_t *stackEnd;  stackBegin = (stackBuf + stackSize - 1); stackEnd = stackBuf;  stack->stackPointer = stackBegin; stack->stackBegin = stackBegin; stack->stackEnd = stackEnd; }  void Stack_PushByte(Stack_t *stack, uint8_t byte) { *stack->stackPointer = byte; stack->stackPointer--; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u00abtask\u00bb \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0432 \u0442.\u0447. \u0438 \u00abstack\u00bb, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u00ab\u0437\u0430\u0434\u0430\u0447\u0443\u00bb.<\/p>\n<p><strong>task.h<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>task.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef TASK_H_ #define TASK_H_  #include &lt;stdint.h> #include &lt;stdbool.h> #include \"stack.h\"  typedef enum { TASK_STATUS_INIT=0, TASK_STATUS_SLEEP_TIMER, TASK_STATUS_SLEEP_SEMAPHORE, TASK_STATUS_READY, TASK_STATUS_RUN } TaskStatus_e;  typedef union { struct { unsigned stackOverflow:1; unsigned unused:7; } bits; uint8_t byte; } TaskErrorFlags_t;  typedef struct { bool firstEntry; TaskStatus_e status; TaskErrorFlags_t errorFlags; bool *semaphorePtr; void (*function)(void); Stack_t stack; uint16_t timer; } Task_t;  bool Task_Setup(Task_t *taskPointer, void *taskFunction, uint8_t *stackBuf, size_t stackSize);  #endif \/* TASK_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>task.c<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>task.c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include &lt;stdbool.h> #include &lt;stddef.h> #include \"..\/config\/stack_cfg.h\" #include \"stack.h\" #include \"task.h\"  bool Task_Setup(Task_t *taskPointer, void *taskFunction, uint8_t *stackBuf, size_t stackSize) { bool result = false; bool taskSlotAvailable; uint16_t word; uint8_t byteHigh; uint8_t byteLow;  if((taskPointer == NULL) || (taskFunction == NULL) || (stackBuf == NULL) || (stackSize &lt; STACK_MINIMUM_EXPECTED_SIZE_FOR_TASK)) { result = false; } else { taskSlotAvailable = ((void *)taskPointer->function == NULL) ? true : false; if(taskSlotAvailable) { taskPointer->firstEntry = true;  taskPointer->status = TASK_STATUS_READY; taskPointer->errorFlags.byte = 0x00; taskPointer->semaphorePtr = NULL; taskPointer->function = taskFunction; taskPointer->timer = 0;  \/* Init task stack *\/ Stack_Init(&amp;taskPointer->stack, stackBuf, stackSize);  \/* Set return address to the task body *\/ word = (uint16_t)(taskPointer->function); byteHigh = (uint8_t)(word >> 8); byteLow = (uint8_t)(word &amp; 0x00FF); Stack_PushByte(&amp;taskPointer->stack, byteLow); Stack_PushByte(&amp;taskPointer->stack, byteHigh);  \/*  *\/ result = true; } } return result; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u00abkernel\u00bb. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u043d\u0430 \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0445\u043e\u0442\u044f, \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p><strong>kernel.h<\/strong><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u00abKernel_SaveTaskContext()\u00bb \u0438 \u00abKernel_RestoreTaskContext()\u00bb, \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u2013 \u043e\u0434\u0438\u043d \u0441\u0434\u0435\u043b\u0430\u043d \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0438\u0441\u043e\u043a push\/pop, \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 \u0446\u0438\u043a\u043b \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u2013 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435. \u042d\u043a\u043e\u043d\u043e\u043c\u0438\u043c 84 \u0431\u0430\u0439\u0442\u0430, \u0447\u0442\u043e \u0434\u043b\u044f AVR \u0442\u0430\u043a\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0430 35 \u043c\u043a\u0441 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0442\u043e \u0442\u043e\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u043e \u044f \u043d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 AVR \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2013 \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u043c\u0435\u0440\u0442\u0435\u043b\u044c\u043d\u043e, \u0438 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0431\u044b\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043a \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043a\u0430\u043a extern, \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u00abservices\u00bb. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u00abkernel\u00bb \u2013 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u00abextern\u00bb, \u043d\u043e \u044f \u0442\u0430\u043a \u043d\u0435 \u0445\u043e\u0447\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>kernel.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef KERNEL_H_ #define KERNEL_H_  #include &lt;stdint.h> #include &lt;stdbool.h> #include \"task.h\" #include \"..\/..\/config.h\"  #if(CONFIG_KERNEL_USE_COMPACT_PUSH_POP) \/***************************************\/ #define Kernel_SaveTaskContext()\\ asm volatile(\\ \";------------------\\r\\n\"\\ \"push r31\\r\\n\"\\ \"push r30\\r\\n\"\\ \"push r29\\r\\n\"\\ \"push r28\\r\\n\"\\ \";------------------\\r\\n\"\\ \"in r28,__SREG__\\r\\n\"\\ \"push r28\\r\\n\"\\ \";------------------\\r\\n\"\\ \"ldi r29,(32-4)\\r\\n\"\\ \"ldi ZL,(32-4)\\r\\n\"\\ \"ldi ZH,0\\r\\n\"\\ \";------------------\\r\\n\"\\ \"loop_push:\\r\\n\"\\ \"ld r28,-Z\\r\\n\"\\ \"push r28\\r\\n\"\\ \"dec r29\\r\\n\"\\ \"brne loop_push\\r\\n\"\\ \";------------------\\r\\n\"); \/***************************************\/ #define Kernel_RestoreTaskContext()\\ asm volatile(\\ \";----------------------\\r\\n\"\\ \"ldi r29,(32-4)\\r\\n\"\\ \"ldi ZL,0\\r\\n\"\\ \"ldi ZH,0\\r\\n\"\\ \"loop_pop:\\r\\n\"\\ \"pop r28\\r\\n\"\\ \"st Z+,r28\\r\\n\"\\ \"dec r29\\r\\n\"\\ \"brne loop_pop\\r\\n\"\\ \";----------------------\\r\\n\"\\ \"pop r28\\r\\n\"\\ \"out __SREG__,r28\\r\\n\"\\ \";----------------------\\r\\n\"\\ \"pop r28\\r\\n\"\\ \"pop r29\\r\\n\"\\ \"pop r30\\r\\n\"\\ \"pop r31\\r\\n\"\\ \";----------------------\\r\\n\"); #else \/***************************************\/ #define Kernel_SaveTaskContext()\\ asm volatile(\\ \"push r31\\r\\n\"\\ \"push r30\\r\\n\"\\ \"push r29\\r\\n\"\\ \"push r28\\r\\n\"\\ \"push r27\\r\\n\"\\ \"push r26\\r\\n\"\\ \"push r25\\r\\n\"\\ \"push r24\\r\\n\"\\ \"push r23\\r\\n\"\\ \"push r22\\r\\n\"\\ \"push r21\\r\\n\"\\ \"push r20\\r\\n\"\\ \"push r19\\r\\n\"\\ \"push r18\\r\\n\"\\ \"push r17\\r\\n\"\\ \"push r16\\r\\n\"\\ \"push r15\\r\\n\"\\ \"push r14\\r\\n\"\\ \"push r13\\r\\n\"\\ \"push r12\\r\\n\"\\ \"push r11\\r\\n\"\\ \"push r10\\r\\n\"\\ \"push r9\\r\\n\"\\ \"push r8\\r\\n\"\\ \"push r7\\r\\n\"\\ \"push r6\\r\\n\"\\ \"push r5\\r\\n\"\\ \"push r4\\r\\n\"\\ \"push r3\\r\\n\"\\ \"push r2\\r\\n\"\\ \"push r1\\r\\n\"\\ \"push r0\\r\\n\"\\ \"in r16,__SREG__\\r\\n\"\\ \"push r16\\r\\n\"); \/***************************************\/ #define Kernel_RestoreTaskContext()\\ asm volatile(\\ \"pop r16\\r\\n\"\\ \"out __SREG__,r16\\r\\n\"\\ \"pop r0\\r\\n\"\\ \"pop r1\\r\\n\"\\ \"pop r2\\r\\n\"\\ \"pop r3\\r\\n\"\\ \"pop r4\\r\\n\"\\ \"pop r5\\r\\n\"\\ \"pop r6\\r\\n\"\\ \"pop r7\\r\\n\"\\ \"pop r8\\r\\n\"\\ \"pop r9\\r\\n\"\\ \"pop r10\\r\\n\"\\ \"pop r11\\r\\n\"\\ \"pop r12\\r\\n\"\\ \"pop r13\\r\\n\"\\ \"pop r14\\r\\n\"\\ \"pop r15\\r\\n\"\\ \"pop r16\\r\\n\"\\ \"pop r17\\r\\n\"\\ \"pop r18\\r\\n\"\\ \"pop r19\\r\\n\"\\ \"pop r20\\r\\n\"\\ \"pop r21\\r\\n\"\\ \"pop r22\\r\\n\"\\ \"pop r23\\r\\n\"\\ \"pop r24\\r\\n\"\\ \"pop r25\\r\\n\"\\ \"pop r26\\r\\n\"\\ \"pop r27\\r\\n\"\\ \"pop r28\\r\\n\"\\ \"pop r29\\r\\n\"\\ \"pop r30\\r\\n\"\\ \"pop r31\\r\\n\"); #endif  #define Kernel_Nop()asm volatile(\"nop\") #define Kernel_JumpToIsr()asm volatile(\"rjmp Kernel_Isr\") #define Kernel_DisableInterrupts()asm volatile(\"cli\") #define Kernel_EnableInterrupts()asm volatile(\"sei\") #define Kernel_ReturnFromIsr()asm volatile(\"reti\")  extern uint16_t Kernel_timer; extern Task_t *Kernel_currentTask; extern Task_t Kernel_tasksList[CONFIG_USER_TASKS_NUMBER]; extern bool Kernel_semaphores[CONFIG_SEMAPHORES_NUMBER];  void Kernel_Init(void); void Kernel_Start(void); void Kernel_Isr(void) __attribute__ ((naked));  #endif \/* KERNEL_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>kernel.c<\/strong><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044f\u0434\u0440\u0430 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f, \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u043d\u0430\u0448\u0438\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u043e\u043c \u0432\u044b\u0448\u0435, \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043d\u0443 \u0438, \u0441\u044e\u0440\u043f\u0440\u0438\u0437-\u0441\u044e\u0440\u043f\u0440\u0438\u0437, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443! \u041e \u043d\u0435\u0442!<\/p>\n<p><strong>ErrorCheck_StackOverflowed()<\/strong> \u2013 \u043c\u0430\u043a\u0440\u043e\u0441, \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043b\u043e\u0432\u0443\u0448\u043a\u0443 \u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c. \u041d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u043e\u0448\u043b\u0438 \u0432 \u044f\u0434\u0440\u043e \u0441 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u0430 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u043e\u043d \u0432 \u0437\u0430\u0434\u0430\u0447\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u2013 \u043d\u0443 \u043d\u0438\u043a\u0430\u043a. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0438\u0434\u0435\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u043b\u044e\u0442\u044b\u0435 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438 \u0431\u0435\u0437 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043b\u043e\u0432\u0443\u0448\u0435\u043a\u2026 \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u2013 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u041e\u0417\u0423 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0430 \u043f\u043e\u0440\u0447\u0443, \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u0443\u043c\u043c, \u0438\u043b\u0438 \u0432\u0440\u043e\u0434\u0435 \u0442\u043e\u0433\u043e, \u043d\u043e \u044d\u0442\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0448\u043e \u043a\u0430\u043f\u0435\u0446\u2026 \u0422\u0430\u043a \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0435\u0439 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c \u200b<\/p>\n<p>\u0425\u043e\u0447\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u00abTimersRoutine()\u00bb. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u0434\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u00abSleep\u00bb \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u0438 \u0442\u0430\u043c \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u044f\u0434\u0440\u0430 \u00abKernel_timer\u00bb. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043e\u0434\u0438\u043d \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0435\u0435.<\/p>\n<p><strong>kernelInterruptTimer<\/strong> \u2013 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u042d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u041e\u0421. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u00abScheduler()\u00bb \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u2013 \u00ab\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0435\u043b\u0430 \u0438 \u043c\u044b \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u044f\u0434\u0440\u0430 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0438\u043b\u0438 \u0438\u0437-\u0437\u0430 \u0440\u0443\u0447\u043d\u043e\u0439 \u0441\u043c\u0435\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430?\u00bb. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u00abSleep\u00bb. \u0411\u0435\u0437 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0438 \u2013 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u0430\u044e\u0442 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u00abSleep\u00bb.<\/p>\n<details class=\"spoiler\">\n<summary>kernel.c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include &lt;stddef.h> #include &lt;stdbool.h> #include &lt;string.h> #include \"..\/config\/cpu.h\" #include \"..\/config\/stack_cfg.h\" #include \"stack.h\" #include \"kernel.h\"  #define ErrorCheck_StackOverflowed()\\ (((Kernel_currentTask->stack.stackPointer + 1) &lt; Kernel_currentTask->stack.stackEnd)\\ || (Kernel_currentTask->stack.stackPointer > Kernel_currentTask->stack.stackBegin))  Task_t *Kernel_currentTask; Task_t Kernel_tasksList[CONFIG_USER_TASKS_NUMBER]; bool Kernel_semaphores[CONFIG_SEMAPHORES_NUMBER]; uint16_t Kernel_timer;  static void Scheduler(void); static void IdleTask(void); static void TimersRoutine(void); static void SelectNextTask(void);  static Task_t taskIdle; static uint8_t taskIdleStackBuf[CONFIG_IDLE_TASK_STACK_SIZE];  static Stack_t kernelStack; static uint8_t kernelStackBuf[CONFIG_KERNEL_STACK_SIZE];  void Kernel_Init(void) { \/* Clear variables *\/ Kernel_timer = 0; memset(Kernel_tasksList, 0, sizeof(Kernel_tasksList)); memset(Kernel_semaphores, 0, sizeof(Kernel_tasksList));  \/* Initialize variables *\/ Task_Setup(&amp;taskIdle, IdleTask, taskIdleStackBuf, sizeof(taskIdleStackBuf)); Stack_Init(&amp;kernelStack, kernelStackBuf, sizeof(kernelStackBuf)); }  void Kernel_Start(void) { Kernel_currentTask = &amp;taskIdle; Kernel_currentTask->firstEntry = false; StackPointer_SetAddress(Kernel_currentTask->stack.stackPointer); Kernel_JumpToIsr(); }  void Kernel_Isr(void) { \/* Save task context to the stack buffer *\/ Kernel_SaveTaskContext();  \/* Save current state of the hardware stack pointer to the current task structure *\/ Kernel_currentTask->stack.stackPointer = StackPointer_GetAddress();  \/* Set stack pointer to the kernel stack buffer *\/ StackPointer_SetAddress(kernelStack.stackPointer);  \/* Process scheduler logic *\/ Scheduler();  \/* Save current state of the hardware stack pointer tor the kernel stack structure *\/ kernelStack.stackPointer = StackPointer_GetAddress();  \/* Move stack pointer to the stack buffer of the next task *\/ StackPointer_SetAddress(Kernel_currentTask->stack.stackPointer);  Cpu_KernelTimerClear();  \/* If it's first entry to Kernel ISR from this task -> then do nothing *\/ if(Kernel_currentTask->firstEntry) { Kernel_currentTask->firstEntry = false; } \/* else -> restore task context from stack *\/ else { Kernel_RestoreTaskContext(); }  \/* Return from 'naked' function that is also interrupt routine *\/ Kernel_ReturnFromIsr(); }  static void Scheduler(void) { static uint8_t kernelInterruptTimer = 0;  \/* Traps *\/ if(ErrorCheck_StackOverflowed()) { for(;;) { Kernel_Nop(); } }  kernelInterruptTimer += CPU_KERNEL_TIMER_REGISTER; if(kernelInterruptTimer >= CONFIG_KERNEL_ISR_TIMER_COMPARATOR_VALUE) { kernelInterruptTimer = 0; TimersRoutine(); } SelectNextTask(); }  static void IdleTask(void) { uint8_t i; for(;;) { for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { Kernel_DisableInterrupts(); if(Kernel_tasksList[i].status == TASK_STATUS_READY) { Kernel_Isr(); } Kernel_EnableInterrupts(); } } }  static void TimersRoutine(void) { uint8_t i;  Kernel_timer++;  for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { if(Kernel_tasksList[i].status == TASK_STATUS_SLEEP_TIMER) { if(Kernel_tasksList[i].timer == Kernel_timer) { Kernel_tasksList[i].status = TASK_STATUS_READY; } } } }  static void SelectNextTask(void) { static uint8_t currentTaskIndex = 0; bool taskAvailable; uint8_t i;  if(Kernel_currentTask->status == TASK_STATUS_RUN) { Kernel_currentTask->status = TASK_STATUS_READY; }  i = CONFIG_USER_TASKS_NUMBER; while(i--) { Kernel_currentTask = &amp;Kernel_tasksList[currentTaskIndex];  taskAvailable = false; if(Kernel_currentTask->status == TASK_STATUS_READY) { taskAvailable = true; }  currentTaskIndex++; if(currentTaskIndex >= CONFIG_USER_TASKS_NUMBER) { currentTaskIndex = 0; }  if(taskAvailable) { break; } }  if(!taskAvailable) { Kernel_currentTask = &amp;taskIdle; }  Kernel_currentTask->status = TASK_STATUS_RUN; }<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>os\/services\/\u2026<\/h2>\n<p>\u00a0<strong>service.h<\/strong><\/p>\n<p>\u041d\u0443 \u0442\u0443\u0442 \u0441\u043a\u0443\u043a\u043e\u0442\u0435\u043d\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435\u2026<\/p>\n<details class=\"spoiler\">\n<summary>service.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef SERVICES_H_ #define SERVICES_H_  #include &lt;stdint.h> #include &lt;stddef.h> #include &lt;stdbool.h>  void Service_InitKernel(void); void Service_Sleep(uint16_t cycles); void Service_WaitSemaphore(uint8_t semaphoreId); void Service_SetSemaphore(uint8_t semaphoreId, bool broadcast, bool changeContext); bool Service_CreateUserTask(void *taskFunction, uint8_t *stackBuf, size_t stackSize);  #endif \/* SERVICES_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<p><strong>service.c<\/strong><\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0443\u0442 \u043a\u043e\u0435-\u0447\u0442\u043e \u0435\u0441\u0442\u044c. \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0431\u044b\u043b\u0430 \u0441\u043a\u0443\u043a\u043e\u0442\u0435\u043d\u044c, \u044f \u043d\u0435 \u0445\u043e\u0447\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u044f <s>\u0437\u0430\u0435\u0431<\/s> \u0443\u0441\u0442\u0430\u043b\u2026<\/p>\n<p>\u041e\u043a\u0435\u0439\u2026<\/p>\n<p><strong>Service_Sleep()<\/strong> \u2013 \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u0432\u0438\u0434\u043d\u043e \u0442\u043e\u0442 \u043f\u0440\u0438\u043a\u043e\u043b \u0441 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u043c. \u041c\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00abKernel_timer\u00bb \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0418 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u0439\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p><strong>Service_SetSemaphore()<\/strong> \u2013 \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u0430, \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u00abbroadcast\u00bb \u0438 \u00abchangeContext\u00bb. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 == \u00abtrue\u00bb, \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u00ab\u043f\u043e\u0435\u0434\u0443\u0442\u00bb \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u043c\u0430\u0444\u043e\u0440. \u0412\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0435\u0441\u043b\u0438 \u00abtrue\u00bb, \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u0441\u043c\u0435\u043d\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0435\u043c\u0430\u0444\u043e\u0440 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u0430 \u043d\u0435 \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u0430 \u043f\u0440\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435 \u00abbroadcast == false\u00bb \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e, \u0442.\u043a. \u0443 \u043c\u0435\u043d\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u043e\u0432, \u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0437\u0430\u0434\u0430\u0447. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e \u043d\u0435 \u00ab\u041b\u0435\u043d\u044c\u00bb, \u0430 \u00abErrata\u00bb.<\/p>\n<p>\u0423 \u00abAtmel\u00bb, \u043a\u0441\u0442\u0430\u0442\u0438, \u0442\u043e\u0436\u0435 Errata \u0435\u0441\u0442\u044c, \u0430 \u0447\u0435\u043c \u044f \u0445\u0443\u0436\u0435?<\/p>\n<details class=\"spoiler\">\n<summary>service.c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include &lt;stddef.h> #include &lt;stdbool.h> #include \"..\/config.h\" #include \"..\/kernel\/core\/task.h\" #include \"..\/kernel\/core\/kernel.h\"  \/* * Initializes kernel *\/ void Service_InitKernel(void) { Kernel_Init(); }  \/* * Sleep service. * Immediately changes the context. * Arguments: *cycles- number of OS timer ticks, after which task will be continued. *\/ void Service_Sleep(uint16_t cycles) { Kernel_DisableInterrupts(); Kernel_currentTask->status = TASK_STATUS_SLEEP_TIMER;  if((UINT16_MAX - Kernel_timer) &lt; cycles) { cycles -= (UINT16_MAX - Kernel_timer); Kernel_currentTask->timer = cycles; } else { Kernel_currentTask->timer = (Kernel_timer + cycles); }  Kernel_Isr(); Kernel_EnableInterrupts(); }  \/* * Transfers task to the sleep state to wait for the binary semaphore. * - If the semaphore is already set -> semaphore will be cleared and function returns to the current task. * - If the semaphore isn't set yet -> it changes the context. *\/ void Service_WaitSemaphore(uint8_t semaphoreId) { Kernel_DisableInterrupts(); if(semaphoreId &lt; CONFIG_SEMAPHORES_NUMBER) { if(Kernel_currentTask->semaphorePtr == &amp;Kernel_semaphores[semaphoreId]) { *Kernel_currentTask->semaphorePtr = false; } else { Kernel_currentTask->status = TASK_STATUS_SLEEP_SEMAPHORE; Kernel_currentTask->semaphorePtr = &amp;Kernel_semaphores[semaphoreId]; Kernel_Isr(); } } Kernel_EnableInterrupts(); }  \/* * Sets the semaphore by ID. * Arguments: *semaphoreId- Semaphore ID; *broadcast- allows you continue tasks synchronic, if all of them waits current semaphore: *  If 'true', then status of all tasks which waits this semaphore will be changed to the 'ready', *  If 'false', then first task which waits this semaphore will be changed to the 'ready'. *changeContext- context will be changed immediately. *\/ void Service_SetSemaphore(uint8_t semaphoreId, bool broadcast, bool changeContext) { uint8_t i; if(semaphoreId &lt; CONFIG_SEMAPHORES_NUMBER) { Kernel_semaphores[semaphoreId] = true; for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { if(Kernel_tasksList[i].semaphorePtr == &amp;Kernel_semaphores[semaphoreId]) { *Kernel_tasksList[i].semaphorePtr = false; Kernel_tasksList[i].semaphorePtr = NULL; Kernel_tasksList[i].status = TASK_STATUS_READY; if(!broadcast) { break; } } } if(changeContext) { Kernel_DisableInterrupts(); Kernel_currentTask->status = TASK_STATUS_READY; Kernel_Isr(); Kernel_EnableInterrupts(); } } }  \/* * Creates user task in the scheduler queue. *\/ bool Service_CreateUserTask(void *taskFunction, uint8_t *stackBuf, size_t stackSize) { bool result; uint8_t i;  result = false; for(i = 0; i &lt; CONFIG_USER_TASKS_NUMBER; i++) { result = Task_Setup(&amp;Kernel_tasksList[i], taskFunction, stackBuf, stackSize); if(result) { break; } } return result; }<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>os\/config.h<\/h2>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0443\u043d\u044b\u043b\u043e\u0435.<\/p>\n<p>\u041d\u043e \u0432\u0441\u0435 \u0436\u0435.<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u041e\u0421.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0447\u043a\u0438, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u00abCONFIG_KERNEL_ISR_TIMER_COMPARATOR_VALUE\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u041e\u0421.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043a\u0440\u0443\u0442\u043e, \u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u043a\u0430\u043a, \u0442.\u043a. \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0441\u043c\u0435\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u0437 \u0437\u0430\u0434\u0430\u0447 (\u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0431\u044b\u043b\u043e \u0432\u044b\u0448\u0435?).<\/p>\n<details class=\"spoiler\">\n<summary>config.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef CONFIG_H_ #define CONFIG_H_  #include &lt;stdint.h> #include \"kernel\/config\/stack_cfg.h\"  #define CONFIG_KERNEL_USE_COMPACT_PUSH_POP0 #define CONFIG_USER_TASKS_NUMBER5 #define CONFIG_SEMAPHORES_NUMBER10  #define CONFIG_KERNEL_ISR_TIMER_COMPARATOR_VALUE125  \/* Idle task stack must have extra space for return address when it's call 'Kernel_Isr()' from own body *\/ #define CONFIG_IDLE_TASK_STACK_SIZE(STACK_MINIMUM_EXPECTED_SIZE_FOR_TASK + 2)  \/* Kernel stack must have space only for function, that can be called in 'Kernel_Isr()' *\/ \/* Please, change it only if you change 'Kernel_Isr' routine!!! *\/ #define CONFIG_KERNEL_STACK_SIZE16  #endif \/* CONFIG_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>os\/os.h<\/h2>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e\u2026 \u0414\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c\u2026<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0432\u0430\u0448 \u00abmain()\u00bb, \u043d\u0443 \u0438\u043b\u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u044b \u0442\u0430\u043c \u041e\u0421 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c.<\/p>\n<p>\u0418 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u041e\u0421.<\/p>\n<details class=\"spoiler\">\n<summary>os.h<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#ifndef OS_H_ #define OS_H_  #include \"kernel\/core\/kernel.h\" #include \"services\/services.h\"  #define OS_Init()Service_InitKernel() #define OS_Start()Kernel_Start() #define OS_Isr()Kernel_JumpToIsr() #define OS_Sleep(__cycles__)Service_Sleep((__cycles__)) #define OS_SemaphoreWait(__id__)Service_WaitSemaphore((__id__)) #define OS_SemaphoreSet(__id__)Service_SetSemaphore((__id__), false, false) #define OS_SemaphoreSetImmidiately(__id__)Service_SetSemaphore((__id__), false, true) #define OS_SemaphoreSetBroadcast(__id__)Service_SetSemaphore((__id__), true, false) #define OS_SemaphoreSetBroadcastImmidiately(__id__)Service_SetSemaphore((__id__), true, true) #define OS_CreateTask(__func__, __stack_buf__, __stack_size__)Service_CreateUserTask((__func__), (__stack_buf__), (__stack_size__))  #endif \/* OS_H_ *\/<\/code><\/pre>\n<\/div>\n<\/details>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0448\u0435\u0439 \u041e\u0421.<\/p>\n<p>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 1 \u043c\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c 4 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u00abSleep\u00bb\u00a0\u043d\u0430 100 \u043c\u0441.<\/p>\n<p>\u041a\u043e\u0434 \u00abmain()\u00bb \u043d\u0438\u0436\u0435. \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u200b<\/p>\n<p>\u041a\u043e\u0434 &#171;main()&#187;, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e:<\/p>\n<details class=\"spoiler\">\n<summary>main.c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">#include &lt;stdint.h> #include &lt;stdbool.h> #include &lt;stddef.h> #include &lt;avr\/io.h> #include &lt;avr\/interrupt.h> #include \"os\/os.h\"  #define TIMER_KERNEL_PERIOD_debug1 #define TIMER_KERNEL_PERIOD_1ms2 #define TIMER_KERNEL_PERIOD_8ms3 #define TIMER_KERNEL_PERIODTIMER_KERNEL_PERIOD_1ms  void Gpio_Init(void); void Timer1A_Init(void); void Timer2A_Init(void);  uint8_t stackBufTask1[64]; uint8_t stackBufTask2[64]; uint8_t stackBufTask3[64]; uint8_t stackBufTask4[64];  void Task1(void); void Task2(void); void Task3(void); void Task4(void);  int main(void) { cli(); Gpio_Init(); Timer1A_Init(); OS_Init(); OS_CreateTask(Task1, stackBufTask1, sizeof(stackBufTask1)); OS_CreateTask(Task2, stackBufTask2, sizeof(stackBufTask2)); OS_CreateTask(Task3, stackBufTask3, sizeof(stackBufTask3)); OS_CreateTask(Task4, stackBufTask4, sizeof(stackBufTask4)); sei(); OS_Start(); }  void Gpio_Init(void) { DDRB |= 0xFF; PORTB = 0x00; }  void Timer1A_Init(void) { TCCR0A = 0x00;\/* Normal mode, PWM pin OC0A\/OC0B disconnected *\/ TIMSK0 |= (1&lt;&lt;OCIE0A);\/* Enable OVF A interrupt *\/ #if(TIMER_KERNEL_PERIOD == TIMER_KERNEL_PERIOD_debug) TCCR0B = (1&lt;&lt;CS00);\/* Freq\/1*\/ OCR0A = 50;\/* 50 ticks*\/ #elif(TIMER_KERNEL_PERIOD == TIMER_KERNEL_PERIOD_1ms) TCCR0B = (1&lt;&lt;CS01)|(1&lt;&lt;CS00);\/* Freq\/64*\/ OCR0A = 125;\/* 1 ms*\/ #elif(TIMER_KERNEL_PERIOD == TIMER_KERNEL_PERIOD_8ms) TCCR0B = (1&lt;&lt;CS02);\/* Freq\/256*\/ OCR0A = 250;\/* 8 ms*\/ #else #error \"Wrong kernel timer period specified!\" #endif TCNT0 = 0x00;\/*  *\/ TIFR0 = 0xFF;\/* ISR flags resets by writing '0xFF' *\/ }  void Timer2A_Init(void) { TCCR2A = 0x00;\/* Normal mode, PWM pin OC0A\/OC0B disconnected *\/ TIMSK2 |= (1&lt;&lt;OCIE2A);\/* Enable OVF A interrupt *\/ TCCR2B = (1&lt;&lt;CS22);\/* Freq\/64*\/ OCR2A = 25;\/* 200 uS*\/ TCNT2 = 0x00;\/**\/ TIFR2 = 0xFF;\/* ISR flags resets by writing '0xFF' *\/ }  void Task1(void) { for(;;) { OS_Sleep(100); PORTB ^= 1; } }  void Task2(void) { for(;;) { OS_Sleep(100); PORTB ^= 2; } }  void Task3(void) { for(;;) { OS_Sleep(100); PORTB ^= 4; } }  void Task4(void) { for(;;) { OS_Sleep(100); PORTB ^= 8; } }  ISR(TIMER0_COMPA_vect, ISR_NAKED) { OS_Isr(); }<\/code><\/pre>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0421\u0445\u0435\u043c\u0430 \u0432 \u043f\u0440\u043e\u0442\u0435\u0443\u0441\u0435 \u0434\u043b\u044f \u0430\u0440\u0434\u0443\u0438\u043d\u0449\u0438\u043a\u043e\u0432 99-\u0433\u043e \u043b\u0435\u0432\u0435\u043b\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5be\/e2a\/6e1\/5bee2a6e1d91b5311562421f538c5a0a.png\" width=\"624\" height=\"304\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5be\/e2a\/6e1\/5bee2a6e1d91b5311562421f538c5a0a.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u041e\u0441\u0446\u0438\u043b\u043e\u0441\u043a\u043e\u043f\u0438\u044f<\/strong><\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c 4 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0430\u043d\u0434\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/49e\/a71\/696\/49ea71696d7a4cfa61536a122e300544.png\" alt=\"50 \u043c\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\" title=\"50 \u043c\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\" width=\"624\" height=\"407\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49e\/a71\/696\/49ea71696d7a4cfa61536a122e300544.png\"\/><figcaption>50 \u043c\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442<\/figcaption><\/figure>\n<p>\u041d\u043e, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f, \u0432\u0438\u0434\u043d\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 40 \u043c\u043a\u0441 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438. \u041a\u0430\u043a \u0440\u0430\u0437 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u044f\u0434\u0440\u0430 \u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u00abSleep\u00bb \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e 40 \u043c\u043a\u0441, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bdf\/91b\/71e\/bdf91b71eed14c0a99e0c769fa209343.png\" alt=\"20 \u043c\u043a\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\" title=\"20 \u043c\u043a\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\" width=\"624\" height=\"407\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bdf\/91b\/71e\/bdf91b71eed14c0a99e0c769fa209343.png\"\/><figcaption>20 \u043c\u043a\u0441 \u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442<\/figcaption><\/figure>\n<\/div>\n<\/details>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>GitHub \u044f \u0441\u0435\u0431\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0432\u0435\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u043b\u0438\u043b \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0433\u0443\u0433\u043b-\u0434\u0438\u0441\u043a: <a href=\"https:\/\/drive.google.com\/file\/d\/1Tj85OS61wcUDEctR-ddX1cvLLcTPtAJl\/view?usp=sharing\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a><\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0443\u0436\u0435 \u0441\u0441\u044b\u043b\u0430\u043b\u0441\u044f \u043f\u0430\u0440\u0443 \u0440\u0430\u0437: <a href=\"https:\/\/habr.com\/ru\/post\/267573\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a><\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u043b\u0441\u044f, \u043d\u043e \u0447\u0438\u0442\u0430\u043b, \u0445\u043e\u0442\u044c \u0438 \u0434\u0430\u0432\u043d\u043e: <a href=\"https:\/\/habr.com\/ru\/post\/454874\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a><\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 AVR-GCC \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c: <a href=\"https:\/\/gcc.gnu.org\/wiki\/avr-gcc#Register_Layout\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a><\/p>\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\/articles\/570664\/\"> https:\/\/habr.com\/ru\/articles\/570664\/<\/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>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e \u044f \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0443\u044e \u041e\u0421 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043d\u043e \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043c\u0430\u043d\u0443\u0430\u043b\u0430, \u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u0438\u0441\u043a\u0430\u043b, \u0445\u0437. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0447\u0442\u043e \u043a \u0447\u0435\u043c\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0438 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0441\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u0438\u0449\u0443\u0449\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445 \u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043d\u0430 <s>Pikabu<\/s> \u0425\u0430\u0431\u0440\u0435, \u0430 \u043d\u0435 \u0432 \u043f\u0430\u0442\u0435\u043d\u0442\u0430\u0445, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0443\u043d\u044b\u043b\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0441 \u043c\u0435\u043c\u0430\u043c\u0438.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043b\u044e\u0434\u0435\u0439, \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u041e\u0421, \u0445\u043e\u0442\u044f \u0431\u044b \u0448\u0430\u043f\u043e\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0435\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0443\u0436\u0435 \u0441\u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u041e\u0421. \u041f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e, \u043d\u043e \u0441\u0432\u043e\u044e!)<\/p>\n<p>\u0418\u0442\u0430\u043a\u2026 \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043a\u0440\u0443\u0442\u043e \u043b\u0438, \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u0412\u043e\u0442 \u0438 \u0440\u0435\u0448\u0438\u043b, \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u041e\u0421.<\/p>\n<blockquote>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0446\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u041e\u0421, \u0434\u0430\u0442\u044c \u0435\u0439 \u043f\u0430\u0444\u043e\u0441\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u0440\u0443\u0442\u044b\u0435 \u043f\u0430\u0446\u0430\u043d\u044b. \u042f \u0435\u0435 \u0432\u044b\u043b\u043e\u0436\u0443, \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u0434\u0435\u043b\u0430\u044e. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435\u0442. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0434\u043e\u0434\u0435\u043b\u0430\u044e&#8230; \u041c\u0435\u043d\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 &#8212; \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0435\u0436\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u041f\u0435\u0440\u0432\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0431\u044b\u043b\u0430 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435. \u041a\u043e\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e, \u0442.\u043a. \u0441\u0434\u0435\u043b\u0430\u043b \u044f \u044d\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430 \u0432\u0435\u0447\u0435\u0440, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0448\u0435\u043b \u0434\u0430\u043b\u044c\u0448\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b Sleep \u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u044b.<\/p>\n<p>\u041d\u0443 \u0430 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u2013 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0438 \u0440\u0430\u0437\u0443 \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0448\u044c\u0441\u044f \u0437\u0430\u0432\u0441\u0435\u0433\u0434\u0430\u0442\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0438\u0445 \u041e\u0421, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0438\u0434\u0435\u0439 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0443 \u0438\u043b\u0438 \u0438\u043d\u0443\u044e \u0444\u0438\u0447\u0443, \u0438 \u043a\u0430\u043a \u043e\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u043a\u0430\u043a\u0438\u0435 \u0444\u0438\u0447\u0438 \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u044b, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u0414\u0430, \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c, \u043d\u0435 \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043d\u0438\u0447\u0435\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c. \u0418\u0437 \u041e\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e <a href=\"http:\/\/wiki.pic24.ru\/doku.php\/osa\/ref\/intro\" rel=\"noopener noreferrer nofollow\">OSA <\/a>\u043d\u0430 PIC24F. \u0414\u0430 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u2013 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430 \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0434\u0430\u043b\u0435\u043a\u0430. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u200b<\/p>\n<p>\u0425\u043e\u0442\u044f&#8230;, \u044f \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c Windows? \u0414\u0430! \u041e\u043d\u0430 \u0436\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f? \u0422\u043e\u0436\u0435 \u0434\u0430! \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u044f \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c! \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u0440\u044f \u043d\u0430\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e \u043d\u0430 \u0441\u0435\u0431\u044f&#8230;<\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u041e\u0421<\/h2>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0443\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c, \u044f \u043d\u0435 \u0434\u0430\u044e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043a\u0430\u043a \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0436\u0443 \u0441\u0432\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442 \u0447\u0435\u0433\u043e \u044f \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0445\u043e\u0442\u0435\u043b \u0440\u0435\u0448\u0438\u0442\u044c.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u0432\u0430\u0445 \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Google (\u0438\u043b\u0438 Senior Google User, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435) \u2013 \u0438\u043c\u0435\u043d\u0443\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abEmbedded Operating System\u00bb.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u0440\u0430\u0432 \u2013 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0445\u043e\u043b\u0438\u0432\u0430\u0440\u0438\u0442\u044c!)<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u044d\u0442\u043e \u00abEmbedded OS\u00bb, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u041e\u0421\u00bb \u0438\u043b\u0438 \u00ab\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u00bb.<\/p>\n<p><strong>\u041c\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435<\/strong><\/p>\n<p><em>Embedded OS<\/em> \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u2013 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 (\u0434\u0430, \u0434\u0430\u0436\u0435 \u043d\u0430 \u0430\u0440\u0434\u0443\u0438\u043d\u043e, \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u0432\u043a\u0443\u0448\u0430\u044e \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 :D).<\/p>\n<h2>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u041e\u0421<\/h2>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u2013 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0435\u0448\u0430\u0442\u044c \u043d\u0430\u0448\u0430 \u041e\u0421, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435.<\/p>\n<p>\u041e\u043f\u0443\u0441\u0442\u0438\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u0442\u043e\u0433\u0434\u0430, \u0432 \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u00ab1\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044f\u0434\u0440\u043e \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0441\u0442\u0435\u043a \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443;<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044b\u0436\u043e\u043a \u0432 \u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab2\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u00ab2\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u2026 \u043d\u0443 \u0432\u044b \u043f\u043e\u043d\u044f\u043b\u0438 \u2026 \u0438 \u2026 \u00abhere we go again\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0431\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u043e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0438\u0437 <a href=\"https:\/\/habr.com\/ru\/post\/267573\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043d\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0442\u0435\u043c\u0443. \u041f\u0440\u043e\u0448\u0443 \u043c\u0435\u043d\u044f sorry, \u043d\u0435 \u0440\u0443\u0433\u0430\u0439\u0442\u0435, \u043d\u043e \u043c\u043d\u0435 \u043b\u0435\u043d\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0443\u0436\u0435 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438 <s>\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c<\/s> \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u0418\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e: <\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u0417\u0430\u0434\u0430\u0447\u0430\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u0421\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u042f\u0434\u0440\u043e\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u0431\u043b\u0443\u0434\u044b!<\/p>\n<\/li>\n<li>\n<p><s>\u041f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e;<\/s><\/p>\n<\/li>\n<li>\n<p><s>\u041f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043d\u043e\u0432\u043e.<\/s><\/p>\n<\/li>\n<\/ol>\n<h2>\u0422\u0435\u0440\u043c\u0438\u043d\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p><strong>\u0417\u0430\u0434\u0430\u0447\u0430<\/strong><\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0421\u0438-\u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b.<\/p>\n<p>\u0412\u0435\u0441\u044c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<pre><code class=\"cpp\">void Task1(void) {   for(;;)   {       \/* some important actions *\/   } } <\/code><\/pre>\n<p><strong>\u041a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u042d\u0442\u043e \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0447\u0430 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u0435 \u0431\u043e\u044f\u0441\u044c \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0430\u043c\u043e\u0439 \u041e\u0421.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043a\u0430\u043a 1\u043c\u0441, \u0442\u043e\u0433\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u041e\u0421 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435. \u0423\u0441\u043b\u043e\u0432\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 50\u043c\u043a\u0441.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><em>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043b\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2013 \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0443\u0441\u043f\u0435\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u0442\u0430\u043a, \u043d\u043e \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041c\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0439\u0442\u0438 \u0432 \u043b\u0435\u0441 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u044b, \u0434\u0435\u0440\u0436\u0443 \u0441\u0435\u0431\u044f \u0432 \u0440\u0443\u043a\u0430\u0445!<\/em><\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043d\u0430 1\u043c\u0441;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 1 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u00ab\u0442\u0438\u043a-\u0442\u0430\u043a\u00bb \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0421 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 2 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 2 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u00ab\u0442\u0438\u043a-\u0442\u0430\u043a\u00bb \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0421 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0443 2 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440;<\/p>\n<\/li>\n<li>\n<p>Aaaand \u2026 here we go again \u2026<\/p>\n<\/li>\n<\/ol>\n<p><strong>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435:<\/strong> \u041e\u0421 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0439 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442, \u043f\u043e\u043a\u0430 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f. \u041d\u043e <u>\u0441\u0430\u043c\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/u>, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439, \u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, Sleep, \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u044b \u0438 \u0442.\u043f. \u041e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c.<\/p>\n<p>\u041b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0420\u041e\u041d (\u043d\u0435\u0442, \u044d\u0442\u043e \u043d\u0435 &#171;\u043f\u043e\u0445&#187;)). \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0421\u0438, \u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u0438 \u0432 \u043d\u0438\u0445 \u0442\u0443\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u0432\u0441\u0435 \u0434\u0435\u043b\u043e.<\/p>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u041e\u0417\u0423. \u042d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u043b\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u00abstatic\u00bb.<\/p>\n<p>\u0410 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435?<\/p>\n<p>\u041d\u0443 \u0430 \u0438\u0445 \u043a\u0430\u043a \u0431\u044b \u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0432\u0441\u0435. \u041e\u043d\u0438 \u043a\u0430\u043a \u0431\u044b \u0435\u0441\u0442\u044c. \u041d\u043e \u0438 \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u2013 \u0438\u0445 \u043d\u0435\u0442.<\/p>\n<p>\u041d\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0436\u0435 \u043e\u043d\u0438 \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f?<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043e\u043d\u0438, \u043a\u0430\u043a \u0440\u0430\u0437, \u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u0421\u0438 \u2013 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0421\u0438, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">uint8_t d;  void Function(void) { uint8_t a; uint8_t b; uint8_t c;  c = a + b;  PORTB = c;  d = c \u2013 a; } <\/code><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 a, b \u0438 c, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0438 \u043d\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u00abc = a + b\u00bb \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abd\u00bb \u2013 \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u041e\u0417\u0423, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p><strong>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u041e\u0421:<\/strong> \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0420\u041e\u041d \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0438 \u043e\u043d\u0430 \u0443\u0432\u0435\u0440\u0435\u043d\u0430, \u0447\u0442\u043e \u0432\u0441\u0435 \u0420\u041e\u041d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0435\u0439, \u0438 \u043e\u043d\u0430 \u0442\u043e\u0447\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043d\u0438\u043a\u0442\u043e \u0435\u0439 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c!<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0443\u2026, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u2013 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u0436\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0418 \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b? \u0415\u0441\u043b\u0438, \u043f\u043e \u0441\u0443\u0442\u0438, \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u044b.<\/p>\n<p>\u0410 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p><strong>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445<\/strong>, \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0442: <a href=\"https:\/\/gcc.gnu.org\/wiki\/avr-gcc#Register_Layout\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<figure class=\"full-width\"><figcaption>\u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 AVR<\/figcaption><\/figure>\n<p><strong>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445<\/strong>, \u0438\u0437 \u00ab\u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445\u00bb \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b R18-R27, R30, R31, \u043d\u0435 \u0434\u0443\u043c\u0430\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043d\u0443\u0436\u043d\u044b \u0435\u0449\u0435 \u043a\u043e\u043c\u0443-\u0442\u043e, \u0430 \u0432\u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b R2-17, R28, R29 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u2013 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0412\u043e\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0442\u0438\u0445\u0430\u0440\u044f \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"1c\">push R15 push R16 push R17<\/code><\/pre>\n<p>\u0418 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c:<\/p>\n<pre><code>pop R17 pop R16 pop R15<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0432 \u0441\u0442\u0435\u043a, \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u0438\u0445 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043a \u0431\u044b\u043b\u043e.<\/p>\n<p>push\/pop \u2013 \u044d\u0442\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c.<\/p>\n<p>\u0418\u0442\u0430\u043a&#8230;<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b\u0442\u044c \u00ab\u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0430\u00bb \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 <s>\u043f\u043e\u0448\u043b\u0430 \u043f\u043e \u043f\u0438\u0437<\/s> \u0441\u043b\u043e\u043c\u0430\u043b\u0430\u0441\u044c, \u0442\u043e, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u041e\u0421 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u2013 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u2013 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u043b\u0438, \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0421\u0438.<\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432 \u0441\u0442\u0435\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0423\u0442\u043e\u0447\u043d\u0435\u043d\u044c\u0438\u0446\u0435&#8230;<\/p>\n<p>\u0414\u043b\u044f AVR \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u00abSREG\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435, \u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e.<\/p>\n<p><strong>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/strong><\/p>\n<p>\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u0439\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { SaveRegsIntoStack(); SelectNextTask(); RestoreRegsFromStack(); return; }<\/code><\/pre>\n<p><strong>SaveRegsIntoStack<\/strong> \u2013 \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0432 \u0441\u0442\u0435\u043a.<\/p>\n<p><strong>RestoreRegsFromStack<\/strong> \u2013 \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">void ChangeContext(void) { push R0 push R1 \u2026 R2 \u2026 R30 \u2026 push R31 push SREG   currentTask = GetNextTask();  pop SREG pop R31 \u2026 R30 \u2026 R2 \u2026 pop R1 pop R0  return; }<\/code><\/pre>\n<p><strong>\u0421\u0442\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438<\/strong><\/p>\n<p>\u0421\u0442\u0435\u043a \u2013 \u044d\u0442\u043e \u0442\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\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-414835","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/414835","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=414835"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/414835\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=414835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=414835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=414835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}