{"id":226539,"date":"2014-06-18T13:01:02","date_gmt":"2014-06-18T09:01:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=226539"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=226539","title":{"rendered":"<span class=\"post_title\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 JTAG-\u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 Atmega16 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C \u0432 \u0441\u0440\u0435\u0434\u0435 IAR, \u0447\u0430\u0441\u0442\u044c 2<\/span>"},"content":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/242\/c4e\/448\/242c4e448e29e1a3ed48086e250a785a.jpg\"\/><\/p>\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0422.\u043a. <a href=\"http:\/\/habrahabr.ru\/post\/221719\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u0442\u043e, \u043a\u0430\u043a \u044f \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0410\u0426\u041f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0430 \u043d\u0430 ATmega16 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ATmega16.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b<\/h4>\n<p>  \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441 \u0410\u0426\u041f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 <a href=\"http:\/\/habrahabr.ru\/post\/112913\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a>. \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 10 \u0413\u0446, \u0447\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 100 \u043c\u0441. \u0422.\u043a. \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c 10-\u0431\u0438\u0442\u043d\u044b\u0439 \u0410\u0426\u041f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 Atmega16, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 1024, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0442 0 \u0434\u043e 1023 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041e\u043f\u043e\u0440\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0438 \u0440\u0430\u0432\u043d\u043e 5 \u0412. \u0412\u044b\u0448\u0435 \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043c\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c, \u043d\u0443 \u0438 \u043d\u0438\u0436\u0435 \u0437\u0435\u043c\u043b\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u043e\u0436\u0435. \u0417\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0410\u0426\u041f \u0440\u0430\u0432\u043d\u043e\u043c 5 \u0412 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1023, \u0430 \u043f\u0440\u0438 0 \u0412 (\u0437\u0435\u043c\u043b\u044f) \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0. \u041f\u0440\u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0438, \u0441\u043a\u0430\u0436\u0435\u043c 3,5 \u0412, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e\u0435 (3,5\/5) = 716. \u041f\u043e\u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u044c, \u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043c\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a <a href=\"http:\/\/www.analog.com\/static\/imported-files\/data_sheets\/TMP35_36_37.pdf\">TMP36<\/a>. \u042d\u0442\u043e \u043d\u0438\u0437\u043a\u043e\u0432\u043e\u043b\u044c\u0442\u043d\u044b\u0439, \u043f\u0440\u0435\u0446\u0438\u0437\u0438\u043e\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b, \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435 \u0432 \u0448\u043a\u0430\u043b\u0435 \u0426\u0435\u043b\u044c\u0441\u0438\u044f. \u0414\u0430\u043d\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 10-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0410\u0426\u041f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ATmega16.<\/p>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/h4>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0442\u0440\u0435\u0445\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0438\u0441\u0435\u043b \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 000 \u0434\u043e 999. \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab0\u00bb. \u0422.\u0435. \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443 (\u043f\u043e\u0440\u0442\u044b A, B, D). \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u043e\u0440\u0442\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b. <\/p>\n<pre><code>\/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt;  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UCHAR unsigned char #define UINT unsigned int \/\/\u0427\u0438\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0438\u043a\u0430 \/\/0 #define SEG_0    ~(0x3f)  \/\/1 #define SEG_1    ~(0x06)  \/\/2 #define SEG_2    ~(0x5b) \/\/3 #define SEG_3    ~(0x4F)  \/\/4 #define SEG_4    ~(0x66)  \/\/5 #define SEG_5    ~(0x6d)  \/\/6 #define SEG_6    ~(0x7d) \/\/7 #define SEG_7    ~(0x07) \/\/8 #define SEG_8    ~(0x7F)  \/\/9 #define SEG_9    ~(0x6F) \/\/A #define SEG_A    ~(0x77) \/\/b #define SEG_b    ~(0x7c) \/\/C #define SEG_C    ~(0x39) \/\/d #define SEG_d    ~(0x5e) \/\/E #define SEG_E    ~(0x79) \/\/F #define SEG_F    ~(0x71)  \/\/\u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430 \u0447\u0438\u0441\u043b\u0430 #define SEG_MASK (0x7F) \/\/\u041f\u043e\u0440\u0442\u044b \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u0442\u043d\u043e\u0433\u043e \/\/\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \/\/\u041f\u043e\u0440\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_1DEC_PORT  PORTD \/\/\u041f\u043e\u0440\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_2DEC_PORT  PORTB \/\/\u041f\u043e\u0440\u0442 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_3DEC_PORT  PORTA \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_1DEC_DDR   DDRD \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_2DEC_DDR   DDRB \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_3DEC_DDR   DDRA  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/ \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u043d\u0443\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_INIT()   ( SEG_3DEC_DDR |= SEG_MASK );\\                            ( SEG_2DEC_DDR |= SEG_MASK );\\                            ( SEG_1DEC_DDR |= SEG_MASK );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_CLEAR()  ( SEG_3DEC_PORT &=~ SEG_MASK );\\                            ( SEG_2DEC_PORT &=~ SEG_MASK );\\                            ( SEG_1DEC_PORT &=~ SEG_MASK );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043e\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_OUT(x,y,z)  ( SEG_3DEC_PORT |= ( x & SEG_MASK ) );\\                               ( SEG_2DEC_PORT |= ( y & SEG_MASK ) );\\                               ( SEG_1DEC_PORT |= ( z & SEG_MASK ) );                                     \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u0427\u0438\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0438\u043a\u0430 const unsigned char numbers[16] =  {      SEG_0, \/\/0      SEG_1, \/\/1      SEG_2, \/\/2      SEG_3, \/\/3      SEG_4, \/\/4      SEG_5, \/\/5      SEG_6, \/\/6      SEG_7, \/\/7      SEG_8, \/\/8      SEG_9, \/\/9      SEG_A, \/\/A      SEG_b, \/\/b      SEG_C, \/\/C      SEG_d, \/\/d      SEG_E, \/\/E      SEG_F  \/\/F       };   \/\/\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f UINT i = 0;  \/* ** Name: Seg_Write() ** Description: \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043d\u0430 \u0442\u0440\u0435\u0445\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439  **              \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 ** Parameters: UINT dec3number 0 - 999  ** Returns: none *\/ void Seg_Write(UINT dec3number) {         \/\/\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0445 \u0434\u0435\u043a\u0430\u0434    UCHAR dec3 = 0 , dec2 = 0 , dec1 = 0;        \/\/\u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c 4 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u043a\u0430\u0434\u044b    \/\/\u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435    dec3number = dec3number % 1000;    \/\/\u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0434\u0435\u043a\u0430\u0434\u044b    dec3 = dec3number \/ 100;    \/\/\u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0442\u044c\u044e \u0434\u0435\u043a\u0430\u0434\u0443    dec3number = dec3number % 100;    \/\/\u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b    dec2 = dec3number \/ 10;    \/\/\u0412\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b    dec1 = dec3number % 10;        \/\/\u041e\u0447\u0438\u0449\u0430\u0435\u043c \u0431\u0438\u0442\u044b \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0430    \/\/\u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432    SEG_PORTS_CLEAR();        \/\/\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0447\u0438\u0441\u043b\u0430 3-\u0445 \u0434\u0435\u043a\u0430\u0434    \/\/\u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c    \/\/\u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432     SEG_PORTS_OUT(                   numbers[dec3], \/\/\u0422\u0440\u0435\u0442\u044c\u044f \u0434\u0435\u043a\u0430\u0434\u0430                   numbers[dec2], \/\/\u0412\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430                   numbers[dec1]  \/\/\u041f\u0435\u0440\u0432\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430                 );          }\/\/end func    \/* ** Name: main() ** Description: \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b ** Parameters: none ** Returns: none *\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430   SEG_PORTS_INIT();        \/\/\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u043e\u0441\u044c\u043c\u0435\u0440\u043a\u0438   Seg_Write(888);      \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u0442\u0440\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b   DELAY_MS(3000);          \/\/\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430   i=0;      \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e         Seg_Write(i);              \/\/\u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e       i++;              \/\/\u0412\u044b\u0448\u043b\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430?       \/\/\u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430       if (i == 1000) i=0;               \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 100 \u043c\u0441       DELAY_MS(100);    }\/\/end for          }  <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0447\u0438\u0441\u0435\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f hex-\u043a\u043e\u0434\u044b \u0432\u0438\u0434\u0430 ~(0x3f), \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 0-9. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430 SEG_X, \u0433\u0434\u0435 X \u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u0430\u044f \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e \u0446\u0438\u0444\u0440\u0430. \u0414\u0430\u043d\u043d\u044b\u0435 hex-\u043a\u043e\u0434\u044b \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 numbers[16] \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u0446\u0438\u0444\u0440\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043f\u043e\u0440\u0442 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 numbers[3] \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0446\u0438\u0444\u0440\u044b 3. <\/p>\n<p>  \u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f SEG_PORTS_INIT() \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043f\u043e\u0440\u0442\u043e\u0432 A, B, D \u043d\u0430 \u0432\u044b\u0445\u043e\u0434. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0440\u0442\u043e\u0432 \u043a\u0440\u043e\u043c\u0435 \u0432\u043e\u0441\u044c\u043c\u043e\u0433\u043e. \u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f SEG_PORTS_CLEAR() \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044f \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0432 \u00ab0\u00bb. \u042d\u0442\u0430 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 SEG_PORTS_OUT(x,y,z), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043e \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u043e\u0440\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u044a\u044e\u043d\u043a\u0446\u0438\u044e \u0441 \u043c\u0430\u0441\u043a\u043e\u0439 \u0438 \u0434\u0438\u0437\u044a\u044e\u043d\u043a\u0446\u0438\u044e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u043f\u043e\u0440\u0447\u0438 \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430. <\/p>\n<p>  \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f void Seg_Write(UINT dec3number), \u0433\u0434\u0435 dec3number \u2014 \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0435 \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0434\u0435\u043a\u0430\u0434 \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0446\u0435\u043b\u043e\u0435 \/ \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f %. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u043d\u0434\u0435\u043a\u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 numbers[decX], \u0433\u0434\u0435 decX \u2014 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0434\u0435\u043a\u0430\u0434, \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441 SEG_PORTS_OUT(x,y,z) \u0432 \u043f\u043e\u0440\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0447\u0438\u0441\u043b\u0435.<\/p>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 i, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0437\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 999. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 if. \u0412\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 i \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c 100 \u043c\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0430\u044f \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 DELAY_MS(100).<\/p>\n<p>  \u041f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 i, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043a\u0430\u043a\u0438\u0435 hex-\u043a\u043e\u0434\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Seg_Write(). <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f6c\/568\/96f\/f6c56896ffcf348a68cfae4d66306d28.png\"\/><\/p>\n<p>  <iframe loading=\"lazy\" src=\"\/\/player.vimeo.com\/video\/98518621\" width=\"500\" height=\"281\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen><\/iframe><\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"\/\/www.youtube.com\/embed\/UUhKqKqwa0U?wmode=opaque\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>  \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0410\u0426\u041f. \u0410\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0437\u0430\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0435\u0433\u043e \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b, \u0432\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0441\u0435\u0434\u044c\u043c\u043e\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u0443 \u043f\u043e\u0440\u0442\u0430 A.<\/p>\n<pre><code> \/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt;  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UINT unsigned int \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/ \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u043d\u0443\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f UINT  ADC_Result = 0;  \/*\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b*\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438    \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 D \u043d\u0430 \u0432\u044b\u0445\u043e\u0434   DDRD_DDD7 = 1;   \/\/\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 D \u0432 \u043b\u043e\u0433 &quot;0&quot;    PORTD_PORTD7 = 0;       \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 A \u043d\u0430 \u0432\u0445\u043e\u0434   DDRA_DDA7 = 0;      \/\/\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0410\u0426\u041f   PORTA_PORTA7 = 0;      ADMUX_MUX0 = 1;  \/\/\u0421\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b   ADMUX_MUX1 = 1;   ADMUX_MUX2 = 1;         ADCSRA_ADEN = 1;    \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f         ADCSRA_ADPS0 = 1;   \/\/\u0414\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 \u041c\u0413\u0446 \/ 128 = 125\u043a\u0413\u0446   ADCSRA_ADPS1 = 1;   \/\/\u0418\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 50-200\u043a\u0413\u0446   ADCSRA_ADPS2 = 1;   \/\/\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 13 \u0446\u0438\u043a\u043b\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 125\u043a\u0413\u0446 13 \/ 125000 = 104 \u043c\u043a\u0441         \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430      _NOP();        \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 7-\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0440\u0442\u0430 D \u0438\u0437 &quot;0&quot; \u0432 &quot;1&quot; \u0438 \u0438\u0437 &quot;1&quot; \u0432 &quot;0&quot;       \/\/\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0438\u043b\u0438            PORTD_PORTD7 ^= 1;              \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADCSRA_ADSC = 1;               \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432?       \/\/\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 (104 \u043c\u043a\u0441)       while (ADCSRA_ADIF == 0);        \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();        \/\/\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADC_Result = ADC;       \/\/\u043b\u0438\u0431\u043e       \/\/ADC_Result = ADCL;         \/\/\u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430       \/\/ADC_Result += (ADCH &lt;&lt; 8); \/\/\u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430              \/\/\u041e\u0447\u0438\u0449\u0430\u0435\u043c \u0444\u043b\u0430\u0433       ADCSRA_ADIF=1;              \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 100 \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 (1\/0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 = 10 \u0413\u0446 - \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438)       DELAY_MS(100);    }\/\/end for    }\/\/end main  <\/code><\/pre>\n<p>  \u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main() \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0434\u044c\u043c\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0440\u0442\u0430 D \u043d\u0430 \u0432\u0445\u043e\u0434. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0438\u0442 DDD7 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f DDRD \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u00ab0\u00bb. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0431\u0440\u043e\u0441\u0430 \u0432 \u00ab0\u00bb \u0431\u0438\u0442\u0430 PORTA7 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 PORTA. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u00ab1\u00bb \u0432 \u0431\u0438\u0442\u044b MUXx \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 ADMUX \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u0410\u0426\u041f.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/030\/c19\/cf4\/030c19cf457487f6805a6e5ff3b24fb4.png\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0442\u0430 ADEN \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 ADCSRA.<\/p>\n<p>  \u0411\u0438\u0442\u044b ADPSx \u043f\u043e\u0440\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 ADCSRA \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u00ab1\u00bb, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0410\u0426\u041f \u0432 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u0447\u0430\u0441\u0442\u043e\u0442 50-200\u043a\u0413\u0446 (\u043a\u0430\u043a \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e \u0432 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0435). \u0411\u0438\u0442\u044b ADPSx \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f 128. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 16 \u041c\u0413\u0446 \u0431\u0443\u0434\u0435\u0442 16 \u041c\u0413\u0446\/128 = 128 \u043a\u0413\u0446.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/10b\/75f\/174\/10b75f174cfd73505328b7e008c18dc3.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043e\u043f\u0440\u043e\u0441 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u043b\u0430\u0433\u043e\u0432. \u0414\u043b\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0442\u0430 ADSC \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 AD\u0421SRA. \u0413\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0444\u043b\u0430\u0433\u0430 ADIF \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435. \u041f\u0440\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0410\u0426\u041f \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u0438\u0442\u0441\u044f 104 \u043c\u043a\u0441. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0444\u043b\u0430\u0433\u0430 ADIF \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e 0 \u2014 1023, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u043d \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 ADCL \u0438 ADCH. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ADC_Result. \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043b\u0430\u0433 ADIF \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u00ab1\u00bb. \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 \u0440\u0430\u0432\u0435\u043d 100 \u043c\u0441, \u0447\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 10 \u0413\u0446.<\/p>\n<p>  \u041f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0410\u0426\u041f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0432\u0430\u043d\u0442\u0430\u0445, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d97\/f03\/a0c\/d97f03a0caec37540e6f6aadff353fd6.png\"\/><\/p>\n<p>  <iframe loading=\"lazy\" src=\"\/\/player.vimeo.com\/video\/98519480\" width=\"500\" height=\"281\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen><\/iframe><\/p>\n<p>  \u0422\u0440\u0435\u0442\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043e\u043f\u0440\u043e\u0441 \u0410\u0426\u041f, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code> \/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt;  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UINT unsigned int  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \/\/\u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c #define LED_DDR  DDRD #define LED_PORT PORTD #define LED_PIN  DDD7  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0410\u0426\u041f #define ADC_IN_DDR       DDRA #define ADC_IN_PORT      PORTA #define ADC_IN_DDR_PIN   DDA7 #define ADC_IN_PORT_PIN  PORTA7  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC0    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC1    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC2    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC3    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC4    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC5    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC6    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC7    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0)  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0410\u0426\u041f #define ADC_F_CPU_DIV_2      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_4      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_8      (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_16     (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_32     (1&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_64     (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_128    (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0)   \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/ \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_INIT()   ( LED_DDR |= (1&lt;&lt;LED_PIN) ); \/\/\u041f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_LOW()    ( LED_PORT &=~ (1&lt;&lt;LED_PIN) ); \/\/\u0417\u0430\u0436\u0435\u0447\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_HIGH()   ( LED_PORT |= (1&lt;&lt;LED_PIN) ); \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_TOG()    ( LED_PORT ^= (1&lt;&lt;LED_PIN) );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f #define ADC_IN_INIT()   ( ADC_IN_DDR  &= ~(0&lt;&lt;ADC_IN_DDR_PIN) );\\                         ( ADC_IN_PORT |= (0&lt;&lt;ADC_IN_PORT_PIN) );   \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC_SET_CHAN(x)    ( ADMUX |= x ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_ON()           ( ADCSRA |= (1&lt;&lt;ADEN) ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_OFF()          ( ADCSRA &=~ (1&lt;&lt;ADEN) ); \/\/\u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0434\u043b\u044f \u0410\u0426\u041f #define ADC_SET_CLK_DIV(x) ( ADCSRA |= x ); \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f #define ADC_START_CONV()   ( ADCSRA |= (1&lt;&lt;ADSC) ); \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f #define ADC_RES_READY()    ( ADCSRA & (1&lt;&lt;ADIF) ) \/\/\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u0430\u0433\u0430 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f #define ADC_FLAG_CLEAR()   ( ADCSRA |= (1&lt;&lt;ADIF) );  \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f UINT  ADC_Result = 0;  \/*\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b*\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430   LED_INIT();       \/\/\u0413\u0430\u0441\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434   LED_LOW();      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f   \/\/\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f   ADC_IN_INIT();           \/\/\u0412\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b   ADC_SET_CHAN(ADC7);          ADC_ON();    \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f                                               \/\/\u0414\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 \u041c\u0413\u0446 \/ 128 = 125\u043a\u0413\u0446   ADC_SET_CLK_DIV(ADC_F_CPU_DIV_128);   \/\/\u0418\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 50-200\u043a\u0413\u0446                                         \/\/\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 13 \u0446\u0438\u043a\u043b\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 125\u043a\u0413\u0446 13 \/ 125000 = 104 \u043c\u043a\u0441     \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();         \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430       LED_TOG();              \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADC_START_CONV();              \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432?       \/\/\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 (104 \u043c\u043a\u0441)       while(!ADC_RES_READY());        \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();        \/\/\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADC_Result = ADC;       \/\/\u043b\u0438\u0431\u043e       \/\/ADC_Result = ADCL;         \/\/\u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430       \/\/ADC_Result += (ADCH &lt;&lt; 8); \/\/\u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430              \/\/\u041e\u0447\u0438\u0449\u0430\u0435\u043c \u0444\u043b\u0430\u0433       ADC_FLAG_CLEAR();              \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 100 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 (1\/0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 = 10 \u0413\u0446 - \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438)       DELAY_MS(100);    }\/\/end for    }\/\/end main   <\/code><\/pre>\n<p>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0441\u0435\u0434\u044c\u043c\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0410\u0426\u041f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 ADC_IN_INIT(). \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f ADC_IN_DDR, ADC_IN_PORT, ADC_IN_DDR_PIN, ADC_IN_PORT_PIN \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043b\u0435\u0433\u043a\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u0430\u043d\u0430\u043b\u0430 \u0410\u0426\u041f. <\/p>\n<p>  \u0412\u044b\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u0438\u0442\u043e\u0432 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 ADMUX, \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 ADC_SET_CHAN(ADCx), \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 ADCx \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u043d\u0430\u043b\u0430, \u0433\u0434\u0435 x \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 7-\u043c\u0438. \u041a\u0430\u0436\u0434\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 ADCx \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0431\u0438\u0442\u043e\u0432 MUXx, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u00ab0\u00bb \u0438 \u00ab1\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u043a\u0430\u043d\u0430\u043b\u0430 x.<\/p>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ADC_ON(). \u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 ADC_SET_CLK_DIV(ADC_F_CPU_DIV_x), \u0433\u0434\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u044f\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 ADC_F_CPU_DIV_x, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c x \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 2,4,8,16,32,64,128 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044e \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. <\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ADC_START_CONV(). \u0413\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 ADC_RES_READY(). \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 ADC_FLAG_CLEAR().<\/p>\n<p>  \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u043f\u0440\u043e\u0441 \u0410\u0426\u041f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u043b\u0430\u0433\u043e\u0432.<\/p>\n<pre><code> \/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt;  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UINT unsigned int \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/ \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u043d\u0443\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f UINT  ADC_Result = 0;  \/*\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b*\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438    \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 D \u043d\u0430 \u0432\u044b\u0445\u043e\u0434   DDRD_DDD7 = 1;   \/\/\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 D \u0432 \u043b\u043e\u0433 &quot;0&quot;    PORTD_PORTD7 = 0;       \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c 7-\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0440\u0442\u0430 A \u043d\u0430 \u0432\u0445\u043e\u0434   DDRA_DDA7 = 0;      \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u044f\u0436\u043a\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0410\u0426\u041f   PORTA_PORTA7 = 1;      ADMUX_MUX0 = 1;  \/\/\u0421\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b   ADMUX_MUX1 = 1;   ADMUX_MUX2 = 1;         ADCSRA_ADEN = 1;    \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f         ADCSRA_ADPS0 = 1;   \/\/\u0414\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 \u041c\u0413\u0446 \/ 128 = 125\u043a\u0413\u0446   ADCSRA_ADPS1 = 1;   \/\/\u0418\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 50-200\u043a\u0413\u0446   ADCSRA_ADPS2 = 1;   \/\/\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 13 \u0446\u0438\u043a\u043b\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 125\u043a\u0413\u0446 13 \/ 125000 = 104 \u043c\u043a\u0441                 ADCSRA_ADIE = 1;  \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0410\u0426\u041f     \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f     _SEI();        \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430      _NOP();        \/\/\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 7-\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0440\u0442\u0430 D \u0438\u0437 &quot;0&quot; \u0432 &quot;1&quot; \u0438 \u0438\u0437 &quot;1&quot; \u0432 &quot;0&quot;       \/\/\u041f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0438\u043b\u0438            PORTD_PORTD7 ^= 1;              \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADCSRA_ADSC = 1;               \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 100 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 (1\/0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 = 10 \u0413\u0446 - \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438)       DELAY_MS(100);    }\/\/end for    }\/\/end main    \/*\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f*\/ #pragma vector=ADC_vect __interrupt void ISR_ADC(void) {   \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430   _NOP();       \/\/\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f   ADC_Result = ADC;   \/\/\u043b\u0438\u0431\u043e   \/\/ADC_Result = ADCL;         \/\/\u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430   \/\/ADC_Result += (ADCH &lt;&lt; 8); \/\/\u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430     }\/\/end func  <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0438\u0442 ADIE \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f ADCSRA. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 _SEI().<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a5f\/0b0\/ded\/a5f0b0dedf86bda7df77001a69d82d7c.png\"\/><\/p>\n<p>  \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0441\u0443\u043f\u0435\u0440\u0446\u0438\u043a\u043b\u043e\u043c, \u0433\u0434\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0432\u0430\u0437\u0438\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c 100 \u043c\u0441. \u0427\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u044b\u0439 104 \u043c\u043a\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 ISR_ADC(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044e. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 ADCL \u0438 ADCH \u0432 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>  \u041f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0410\u0426\u041f. <\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f65\/101\/09c\/f6510109c9cdfa3dcb96a8c6d8650140.png\"\/><\/p>\n<p>  <iframe loading=\"lazy\" src=\"\/\/player.vimeo.com\/video\/98519761\" width=\"500\" height=\"281\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen><\/iframe><\/p>\n<p>  \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0438\u043c\u0431\u0438\u043e\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u042d\u0442\u043e \u043e\u043f\u0440\u043e\u0441 \u0410\u0426\u041f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code> \/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt;  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UINT unsigned int  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \/\/\u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c #define LED_DDR  DDRD #define LED_PORT PORTD #define LED_PIN  DDD7  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0410\u0426\u041f #define ADC_IN_DDR       DDRA #define ADC_IN_PORT      PORTA #define ADC_IN_DDR_PIN   DDA7 #define ADC_IN_PORT_PIN  PORTA7  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC0    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC1    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC2    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC3    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC4    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC5    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC6    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC7    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0)  \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0410\u0426\u041f #define ADC_F_CPU_DIV_2      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_4      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_8      (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_16     (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_32     (1&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_64     (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_128    (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0)   \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/ \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_INIT()   ( LED_DDR |= (1&lt;&lt;LED_PIN) ); \/\/\u041f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_LOW()    ( LED_PORT &=~ (1&lt;&lt;LED_PIN) ); \/\/\u0417\u0430\u0436\u0435\u0447\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_HIGH()   ( LED_PORT |= (1&lt;&lt;LED_PIN) ); \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_TOG()    ( LED_PORT ^= (1&lt;&lt;LED_PIN) );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f #define ADC_IN_INIT()   ( ADC_IN_DDR  &= ~(0&lt;&lt;ADC_IN_DDR_PIN) );\\                         ( ADC_IN_PORT |= (0&lt;&lt;ADC_IN_PORT_PIN) );   \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC_SET_CHAN(x)     ( ADMUX |= x ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_ON()            ( ADCSRA |= (1&lt;&lt;ADEN) ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_OFF()           ( ADCSRA &=~ (1&lt;&lt;ADEN) ); \/\/\u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0434\u043b\u044f \u0410\u0426\u041f #define ADC_SET_CLK_DIV(x)  ( ADCSRA |= x ); \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f #define ADC_START_CONV()    ( ADCSRA |= (1&lt;&lt;ADSC) ); \/\/\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0410\u0426\u041f #define ADC_INT_ON()        ( ADCSRA |= (1&lt;&lt;ADIE) );   \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f UINT  ADC_Result = 0;  \/*\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b*\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430   LED_INIT();       \/\/\u0413\u0430\u0441\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434   LED_LOW();      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f   \/\/\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f   ADC_IN_INIT();           \/\/\u0412\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b   ADC_SET_CHAN(ADC7);          ADC_ON();    \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f                                               \/\/\u0414\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 \u041c\u0413\u0446 \/ 128 = 125\u043a\u0413\u0446   ADC_SET_CLK_DIV(ADC_F_CPU_DIV_128);   \/\/\u0418\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 50-200\u043a\u0413\u0446                                         \/\/\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 13 \u0446\u0438\u043a\u043b\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 125\u043a\u0413\u0446 13 \/ 125000 = 104 \u043c\u043a\u0441    ADC_INT_ON();  \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0410\u0426\u041f     \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f     _SEI();                         \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();         \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430       LED_TOG();              \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADC_START_CONV();              \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 100 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434 (1\/0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 = 10 \u0413\u0446 - \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438)       DELAY_MS(100);    }\/\/end for    }\/\/end main  \/*\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f*\/ #pragma vector=ADC_vect __interrupt void ISR_ADC(void) {   \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430   _NOP();       \/\/\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f   ADC_Result = ADC;   \/\/\u043b\u0438\u0431\u043e   \/\/ADC_Result = ADCL;         \/\/\u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430   \/\/ADC_Result += (ADCH &lt;&lt; 8); \/\/\u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430     }\/\/end func  <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f ADC_INT_ON().<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0446\u0435\u043b\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<pre><code>\/*\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438*\/ #include &lt;ioavr.h&gt; #include &lt;intrinsics.h&gt; #include &lt;ina90.h&gt; #include &lt;stdbool.h&gt;   \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f*\/ \/\/\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f #define F_CPU 16000000 \/\/\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b #define UCHAR unsigned char #define UINT  unsigned int #define FLOAT_TYPE float \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \/\/\u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c #define LED_DDR  DDRD #define LED_PORT PORTD #define LED_PIN  DDD7 \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 #define F_CPU_DIV_1    (0&lt;&lt;CS02)|(0&lt;&lt;CS01)|(1&lt;&lt;CS00) #define F_CPU_DIV_8    (0&lt;&lt;CS02)|(1&lt;&lt;CS01)|(0&lt;&lt;CS00) #define F_CPU_DIV_64   (0&lt;&lt;CS02)|(1&lt;&lt;CS01)|(1&lt;&lt;CS00) #define F_CPU_DIV_256  (1&lt;&lt;CS02)|(0&lt;&lt;CS01)|(0&lt;&lt;CS00) #define F_CPU_DIV_1024 (1&lt;&lt;CS02)|(0&lt;&lt;CS01)|(1&lt;&lt;CS00) \/\/\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 #define TCNT0_VALUE 99 \/\/\u041f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0442\u0438\u043a\u043e\u0432 #define T0_TICK_CNT_LIMIT 10 \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0410\u0426\u041f #define ADC_IN_DDR       DDRA #define ADC_IN_PORT      PORTA #define ADC_IN_DDR_PIN   DDA7 #define ADC_IN_PORT_PIN  PORTA7 \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC0    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC1    (0&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC2    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC3    (0&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC4    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC5    (1&lt;&lt;MUX2)|(0&lt;&lt;MUX1)|(1&lt;&lt;MUX0) #define ADC6    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(0&lt;&lt;MUX0) #define ADC7    (1&lt;&lt;MUX2)|(1&lt;&lt;MUX1)|(1&lt;&lt;MUX0) \/\/\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0410\u0426\u041f #define ADC_F_CPU_DIV_2      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_4      (0&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_8      (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_16     (0&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_32     (1&lt;&lt;ADPS2)|(0&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_64     (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(0&lt;&lt;ADPS0) #define ADC_F_CPU_DIV_128    (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) \/\/\u0427\u0438\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0438\u043a\u0430 \/\/0 #define SEG_0    ~(0x3f)  \/\/1 #define SEG_1    ~(0x06)  \/\/2 #define SEG_2    ~(0x5b) \/\/3 #define SEG_3    ~(0x4F)  \/\/4 #define SEG_4    ~(0x66)  \/\/5 #define SEG_5    ~(0x6d)  \/\/6 #define SEG_6    ~(0x7d) \/\/7 #define SEG_7    ~(0x07) \/\/8 #define SEG_8    ~(0x7F)  \/\/9 #define SEG_9    ~(0x6F) \/\/A #define SEG_A    ~(0x77) \/\/b #define SEG_b    ~(0x7c) \/\/C #define SEG_C    ~(0x39) \/\/d #define SEG_d    ~(0x5e) \/\/E #define SEG_E    ~(0x79) \/\/F #define SEG_F    ~(0x71)  \/\/\u0413\u0440\u0430\u0434\u0443\u0441 #define SEG_GRAD ~(0x63)   \/\/\u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u043a\u0430 \u0447\u0438\u0441\u043b\u0430 #define SEG_MASK (0x7F) \/\/\u041f\u043e\u0440\u0442\u044b \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u0442\u043d\u043e\u0433\u043e \/\/\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \/\/\u041f\u043e\u0440\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_1DEC_PORT  PORTD \/\/\u041f\u043e\u0440\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_2DEC_PORT  PORTB \/\/\u041f\u043e\u0440\u0442 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_3DEC_PORT  PORTA \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_1DEC_DDR   DDRD \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_2DEC_DDR   DDRB \/\/\u041f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0434\u0435\u043a\u0430\u0434\u044b #define SEG_3DEC_DDR   DDRA  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0439*\/  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_INIT()   ( LED_DDR |= (1&lt;&lt;LED_PIN) ); \/\/\u041f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_LOW()    ( LED_PORT &=~ (1&lt;&lt;LED_PIN) ); \/\/\u0417\u0430\u0436\u0435\u0447\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 #define LED_HIGH()   ( LED_PORT |= (1&lt;&lt;LED_PIN) ); \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 #define LED_TOG()    ( LED_PORT ^= (1&lt;&lt;LED_PIN) );  \/\/\u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f #define TIMER0_SET_CLK_DIV(x) ( TCCR0 |= x ); \/\/\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 #define TIMER0_SET_CNT(x)     ( TCNT0 = x ); \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 #define TIMER0_OVF_INT_ON()   ( TIMSK|=(1&lt;&lt;TOIE0) );   \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f #define ADC_IN_INIT()   ( ADC_IN_DDR  &= ~(0&lt;&lt;ADC_IN_DDR_PIN) );\\                         ( ADC_IN_PORT &= ~(0&lt;&lt;ADC_IN_PORT_PIN) );   \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 #define ADC_SET_CHAN(x)     ( ADMUX |= x ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_ON()            ( ADCSRA |= (1&lt;&lt;ADEN) ); \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0410\u0426\u041f #define ADC_OFF()           ( ADCSRA &=~ (1&lt;&lt;ADEN) ); \/\/\u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0434\u043b\u044f \u0410\u0426\u041f #define ADC_SET_CLK_DIV(x)  ( ADCSRA |= x ); \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f #define ADC_START_CONV()    ( ADCSRA |= (1&lt;&lt;ADSC) ); \/\/\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0410\u0426\u041f #define ADC_INT_ON()        ( ADCSRA |= (1&lt;&lt;ADIE) );   \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_INIT()   ( SEG_3DEC_DDR |= SEG_MASK );\\                            ( SEG_2DEC_DDR |= SEG_MASK );\\                            ( SEG_1DEC_DDR |= SEG_MASK );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0447\u0438\u0442\u043a\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_CLEAR()  ( SEG_3DEC_PORT &=~ SEG_MASK );\\                            ( SEG_2DEC_PORT &=~ SEG_MASK );\\                            ( SEG_1DEC_PORT &=~ SEG_MASK );  \/\/\u041c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043e\u0440\u0442\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 #define SEG_PORTS_OUT(x,y,z)  ( SEG_3DEC_PORT |= ( x & SEG_MASK ) );\\                               ( SEG_2DEC_PORT |= ( y & SEG_MASK ) );\\                               ( SEG_1DEC_PORT |= ( z & SEG_MASK ) );                                 \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_US(us) \t__delay_cycles((F_CPU \/ 1000000) * (us)); \/\/\u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 #define DELAY_MS(ms) \t__delay_cycles((F_CPU \/ 1000) * (ms));  \/*\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445*\/ \/\/\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0442\u0438\u043a\u043e\u0432 \u0434\u043b\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430 T0 UINT  T0_tick_cnt=0; \/\/\u0427\u0438\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0438\u043a\u0430 const unsigned char numbers[16] =  {      SEG_0, \/\/0      SEG_1, \/\/1      SEG_2, \/\/2      SEG_3, \/\/3      SEG_4, \/\/4      SEG_5, \/\/5      SEG_6, \/\/6      SEG_7, \/\/7      SEG_8, \/\/8      SEG_9, \/\/9      SEG_A, \/\/A      SEG_b, \/\/b      SEG_C, \/\/C      SEG_d, \/\/d      SEG_E, \/\/E      SEG_F  \/\/F       };   \/\/\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b FLOAT_TYPE T = 0;  \/\/\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f UINT  ADC_Result = 0;  \/\/\u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043b-\u0432\u043e \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 UINT  ADC_res_cnt = 0;  \/\/\u0421\u0443\u043c\u043c\u0430 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 UINT  Sum = 0;  \/\/\u0424\u043b\u0430\u0433 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f bool       ADCReadyFlag = false;    \/* ** Name: Seg_Write() ** Description: \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u043d\u0430 \u0442\u0440\u0435\u0445\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439  **              \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 ** Parameters: UINT T - \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0440\u0443\u0440\u0430 0 - 99 C ** Returns: none *\/ void Seg_Write(UINT T) {    \/\/\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0445 \u0434\u0435\u043a\u0430\u0434    UINT dec2 = 0 , dec1 = 0;        \/\/\u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0440\u0435\u0442\u044c\u044e \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u043a\u0430\u0434\u044b    T = T % 100;    \/\/\u0412\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b    dec2 = T \/ 10;    \/\/\u041f\u0435\u0440\u0432\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b    dec1 = T % 10;             \/\/\u041e\u0447\u0438\u0449\u0430\u0435\u043c \u0431\u0438\u0442\u044b \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0430    \/\/\u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432    SEG_PORTS_CLEAR();        \/\/\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0447\u0438\u0441\u043b\u0430 3-\u0445 \u0434\u0435\u043a\u0430\u0434    \/\/\u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c    \/\/\u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432     SEG_PORTS_OUT(                   numbers[dec2], \/\/\u0412\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430                   numbers[dec1], \/\/\u041f\u0435\u0440\u0432\u0430\u044f \u0434\u0435\u043a\u0430\u0434\u0430                   SEG_GRAD       \/\/\u0413\u0440\u0430\u0434\u0443\u0441                 );          }\/\/end func  \/* ** Name: main() ** Description: \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b ** Parameters: none ** Returns: none *\/ \/\/\u041f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 void main( void ) {   \/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430   SEG_PORTS_INIT();      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430   LED_INIT();    \/\/\u0413\u0430\u0441\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434   LED_LOW();      \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 (\u0440\u0435\u0436\u0438\u043c Normal)   TIMER0_SET_CLK_DIV(F_CPU_DIV_1024);\/\/  \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 000 000 \u0413\u0446                                     \/\/  16 000 000 \u0413\u0446 \/ 1024 = 15\u00a0625 \u0413\u0446                                     \/\/  1 \/ 15\u00a0625 \u0413\u0446 = 0,000064 \u0441 =64 \u043c\u043a\u0441   TIMER0_SET_CNT(TCNT0_VALUE); \/\/ 156 * 0,000064 c = 0,009984 c (10 \u043c\u0441)                                 \/\/ \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 255-156 = 99   TIMER0_OVF_INT_ON(); \/\/ \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e   \/\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f   \/\/\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u0430 \u0410\u0426\u041f   ADC_IN_INIT();      \/\/\u0412\u044b\u0431\u0440\u0430\u043b\u0438 \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b   ADC_SET_CHAN(ADC7);       ADC_ON();    \/\/\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f                                           \/\/\u0414\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f 16 \u041c\u0413\u0446 \/ 128 = 125\u043a\u0413\u0446   ADC_SET_CLK_DIV(ADC_F_CPU_DIV_128);   \/\/\u0418\u0437 \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 50-200\u043a\u0413\u0446                                         \/\/\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 13 \u0446\u0438\u043a\u043b\u043e\u0432 \u0447\u0430\u0441\u0442\u043e\u0442\u044b 125\u043a\u0413\u0446 13 \/ 125000 = 104 \u043c\u043a\u0441   ADC_INT_ON();  \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0410\u0426\u041f         \/\/\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430   T=0;   \/\/\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u044b   Sum = 0;      \/\/\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f   _SEI();      \/\/\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b   for(;;)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();             \/\/\u0415\u0441\u043b\u0438 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043e       \/\/\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442       if(ADCReadyFlag)       {           \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430           _NOP();               \/\/\u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433           ADCReadyFlag = false;           \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430           LED_TOG();            \/\/\u0421\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442           \/\/\u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f           Sum += ADC_Result;           \/\/\u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a           \/\/\u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439           ADC_res_cnt++;           \/\/\u041f\u0440\u043e\u0448\u043b\u043e \u0432\u043e\u0441\u0435\u043c\u044c \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439?           if ( ADC_res_cnt == 8 )           {               \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430               _NOP();                \/\/\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a               ADC_res_cnt = 0;               \/\/\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442               ADC_Result = Sum \/ 8;               \/\/\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0443\u043c\u043c\u0443               Sum = 0;               \/\/\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043a\u0432\u0430\u043d\u0442\u044b \u0432 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443               T = ADC_Result*(5.0\/1023); \/\/ \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u043e\u043b\u044c\u0442\u044b               T = ((T-0.75)*100)+25; \/\/ \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u044b               \/\/\u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443               Seg_Write((UINT)T);           }\/\/end if        }\/\/end if   }\/\/end for      }\/\/end main   \/*\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0439\u043c\u0435\u0440\u0430 T0 \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e*\/ #pragma vector=TIMER0_OVF_vect __interrupt void ISR_TickTimer(void) {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430   _NOP();      \/\/\u041d\u0430\u0440\u0430\u0441\u0442\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0442\u0438\u043a\u043e\u0432 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 T0   T0_tick_cnt++;      \/\/\u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0447\u0438\u0442\u0430\u043b\u0438 100 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434   if (T0_tick_cnt &gt;= T0_TICK_CNT_LIMIT)   {       \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430       _NOP();          \/\/\u041e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0442\u0438\u043a\u043e\u0432 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 T0       T0_tick_cnt=0;              \/\/\u041c\u0438\u0433\u0430\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430       \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f       ADC_START_CONV();   }\/\/end for      \/\/\u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435   \/\/\u0432 \u0441\u0447\u0435\u0442\u043d\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435   TIMER0_SET_CNT(TCNT0_VALUE);  }\/\/end func   \/*\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f*\/ #pragma vector=ADC_vect __interrupt void ISR_ADC(void) {   \/\/\u041f\u0443\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430   _NOP();       \/\/\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f   ADC_Result = ADC;   \/\/\u043b\u0438\u0431\u043e   \/\/ADC_Result = ADCL;         \/\/\u041c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430   \/\/ADC_Result += (ADCH &lt;&lt; 8); \/\/\u0421\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0430\u0439\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430    \/\/\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0433 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f   ADCReadyFlag = true;    }\/\/end func   <\/code><\/pre>\n<p>  \u0412 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0438 \u0410\u0426\u041f.<\/p>\n<p>  \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u0430 \u0432 \u043a\u0432\u0430\u0437\u0438\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0438 \u0434\u0432\u0443\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0442\u0438\u043a\u043e\u0432\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0438 \u0410\u0426\u041f. \u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043a\u043e\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 100 \u043c\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0430\u043a\u0440\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 ADC_START_CONV(). \u0427\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u044b\u0439 104 \u043c\u043a\u0441 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u0442\u0435\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 ISR_ADC() \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ADC_Result \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u043b\u0430\u0433 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 ADCReadyFlag \u0442\u0438\u043f\u0430 bool (\u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 stdbool.h \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 #include).<\/p>\n<p>  \u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c if. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0444\u043b\u0430\u0433 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f ADC_Result \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e Sum, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0410\u0426-\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439. \u041a\u043e\u0433\u0434\u0430 \u0432\u043e\u0441\u0435\u043c\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0441\u0443\u043c\u043c\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 Sum \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0448\u0443\u043c \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0431\u0438\u0442\u043e\u0432 \u0438\u0437-\u0437\u0430 \u0448\u0443\u043c\u043d\u043e\u0433\u043e \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043f\u043e USB \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0441\u0445\u0435\u043c\u0430\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ADC_Result, \u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Sum \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442\u0441\u044f. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043a\u0432\u0430\u043d\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u043e\u043b\u044c\u0442\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0422.\u043a. \u043e\u043f\u043e\u0440\u043d\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 5 \u0412, \u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0432\u0430\u043d\u0442\u0430\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0435\u043c\u0443 \u0440\u0430\u0432\u043d\u043e 1023, \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432 \u0432\u043e\u043b\u044c\u0442\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u0432\u0430\u043d\u0442\u0430\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 1023 \u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 5. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0432 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0442\u0438\u043f\u0435. \u0414\u0430\u043b\u0435\u0435, \u0438\u043c\u0435\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439<a href=\"http:\/\/www.analog.com\/static\/imported-files\/data_sheets\/TMP35_36_37.pdf\"> \u0434\u0430\u0442\u0430\u0448\u0438\u0442 \u043d\u0430 TMP36<\/a> \u0438 \u0437\u043d\u0430\u044f, \u0447\u0442\u043e \u043f\u0440\u0438 25 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 750 \u043c\u0412 \u0438, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u0440\u0430\u0434\u0443\u0441 \u0432\u0432\u0435\u0440\u0445 \u0438\u043b\u0438 \u0432\u043d\u0438\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 10 \u043c\u0412, \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0432\u043e\u043b\u044c\u0442\u0430\u0445 \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f T = ((T-0.75)*100)+25. \u0414\u0430\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 void Seg_Write(UINT T), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0434\u0432\u0443\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u0433\u0440\u0430\u0434\u0443\u0441\u0430. \u041b\u043e\u0433\u0438\u043a\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043a\u0430\u0434 \u0447\u0438\u0441\u043b\u0430, \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e, \u0442\u0430\u043a\u0430\u044f \u0436\u0435.<\/p>\n<p>  \u041f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a4f\/138\/ade\/a4f138ade3db85cb5fa73c574f4a96ce.jpg\"\/><\/p>\n<p>  <iframe loading=\"lazy\" src=\"\/\/player.vimeo.com\/video\/98520007\" width=\"500\" height=\"281\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen><\/iframe><\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"\/\/www.youtube.com\/embed\/xGXv1Hlv7-8?wmode=opaque\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u0442\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435.    \t\t\t\t<\/p>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u0414\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"226539\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"11377\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv57231\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"57231\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv57231\">\u0414\u0430<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv57233\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"57233\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv57233\">\u041d\u0435\u0442<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"https:\/\/habrahabr.ru\/auth\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<p class=\"total\">\u041d\u0438\u043a\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.<\/p>\n<\/p><\/form>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/226539\/\"> http:\/\/habrahabr.ru\/post\/226539\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">     \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/242\/c4e\/448\/242c4e448e29e1a3ed48086e250a785a.jpg\"\/><\/p>\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0422.\u043a. <a href=\"http:\/\/habrahabr.ru\/post\/221719\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u0442\u043e, \u043a\u0430\u043a \u044f \u0438 \u043e\u0431\u0435\u0449\u0430\u043b, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u043c\u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0410\u0426\u041f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0430 \u043d\u0430 ATmega16 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ATmega16.  <\/p>\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-226539","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/226539","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=226539"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/226539\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=226539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=226539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=226539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}