V enem od prejšnjih člankov smo se že na kratko dotaknili uporabe premičnega registra, zlasti 74HC595. Poglejmo si podrobneje zmogljivosti in postopek za delo s tem mikrovezjem.
Potrebno
- - Arduino;
- - prestavni register 74HC595;
- - priključne žice.
Navodila
Korak 1
Shift register 74HC595 in podobni se uporabljajo kot naprave za pretvorbo zaporednih podatkov v vzporedne in se lahko uporabljajo tudi kot "zapah" za podatke, ki imajo preneseno stanje.
Pinout (pinout) je prikazan na sliki na levi. Njihov namen je naslednji.
Q0… Q7 - vzporedni izhodi podatkov;
GND - tla (0 V);
Q7 '- serijski izhod podatkov;
^ MR - ponastavitev glavne enote (aktivno nizko);
SHcp - vnos ure za pomik registra;
STcp - impulzni vhod ure "zapah";
^ OE - izhodno omogočeno (aktivno nizko);
Ds - serijski vnos podatkov;
Vcc - napajanje +5 V.
Strukturno je mikrovezje narejeno v več vrstah primerov; Uporabil bom tisto, prikazano na sliki na desni - izhod -, ker lažje je uporabljati s ploščo.
2. korak
Naj se na kratko spomnim na serijski vmesnik SPI, ki ga bomo uporabili za prenos podatkov v register premikov.
SPI je dvosmerni dvosmerni serijski vmesnik, v katerem sodelujeta glavni in podrejeni. V našem primeru bo poveljnik Arduino, podrejeni bo registriran 74HC595.
Razvojno okolje za Arduino ima vgrajeno knjižnico za delo na vmesniku SPI. Pri njegovi uporabi se uporabijo zaključki, ki so označeni na sliki:
SCLK - izhod ura SPI;
MOSI - podatki od glavnega do suženjskega;
MISO - podatki od podrejenega do glavnega;
SS - izbira sužnja.
3. korak
Sestavimo vezje kot na sliki.
Na vse nožice mikrovezja pomičnega registra bom priklopil tudi logični analizator. S pomočjo njega bomo videli, kaj se dogaja na fizični ravni, kateri signali kam gredo in ugotovili, kaj pomenijo. Videti mora približno tako, kot je fotografija.
4. korak
Napišimo takšno skico in jo naložimo v spomin Arduino.
Spremenljivka PIN_SPI_SS je notranja standardna konstanta, ki ustreza zatiču "10" Arduina, če se uporablja kot glavni vmesnik SPI, ki ga uporabljamo tukaj. Načeloma bi lahko prav tako dobro uporabili kateri koli drugi digitalni pin na Arduinu; potem bi ga morali prijaviti in nastaviti način delovanja.
Če napajamo ta zatič LOW, aktiviramo svoj prestavni register za oddajo / sprejem. Po prenosu spet dvignemo napetost na VISOKO in izmenjava se konča.
5. korak
Pretvorimo naše vezje v delo in poglejmo, kaj nam kaže logični analizator. Splošni prikaz časovnega diagrama je prikazan na sliki.
Modra črtkana črta prikazuje 4 SPI črte, rdeča črtkana črta 8 kanalov vzporednih podatkov prestavnega registra.
Točka A na časovni lestvici je trenutek, ko se številka "210" prenese v premični register, B je trenutek, ko je zapisana številka "0", C je cikel, ki se ponavlja od začetka.
Kot lahko vidite, od A do B - 10,03 milisekunde in od B do C - 90,12 milisekunde, skoraj tako, kot smo zahtevali na skici. Majhen dodatek v 0, 03 in 0, 12 ms je čas za prenos serijskih podatkov iz Arduina, zato tukaj nimamo natančno 10 in 90 ms.
6. korak
Oglejmo si podrobneje razdelek A.
Na samem vrhu je dolg impulz, s katerim Arduino sproži prenos na liniji SPI-ENABLE - izbira podrejenega. Takrat se začnejo generirati taktni impulzi SPI-CLOCK (druga vrstica od zgoraj), 8 kosov (za prenos 1 bajta).
Naslednja vrstica z vrha je SPI-MOSI - podatki, ki jih prenesemo iz Arduina v register premikov. To je naša številka "210" v binarni obliki - "11010010".
Po zaključku prenosa na koncu impulza SPI-ENABLE vidimo, da je prestavni register določil enako vrednost na svojih 8 krakih. To sem poudaril z modro pikčasto črto in označil vrednosti za jasnost.
7. korak
Zdaj pa se osredotočimo na razdelek B.
Vse se spet začne z izbiro pomožnega in generiranjem 8 urnih impulzov.
Podatki na liniji SPI-MOSI so zdaj "0". To pomeni, da v tem trenutku v register vpišemo številko "0".
Dokler prenos ni končan, register shrani vrednost "11010010". Izhaja na vzporedne nožice Q0.. Q7 in izstopa, ko so v liniji urni impulzi od vzporednega izhoda Q7 'na črto SPI-MISO, kar vidimo tukaj.
8. korak
Tako smo podrobno preučili vprašanje izmenjave informacij med glavno napravo, ki je bila Arduino, in registrskim pomikom 74HC595. Naučili smo se, kako povezati šifrant, zapisovati vanj podatke in brati podatke iz njega.