HT12E enkoderio duomenų srauto savybių tyrimas 2021.11.19 at 14:44

Rašiau apie HT12x enkoderio ir dekoderio maketinę plokštę, toliau tęsiu savybių tyrimą reikiamam tikslui pasiekti. Visų pirma HT12E, enkoderio, arba dar jį vadinsime siųstuvu, nors tai nėra visai tikslu – galutiniam prietaise siųstuvas bus RF transyveris, t.y. radijo dažnio siųstuvas su duomenų kodavimo funkcija (dėl atsparumo trukdžiams, ne dėl šifravimo paranojos), o HT mikroschema tik suformuoja signalą kurį reikia siųsti… Nu gerai, gana beletristikos, dirbam.

Pradedam nuo nulio, t. y. – siųstuvas nedaro nieko, t.y. visi adresai loginiam 0, mygtukai nepaspausti. Vienintelis įjungtas dalykas – TE (Transmission Enable), nes be jo čia būtų tik tiesi linija ties nuline įtampos padala. Beje, TE įjungtas trumpam, tik suliečiu trumpiklį ir paleidžiu.

Taigi, siųstuvas išspjauna 8 duomenų blokus, bendra trukmė ~180 ms, vieno bloko trukmė ~13 ms, pauzė turbūt 10 ms. Kodėl turbūt – paaiškės vėliau. Teorija tokia – gavęs TE signalą siųstuvas siunčia 4 žodžius (word) duomenų arba kol TE signalas yra siuntimas vyksta nenutrūkstamai:

Įprastai žodžio (word) dydis yra nusakomas maksimaliu bitų skaičiumi, kuriuos gali apdoroti procesorius vienu metu. Kompiuteriams tai 32 arba 64 bitai. Aprašymas sako, kad turi būti 4 žodžiai, t. y. 4 bitų paketai, tačiau mūsų oscilogramoje jie 8. Kodėl ? Čia reiktų žiūrėti į siuntimo grafiko dešinę dalį, kur parodyta TE ilgesniame žemame lygyje (žemas = aktyvuotas). Reikalas tame, kad nors aš ir trumpai pyptelnu trumpiklio kontaktus, visgi siuntimas yra greitesnis ir spėja pradėti antrą siuntimo ciklą. Dėl to, manyčiau, oscilogramoje matome ne 4 žodžius, o 8. Kadangi jau žinome, kad turi būti 4 žodžiai, ir jie turi būti vienodi (kartojimas duoda atsparumą trugdžiams, perdavimo patikimumą ir t.t.), galime analizuoti tik vieną žodį:

Taigi, turime 13 aukštų lygių ir, panašu, kad po du loginius 0 tarp jų. Vėliau susitikrinsime su aprašymu, o dabar lyg ir duomenų eilutė tokia:

Impulsų trukmės:
Loginis 1 ~ 330 us
Loginis 0 ~ 330 us
1 sąlyginis bitas ~ 990 us

Taigi, vienas duomenų blokas arba žodis yra toks, primenu, kai adresai 0, mygtukai nepaspausti, TE = 1:

1001001001001001001001001001001001001

Toliau žiūrim aprašymą:

Taigi, loginis 1 arba 0 sudaromi iš trijų bitų, arba trijų osciliatoriaus ciklų. 001 = loginis 1, 011 = loginis 0. Tada mūsų eilutę galima parašyti taip:

001 001 001 001 001 001 001 001 001 001 001 001 001 = 1 1 1 1 1 1 1 1 1 1 1 1 1

Tą žinoti gerai, bet rašant programą valdikliui, reikės turėti galvoje, kad siųsti turim 3 bitus, o ne 1. Raudonai pažymėjau anksčiau nepaminėtus nuliukus. Pasirinkus kurį nors adresą arba paspaudus mygtuką, atitinkamose vietose keičiasi ir reikšmės. Štai, pasirinkti A0 ir A1 adresai, visa kita neaktyvu:

Akivaizdžiai matosi, kad loginių 1 yra dviem daugiau. O kad būtų visai paprasta, pasitelkiame skaičiuoklę:

Skaičuoklę galima parsisiųsti iš čia. Tereikia surašyti bitų eilę pilkuose ir žaliuose langeliuose ir gausime jų reikšmes bei oscilogramą. Principe, tiek žinant jau galima būtų rašyti programą, bitbanginančią reikiamus duomenis vietoje HT12E, ką mes padarysime sekančiame straipsnelyje. Svarbiausia nepamiršti, kad signalai čia tokie invertuoti, nes kai jungikliai nesujungti išėjime turim loginį 1 (nes visi įėjimai pull-up’inti), tai sakant, kad išėjimas įjungtas realiai turime loginį 0.

Leave a Reply

*