{"id":3721,"date":"2021-11-22T12:51:25","date_gmt":"2021-11-22T10:51:25","guid":{"rendered":"https:\/\/www.dclabs.lt\/dainiaus\/?p=3721"},"modified":"2022-05-16T07:36:07","modified_gmt":"2022-05-16T05:36:07","slug":"ht12e-enkoderio-emuliatorius","status":"publish","type":"post","link":"https:\/\/www.dclabs.lt\/dainiaus\/ht12e-enkoderio-emuliatorius\/","title":{"rendered":"HT12E enkoderio emuliatorius"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">T\u0119siame eksperimentus su HT12E, dabar bandysime sumesti jo emuliatori\u0173. Kad jau reikia greitai, paprastai ir suprantamai net lameriams &#8211; jamam Arduino Uno. Beje, pasigirsiu, kai tik gausiu NUCLEO-F446RE pereisiu prie K\u016bbo ir STM32F446RE. Ka\u017ekurias savo programas gal i\u0161portinsiu i\u0161 Arduino \u012f normal\u0173 C, bet ir savaranki\u0161kai jas perra\u0161yti yra labai paprasta. O \u0161it\u0173 bandym\u0173 rezultatas jau realizuosis, grei\u010diausiai, su STMu. Ok, va\u017eiuojam. Prad\u017eiai sumaniau pabandyti koks gali b\u016bti maksimaliai greitas meandras pas Uno:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_2021111916658.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"480\" src=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_2021111916658.png\" alt=\"\" class=\"wp-image-3723\" srcset=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_2021111916658.png 800w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_2021111916658-300x180.png 300w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_2021111916658-768x461.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160tai, apie 3,4 us, tai beveik 100 kart\u0173 grei\u010diau negu mums reikia, panaudojant D2 arba PD2 kontakt\u0105. Nepaband\u017eiau dedikuoto PWM i\u0161\u0117jimo, kit\u0105 kart\u0105&#8230; O kol kas reikia pristabdyti Atmeg\u0105 panaudojant <span class=\"has-inline-color has-vivid-red-color\">delayMicroseconds(Pause)<\/span> funkcij\u0105, kur Pause yra laikas mikrosekund\u0117mis. Ra\u0161ome 328 us, nors reikt\u0173 330 us &#8211; 2 us paliekam prievado jungin\u0117jimo laikui. Oscilografas patvirtina sprendim\u0105:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119163734.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"480\" src=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119163734.png\" alt=\"\" class=\"wp-image-3727\" srcset=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119163734.png 800w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119163734-300x180.png 300w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119163734-768x461.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160tai, loginis 1 tur\u0117t\u0173 trukti 330 us, d\u0117l tikslumo pa\u0117miau 5 loginius 1 ir 5 loginius 0, trukm\u0117 3,340 ms = 3340 us, vieno bito trukm\u0117 3340\/10 = 334 us, pana\u0161iai :). Kadangi jau sureguliavom bito trukm\u0119, sumetam bitbanginimui program\u0117les:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void one () {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">digitalWrite (Data_Out, LOW);<br>delayMicroseconds(Pause);<br>digitalWrite (Data_Out, LOW);<br>delayMicroseconds(Pause);<br>digitalWrite (Data_Out, HIGH);<br>delayMicroseconds(Pause);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void zero () {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">digitalWrite (Data_Out, LOW);<br>delayMicroseconds(Pause);<br>digitalWrite (Data_Out, HIGH);<br>delayMicroseconds(Pause);<br>digitalWrite (Data_Out, HIGH);<br>delayMicroseconds(Pause);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void one () padarys vienetuk\u0105, t.y. i\u0161si\u0173s 001, o void zero () padarys nuliuk\u0105, t. y. i\u0161si\u0173s 011. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161820.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"480\" src=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161820.png\" alt=\"\" class=\"wp-image-3731\" srcset=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161820.png 800w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161820-300x180.png 300w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161820-768x461.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">De\u0161in\u0117je loginio 1 trukm\u0117, nors ir nuliai ne i\u0161 tos pus\u0117s &#8211; 990 us, idealu.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_202111199321.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"480\" data-id=\"3691\" src=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_202111199321.png\" alt=\"\" class=\"wp-image-3691\" srcset=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_202111199321.png 800w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_202111199321-300x180.png 300w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_202111199321-768x461.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161913-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"480\" data-id=\"3733\" src=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161913-1.png\" alt=\"\" class=\"wp-image-3733\" srcset=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161913-1.png 800w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161913-1-300x180.png 300w, https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/DS2_20211119161913-1-768x461.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kair\u0117je HT12D signalas, de\u0161in\u0117je sugeneruotas programi\u0161kai, visi loginiai 1. Jau galima jungti maketin\u0119 plok\u0161t\u0117 ir paduoti \u012f j\u0105 m\u016bs\u0173 signaliuk\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pajungiau, niekas nesprogo, net nekaista, netgi veikia. Tuoj padarysiu video kaip mirksi LEDukai.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2022\/05\/Arduino-UNO-to-HT12D-data-stream.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Program\u0117l\u0117 labai paprasta, vis\u0173 pirma inicializuojam LEDus, t. y. siun\u010diam vis\u0173 LED u\u017egesinimo signal\u0105 (arba u\u017edegimo, priklausomai nuo SINK ar SUORCE pasirinkimo). To reikia, nes HT12E atsimena si\u0173stus duomenis, taigi, jeigu tarkim buvo \u012fjungtas pirmas LED ir nutraukiam duomen\u0173 siuntim\u0105 &#8211; jis lieka \u0161viesti. \u0160iaip, principe, kol kas nesvarbu kokia LED b\u016bkl\u0117 buvo prie\u0161 sekant\u012f duomen\u0173 paket\u0105, bet d\u0117l tvarkos tiesiog inicializuojam ir tiek. Po inicializavimo luktelname 1 sekund\u0119 ir pradedam jungin\u0117ti po vien\u0105 LED i\u0161 eil\u0117s. 5 mm \u017ealias LED mirktelna, kad Transmission Valid (VT). Perjungus trumpiklius LED veikimas invertuojamas. Taip yra tod\u0117l, kad HT12D pagal komand\u0105 paduoda arba plius\u0105, arba minus\u0105, t. y. srov\u0119 tiekia arba priima, jei taip galima sakyti, o vienas LED prijungtas prie pliuso, o kitas prie minuso. Kadangi HT12D nemoka pakabinti i\u0161\u0117jimo ore, neduoti nei pliuso nei minuso, gaunasi, kad LED visada turi maitinim\u0105, tik jeigu \u012f LED ateina i\u0161 abiej\u0173 pusi\u0173 pliusai arba abu minusai &#8211; LED neveikia. Toliau greitaveikos bandymas. Kaip mes visi \u017einome, visokie NOP, Pause, Delay ir pana\u0161\u016bs dalykai yra blogis, kurio reikt\u0173 vengti, bet tokiai paprastai program\u0117lei arba pritaikymui bus gerai. Greitaveikai nelabai turi \u012ftakos normal\u016bs kontrolerio veiksmai (\u010dia tik vienas toks &#8211; digitalWrite, ra\u0161ymas \u012f prievadus), tai to nepatestuosim, bet u\u017etai yra nema\u017eai laukimo (delay ir delayMicroseconds), o tuos b\u016bt\u0173 galima ma\u017einti. Ai\u0161ku, jeigu taip para\u0161yti program\u0105 Asembleriu, b\u016bt\u0173 galima patiuninguoti ir ra\u0161ym\u0105 \u012f prievadus bei vis\u0105 kit\u0105 inicializacij\u0105. Bet nafik, vis tiek HD12x bus didesni stabd\u017eiai, net naudojant standartines Arduino komandas. Kaip \u017einome, kad ka\u017ekas atsitikt\u0173, reikia 4 \u017eod\u017ei\u0173, taigi, bus laikas tarp \u017eod\u017ei\u0173. Pats \u017eodis generuojamas programi\u0161kai, taigi, bus 1 ir 0 trukm\u0117. I\u0161 HT12E bandym\u0173 \u017einome, kad bito trukm\u0117 yra 330 us (programoje 328 us), o laikas tarp \u017eod\u017ei\u0173 10 ms. Bandymai parod\u0117, kad vis dar stabiliai veikia prie 90 us bito trukm\u0117s ir 2 ms pauz\u0117s tarp \u017eod\u017ei\u0173. Suma\u017einus labiau &#8211; arba veikia nestabiliai arba neveikia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/HT12D_emulator.zip\" data-type=\"URL\" data-id=\"http:\/\/www.dclabs.lt\/dainiaus\/wp-content\/uploads\/2021\/11\/HT12D_emulator.zip\">Arduino programa yra \u010dia<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u0119siame eksperimentus su HT12E, dabar bandysime sumesti jo emuliatori\u0173. Kad jau reikia greitai, paprastai ir suprantamai net lameriams &#8211; jamam Arduino Uno. Beje, pasigirsiu, kai tik gausiu NUCLEO-F446RE pereisiu prie K\u016bbo ir STM32F446RE. Ka\u017ekurias savo programas gal i\u0161portinsiu i\u0161 Arduino \u012f normal\u0173 C, bet ir savaranki\u0161kai jas perra\u0161yti yra labai paprasta. O \u0161it\u0173 bandym\u0173 rezultatas&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-3721","post","type-post","status-publish","format-standard","hentry","category-elektronika"],"_links":{"self":[{"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/posts\/3721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/comments?post=3721"}],"version-history":[{"count":24,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/posts\/3721\/revisions"}],"predecessor-version":[{"id":4339,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/posts\/3721\/revisions\/4339"}],"wp:attachment":[{"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/media?parent=3721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/categories?post=3721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dclabs.lt\/dainiaus\/wp-json\/wp\/v2\/tags?post=3721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}