{"id":196514,"date":"2013-10-06T15:40:02","date_gmt":"2013-10-06T11:40:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=196514"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=196514","title":{"rendered":"<span class=\"post_title\">\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u0440\u0443\u0433\u043e\u0432 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f RC-\u0430\u0432\u0442\u043e\u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0427\u0430\u0441\u0442\u044c 2 \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b AMB20 \u0438 AMBRc<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0412 <a href=\"http:\/\/habrahabr.ru\/post\/195804\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430\u0445, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u043a \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0443 \u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u043e\u043c\u0435\u0440\u0435 \u0438 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440.<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/661\/5f7\/2cd\/6615f72cde4fa9f434a47a39eabf13df.jpg\"\/><a name=\"habracut\"><\/a>\u0427\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u044f \u043f\u043e\u0434\u0447\u0435\u0440\u043f\u043d\u0443\u043b <a href=\"http:\/\/www.flipsideracing.org\/projects\/fslapcounter\/browser\/trunk\/Classes\/SerialLapCounters.rbbas?rev=1248\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438 \u043d\u0430 <a href=\"http:\/\/www.rctech.net\/forum\/radio-electronics\/688671-lap-timing-decoder-5.html\">rctech.net<\/a><\/p>\n<h4>\u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0441\u0445\u0435\u043c\u0443<\/h4>\n<p>\u0410 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0435\u0435 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0435 \u0431\u0435\u0437 \u043f\u0430\u0439\u043a\u0438:<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/ff3\/f18\/f70\/ff3f18f704d2a68e51d8f432c3f0a950.jpg\"\/>\u0427\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e:1. atmega16 (\u0432 \u043c\u043e\u0435\u043c \u0434\u0435\u0432\u0430\u0439\u0441\u0435 \u0441\u0442\u043e\u0438\u0442 atmega32, \u043d\u043e \u0441\u0443\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f)2. \u041a\u0432\u0430\u0440\u0446 \u0434\u043b\u044f USART 7.3728\u041c\u0433\u0446. (\u0412 \u043c\u043e\u0435\u043c \u0434\u0435\u0432\u0430\u0439\u0441\u0435 \u2014 16.59\u041c\u0433\u0446)3. \u041a\u0432\u0430\u0440\u0446 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043d\u0430 32\u043a\u0433\u0446.4. USB-Rs232 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a5. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u043a\u043d\u043e\u043f\u043e\u0447\u043a\u0430 \u0438 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440.\u0427\u0442\u043e \u0431\u044b \u043d\u0435 \u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u043e\u0439 \u041c\u041a \u2014 \u0437\u0430\u043b\u044c\u0435\u043c \u0435\u043c\u0443 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440. \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0435\u0441\u0442\u044c \u043d\u0430 <a href=\"http:\/\/easyelectronics.ru\/avr-uchebnyj-kurs-ispolzovanie-bootloadera.html\">easyelectronics.ru<\/a>. \u0412\u043e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043c \u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0438 \u043a\u043d\u043e\u043f\u043e\u0447\u043a\u0430 \u043d\u0443\u0436\u043d\u0430 \u0438 \u0434\u043b\u044f \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0430 \u0438 \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.\u0412 \u043d\u0430\u0448\u0435\u043c \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u0440\u0443\u0433\u0430, \u0430 \u043a\u0430\u043a \u0435\u0449\u0435 \u0442\u043e\u0447\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c? \u0414\u0430 \u043d\u0438 \u043a\u0430\u043a, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u044b\u043b \u043f\u0440\u043e\u0439\u0434\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0442\u043b\u044e.\u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0432 \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0431\u0443\u0442\u043b\u043e\u0430\u0434\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d. \u0410 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0440\u0433\u0430\u0442\u044c, \u0433\u043e\u0432\u043e\u0440\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441 \u0447\u0430\u0441\u0430\u043c\u0438 \u0432\u0441\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435.\u041a\u043d\u043e\u043f\u043e\u0447\u043a\u043e\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u0437\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0434 \u043f\u0435\u0442\u043b\u0435\u0439.USB-Rs232 \u044f \u0432\u0437\u044f\u043b \u0432\u0441\u0435\u043c\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 FT232RL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0431\u0432\u044f\u0437\u043a\u0438. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 USB-RS232 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a.\u0421\u0445\u0435\u043c\u0430 \u0432 \u043f\u0440\u043e\u0442\u0435\u0443\u0441\u0435 \u0447\u0442\u043e \u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u0435\u0442 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b:<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/601\/1e0\/441\/6011e04419ee2328a35af5001346e5f0.png\"\/><\/p>\n<h4>AMB20<\/h4>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438: \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0435 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<h5>\u041f\u043e\u0434\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h5>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0441 32\u043a\u0433\u0446 \u043a\u0432\u0430\u0440\u0446\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. <\/p>\n<pre><code class=\"cs\">interrupt [TIM2_OVF] void timer2_ovf_isr(void) { char i; if (++GlobalS==60)     {     if (++GlobalM==60)          {         GlobalH++;         GlobalM=0;         }     GlobalS=0;     }         LED=!LED; } <\/code><\/pre>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e \u0442\u0443\u0442 \u0432\u0441\u0435 \u044f\u0441\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<h5>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h5>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0421\u041e\u041c \u043f\u043e\u0440\u0442 \u0438 \u0441\u0430\u0436\u0430\u0435\u0442 RTS \u043d\u0430 \u0437\u0435\u043c\u043b\u044e. \u0412\u044b\u0445\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u043e\u0432\u0435\u0441\u0438\u043c \u043d\u0430 INT0 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041f\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044e \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 @00000001 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435:<\/p>\n<pre><code class=\"cs\">delay_ms(100); printf(&quot;@00000001\\r\\n&quot;); GlobalH=0; GlobalM=0; GlobalS=0; GlobalMs=0; <\/code><\/pre>\n<h5>\u041f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0442\u043b\u0438<\/h5>\n<p>\u0427\u0442\u043e \u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0442\u043b\u044e \u043f\u0440\u043e\u0448\u043b\u0430 \u043c\u0435\u0442\u043a\u0430, \u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0438\u0434\u0430:@AABBCCDDEE\u0433\u0434\u0435AA \u2014 \u043d\u043e\u043c\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u043e\u0442 1 \u0434\u043e 99BB \u2014 \u0447\u0430\u0441\u044bCC \u2014 \u043c\u0438\u043d\u0443\u0442\u044bDD \u2014 \u0441\u0435\u043a\u0443\u043d\u0434\u044bEE \u2014 \u0441\u043e\u0442\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b<\/p>\n<pre><code class=\"cs\">Trans=1; MS=GlobalMs_Timer\/2.56; H=GlobalH; M=GlobalM; S=GlobalS; printf(&quot;@%02u%02u%02u%02u%02u\\r\\n&quot;,Trans,H,M,S,MS); <\/code><\/pre>\n<p>\u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443:@0102030405\u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 01 \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0435\u0442\u043b\u044e \u043d\u0430 2 \u0447\u0430\u0441 3 \u043c\u0438\u043d\u0443\u0442\u044b 4 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 50\u043c\u0441<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/14a\/645\/3b1\/14a6453b1d0fe4449c7ce4fc50ec38d8.png\"\/>\u0412\u0441\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cs\">\/***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator \u00a9 Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http:\/\/www.hpinfotech.com  Project :  Version :  Date    : 01.04.2013 Author  :  Company :  Comments:    Chip type               : ATmega16 Program type            : Application AVR Core Clock frequency: 7,372800 MHz Memory model            : Small External RAM size       : 0 Data Stack size         : 256 *****************************************************\/  #include &lt;mega16.h&gt;   #ifndef RXB8 #define RXB8 1 #endif  #ifndef TXB8 #define TXB8 0 #endif  #ifndef UPE #define UPE 2 #endif  #ifndef DOR #define DOR 3 #endif  #ifndef FE #define FE 4 #endif  #ifndef UDRE #define UDRE 5 #endif  #ifndef RXC #define RXC 7 #endif  #define FRAMING_ERROR (1&lt;&lt;FE) #define PARITY_ERROR (1&lt;&lt;UPE) #define DATA_OVERRUN (1&lt;&lt;DOR) #define DATA_REGISTER_EMPTY (1&lt;&lt;UDRE) #define RX_COMPLETE (1&lt;&lt;RXC)  \/\/ USART Receiver buffer #define RX_BUFFER_SIZE 32 char rx_buffer[RX_BUFFER_SIZE];  #if RX_BUFFER_SIZE &lt;= 256 unsigned char rx_wr_index,rx_rd_index,rx_counter; #else unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif  \/\/ This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow;  \/\/ USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)    {    rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256    \/\/ special case for receiver buffer size=256    if (++rx_counter == 0)       { #else    if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;    if (++rx_counter == RX_BUFFER_SIZE)       {       rx_counter=0; #endif       rx_buffer_overflow=1;       }    } }  #ifndef _DEBUG_TERMINAL_IO_ \/\/ Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data; while (rx_counter==0); data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256 if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif #asm(&quot;cli&quot;) --rx_counter; #asm(&quot;sei&quot;) return data; } #pragma used- #endif  \/\/ USART Transmitter buffer #define TX_BUFFER_SIZE 256 char tx_buffer[TX_BUFFER_SIZE];  #if TX_BUFFER_SIZE &lt;= 256 unsigned char tx_wr_index,tx_rd_index,tx_counter; #else unsigned int tx_wr_index,tx_rd_index,tx_counter; #endif  \/\/ USART Transmitter interrupt service routine interrupt [USART_TXC] void usart_tx_isr(void) { if (tx_counter)    {    --tx_counter;    UDR=tx_buffer[tx_rd_index++];    } }  #ifndef _DEBUG_TERMINAL_IO_ \/\/ Write a character to the USART Transmitter buffer #define _ALTERNATE_PUTCHAR_ #pragma used+ void putchar(char c) { if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))    {    tx_buffer[tx_wr_index++]=c;    ++tx_counter;    } else    UDR=c; } #pragma used- #endif  \/\/ Standard Input\/Output functions #include &lt;stdio.h&gt; #include &lt;delay.h&gt;  char GlobalH,GlobalM,GlobalS,GlobalMs; float TempFloat; #define GlobalMs_Timer TCNT2 #define LED PORTD.7  unsigned int Trans;  \/\/ External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { delay_ms(100); printf(&quot;@00000001\\r\\n&quot;); GlobalH=0; GlobalM=0; GlobalS=0; GlobalMs=0; }   interrupt [EXT_INT1] void ext_int1_isr(void) { char H,M,S,MS,Trans; Trans=1; MS=GlobalMs_Timer\/2.56; H=GlobalH; M=GlobalM; S=GlobalS; printf(&quot;@%02u%02u%02u%02u%02u\\r\\n&quot;,Trans,H,M,S,MS); }   interrupt [EXT_INT2] void ext_int2_isr(void) {  }  interrupt [TIM0_OVF] void timer0_ovf_isr(void) {  }  interrupt [TIM2_OVF] void timer2_ovf_isr(void) { char i; if (++GlobalS==60)     {     if (++GlobalM==60)          {         GlobalH++;         GlobalM=0;         }     GlobalS=0;     }         LED=!LED; }  void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0b1001100; DDRD=0x80;  TCCR0=0x05; TCNT0=0x00; OCR0=0x00;  ASSR=0x08; TCCR2=0x05; TCNT2=0x00; OCR2=0x00;  GICR|=0xE0; MCUCR=0x0A; MCUCSR=0x00; GIFR=0xE0;  TIMSK=0x41;  \/\/ USART initialization \/\/ Communication Parameters: 8 Data, 1 Stop, No Parity \/\/ USART Receiver: On \/\/ USART Transmitter: On \/\/ USART Mode: Asynchronous \/\/ USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0xD8; UCSRC=0x86; UBRRH=0x00; UBRRL=0x2F;  #asm(&quot;sei&quot;)  while (1)       {                                                      } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b \u2014 \u043d\u043e\u043c\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 99. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<h4>AMBRC<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0442 \u041c\u041a. \u0414\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u044f\u0441\u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443. \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0442\u0440\u0438 \u0447\u0430\u0441\u0442\u0438: \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430, \u043f\u0440\u043e\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043a\u0443 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430.<\/p>\n<h5>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h5>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0448\u043b\u0435\u0442 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 &quot;?;0;0;0;&quot; \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u043e\u0440\u0435\u0442\u043a\u0438 (clcf) \u0431\u0430\u0439\u0442\u044b \u2014 (0x0D,0x0A). \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0432 \u0434\u0435\u043a\u043e\u0434\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0448\u043b\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0438\u043c\u0435\u0435\u043c \u0431\u0430\u0439\u0442\u0438\u043a 0x0A \u0438 \u0441\u0442\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u0444\u043b\u0430\u0433\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435).<\/p>\n<pre><code class=\"cs\">interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)    {    rx_buffer[rx_wr_index++]=data;       if (data==0x0A) {TimeToInit=1;}   \/\/\u0417\u0434\u0435\u0441\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0431\u0430\u0439\u0442\u044b \u0438 \u0441\u0442\u0430\u0432\u0438\u043c \u0444\u043b\u0430\u0433 #if RX_BUFFER_SIZE == 256    \/\/ special case for receiver buffer size=256    if (++rx_counter == 0)       { #else    if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;    if (++rx_counter == RX_BUFFER_SIZE)       {       rx_counter=0; #endif       rx_buffer_overflow=1;       }    } } <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043c\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0441\u044f:<\/p>\n<pre><code class=\"cs\">      if (TimeToInit)         {         putchar(1);            printf(&quot;$\\t%i\\t7\\t0\\t1\\t1\\t&quot;,decoderid);         putchar(0xF8);         putchar(0xF9);         printf(&quot;\\r\\n&quot;);         GlobalS=0;         GlobalMs_Timer=0;             sequence_number=0;              TimeToInit=0;         }   <\/code><\/pre>\n<p>\u041f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b, \u043d\u0430\u0448\u0435\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439. \u0417\u0430\u043f\u0438\u0441\u044c \u0432 \u0421\u041e\u041c \u043f\u043e\u0440\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u0438\u0434\u0430:<\/p>\n<blockquote><p>01 24 09 31 30 30 09 37 09 30 09 31 09 31 09 F8 F9 0D 0A<\/p><\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u043e\u043c\u0435\u0440 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 100. \u0417\u0430\u043f\u0438\u0441\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0431\u0430\u0439\u0442\u0430 (0x01). \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0435\u0442 \u0437\u043d\u0430\u043a $. \u041c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0434\u0435\u0442 \u0437\u043d\u0430\u043a Tab (0x09). \u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043e\u043c \u043a\u0430\u0440\u0435\u0442\u043a\u0438 (0x0D 0x0A). \u041d\u0443 \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 sequence_number. sequence_number \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u043a\u0438, \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0441\u044b\u043b\u043a\u043e\u0439 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<h5>\u0421\u0442\u0430\u0442\u0443\u0441 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430<\/h5>\n<p>\u041a\u0430\u0436\u0434\u044b\u0435 4 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043b\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441. \u041f\u043e\u0441\u044b\u043b\u043a\u0430 \u0432\u0438\u0434\u0430: <\/p>\n<blockquote><p># 100 980 0 x06BA<\/p><\/blockquote>\n<p>\u0411\u0430\u0439\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u0435:<\/p>\n<blockquote><p>01 23 09 31 30 30 09 31 30 32 38 09 30 09 78 39 42 39 46 0D 0A<\/p><\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e \u043d\u043e\u043c\u0435\u0440 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430, sequence_number, \u043a\u0430\u043a\u043e\u0439 \u0442\u043e \u043d\u043e\u043b\u044c (\u043d\u0435 \u0437\u043d\u0430\u044e \u0437\u0430\u0447\u0435\u043c \u043e\u043d) \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 putchar:<\/p>\n<pre><code class=\"cs\">void putchar(char c) { while (tx_counter == TX_BUFFER_SIZE); #asm(&quot;cli&quot;) crcwork = (crcTable[(crcwork &gt;&gt; 8) & 0xff] ^ (crcwork &lt;&lt; 8) ^ c); \/\/\u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))    {    tx_buffer[tx_wr_index++]=c;    ++tx_counter;    } else    UDR=c;     #asm(&quot;sei&quot;) } <\/code><\/pre>\n<p>\u0442\u0430\u0431\u043b\u0438\u0446\u0430 crcTable \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043e\u043d\u0430 \u0437\u0434\u0435\u0441\u044c:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">flash unsigned int crcTable[256]={0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920};<\/div>\n<\/div>\n<p>\u0421\u0430\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">      if (TimeToSendAmbStatus)         {         sequence_number++;                                    putchar(1);                                       crcwork=0xFFFF;          printf(&quot;#\\t%i\\t%i\\t0\\t&quot;,decoderid,sequence_number);           printf(&quot;x%02X%02X\\r\\n&quot;,((crcwork&gt;&gt;8)&0xff),(crcwork&0xff));                                                                                      TimeToSendAmbStatus=0;         }    <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0432\u0438\u0434\u043d\u043e \u043a\u0430\u043a \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f sequece_number. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0448\u043b\u0435\u0442\u0441\u044f 0x01, \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f crcwork = 0xFFFF. \u0428\u043b\u0435\u043c \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u044b\u043b\u043a\u0438. \u0412 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0448\u043b\u0435\u043c \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u0430\u0440\u0435\u0442\u043a\u0438. \u0418 \u0442\u0430\u043a \u043a\u0430\u0436\u0434\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b:<\/p>\n<pre><code class=\"cs\">interrupt [TIM2_OVF] void timer2_ovf_isr(void) { static char times;  if (++times==4)      {            TimeToSendAmbStatus=1;       times=0;     } GlobalS++;      LED=!LED; } <\/code><\/pre>\n<h5>\u041e\u0442\u0441\u044b\u043b\u043a\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h5>\n<p>\u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f USART \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0443 \u043c\u0435\u043d\u044f \u043a\u0430\u043a \u0442\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 300\u043c\u0441) \u0438 \u0432\u043e\u0442 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445, \u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c\u0443 \u0446\u0438\u043a\u043b\u0443. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"cs\">#define TranspondersCountMax 20 unsigned long int Transponders[TranspondersCountMax]; unsigned long int TranspondersTimeS[TranspondersCountMax]; unsigned int TranspondersTimeMS[TranspondersCountMax]; char TransponderNeedToSend, TranspondersCountInt, TranspondersCountMain; <\/code><\/pre>\n<p>\u0411\u0443\u0444\u0435\u0440 \u0443 \u043d\u0430\u0441 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u0441\u0442\u0430\u0442\u0438.\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0431\u0443\u0444\u0435\u0440:<\/p>\n<pre><code class=\"cs\">interrupt [EXT_INT1] void ext_int1_isr(void) { unsigned long int S; unsigned int MS; MS=GlobalMs_Timer*3.90625; S=GlobalS; if (TransponderNeedToSend&lt;TranspondersCountMax)      {     TransponderNeedToSend++;         Transponders[TranspondersCountInt]=1234567;     TranspondersTimeS[TranspondersCountInt]=S;     TranspondersTimeMS[TranspondersCountInt]=MS;                                            if (++TranspondersCountInt==TranspondersCountMax) TranspondersCountInt=0;     } } <\/code><\/pre>\n<p>\u0410 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435:<\/p>\n<pre><code class=\"cs\">if (TransponderNeedToSend)          {                                                sequence_number++;                         putchar(1);         crcwork=0xFFFF;                    printf(&quot;@\\t%i\\t%i\\t%07lu\\t%u.%03u\\t130\\t119\\t2\\t&quot;,         decoderid,         sequence_number,         Transponders[TranspondersCountMain],         TranspondersTimeS[TranspondersCountMain],         TranspondersTimeMS[TranspondersCountMain]);         \/\/putchar('@');                      \/\/putchar(9);         \/\/printf(&quot;%i&quot;,decoderid);         \/\/putchar(9);         \/\/printf(&quot;%i&quot;,sequence_number);         \/\/putchar(9);                  \/\/printf(&quot;%07lu&quot;,Trans);         \/\/putchar(9);         \/\/printf(&quot;%u.%03u&quot;,S,MS);         \/\/putchar(9);         \/\/printf(&quot;130&quot;);         \/\/putchar(9);         \/\/printf(&quot;119&quot;);         \/\/putchar(9);         \/\/printf(&quot;2&quot;);         \/\/putchar(9);                  printf(&quot;x%02X%02X\\r\\n&quot;,((crcwork&gt;&gt;8)&0xff),(crcwork&0xff));                                                if (++TranspondersCountMain==TranspondersCountMax) TranspondersCountMain=0;          TransponderNeedToSend--;         } <\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0432\u0435\u0434\u044c \u0432 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 &quot;@\\t%i\\t%i\\t%07lu\\t%u.%03u\\t130\\t119\\t2\\t&quot; \u0447\u0435\u0440\u0442 \u043d\u043e\u0433\u0443 \u0441\u043b\u043e\u043c\u0438\u0442. \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043f\u043e\u0434\u0441\u0447\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b\u0439 \u2014 \u0432\u0441\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0447\u0442\u043e \u0438 \u0432 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430.<\/p>\n<blockquote><p>@ 100 10 1234567 37.589 130 119 2 xEB94<\/p><\/blockquote>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u0441\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<h4>\u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043a\u0440\u0443\u0433\u043e\u0432<\/h4>\n<p>\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441 \u0437\u0430\u0441\u0435\u0447\u043a\u0430\u043c\u0438 AMB, \u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f RCM Begginers. \u041e\u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f, \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0435\u0435 \u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/www.rc-timing.ch\/en\/downloads\/freeware.html\">\u0442\u0443\u0442<\/a>. \u0412 \u0420\u043e\u0441\u0441\u0438\u0438 RCM Ultimate (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043a\u0440\u0443\u0447\u0435 \u0438 \u0434\u043e\u0440\u043e\u0433\u0430\u044f) \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0440\u0435\u0434\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0441\u0442\u043e\u0432. \u0418 AMB20 \u0438 AMBRc \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a: <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/603\/08c\/f38\/60308cf38b12160c204d5e950d8b626b.jpg\"\/>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043d\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c.<\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430 CodeVision Avr \u0438 \u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u0435\u0443\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/www.dropbox.com\/s\/m79rrtp31yk7ro3\/ambrcamb20.zip\">\u0437\u0434\u0435\u0441\u044c<\/a>\u0412\u0438\u0434\u0435\u043e \u0440\u0430\u0431\u043e\u0442\u044b:<iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"\/\/www.youtube.com\/embed\/4Oo95jz4Toc?wmode=opaque\" frameborder=\"0\" allowfullscreen><\/iframe>    \t<\/p>\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\/196514\/\"> http:\/\/habrahabr.ru\/post\/196514\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0412 <a href=\"http:\/\/habrahabr.ru\/post\/195804\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430\u0445, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u043a \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0443 \u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u043e\u043c\u0435\u0440\u0435 \u0438 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0434\u0435\u0440\u0430 \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440.<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/661\/5f7\/2cd\/6615f72cde4fa9f434a47a39eabf13df.jpg\"\/><\/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-196514","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196514","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=196514"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196514\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=196514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=196514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=196514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}