U jednom od prethodnih članaka već smo se ukratko dotakli upotrebe registara smjene, posebno 74HC595. Razmotrimo detaljnije mogućnosti i postupak za rad s ovom mikrovezom.
Potrebno
- - Arduino;
- - registar smjene 74HC595;
- - spojne žice.
Instrukcije
Korak 1
Shift registar 74HC595 i slični koriste se kao uređaji za pretvaranje serijskih podataka u paralelne, a mogu se koristiti i kao "zasun" za podatke koji drže preneseno stanje.
Pinout (pinout) prikazan je na slici s lijeve strane. Njihova svrha je sljedeća.
Q0… Q7 - paralelni izlazi podataka;
GND - uzemljenje (0 V);
Q7 '- serijski izlaz podataka;
^ MR - reset master (aktivno nisko);
SHcp - ulaz sata takta u registru pomaka;
STcp - impulsni ulaz takta "zasun";
^ OE - omogućavanje izlaza (aktivno nisko);
Ds - serijski unos podataka;
Vcc - napajanje +5 V.
Strukturno, mikrovezje je napravljeno u nekoliko vrsta slučajeva; Koristit ću onaj prikazan na slici desno - izlaz - jer lakše ga je koristiti sa pločom za ploču.
Korak 2
Dopustite mi da se ukratko prisjetim serijskog sučelja SPI, koje ćemo koristiti za prijenos podataka u registar smjene.
SPI je dvosmjerno dvosmjerno serijsko sučelje u kojem glavni i pomoćni uređaj sudjeluju. Glavni u našem slučaju bit će Arduino, slave će biti registriran 74HC595.
Razvojno okruženje za Arduino ima ugrađenu biblioteku za rad na SPI interfejsu. Pri njegovoj primjeni koriste se zaključci koji su označeni na slici:
SCLK - SPI izlaz sata;
MOSI - podaci od gospodara do slave;
MISO - podaci od podređenog prema glavnom;
SS - odabir slave.
Korak 3
Sastavimo sklop kao na slici.
Također ću spojiti logički analizator na sve pinove mikrovezja registra pomicanja. Pomoću nje vidjet ćemo što se događa na fizičkom nivou, koji signali kamo idu i shvatit ćemo što oni znače. To bi trebalo izgledati poput fotografije.
Korak 4
Napišimo ovakvu skicu i učitajmo je u Arduino memoriju.
Varijabla PIN_SPI_SS je interna standardna konstanta koja odgovara pinu "10" Arduina kada se koristi kao master SPI sučelja koje ovdje koristimo. U principu bismo mogli jednako dobro koristiti bilo koji drugi digitalni pin na Arduinu; tada bismo to morali deklarirati i postaviti način rada.
Hranjenjem ovog pina LOW, aktiviramo naš registar smjene za prijenos / prijem. Nakon prijenosa ponovo podižemo napon na VISOK i razmjena završava.
Korak 5
Pretvorimo naš krug u posao i pogledajte što nam pokazuje logički analizator. Općeniti prikaz vremenskog dijagrama prikazan je na slici.
Plava isprekidana linija prikazuje 4 SPI linije, crvena isprekidana linija prikazuje 8 kanala paralelnih podataka registra smjene.
Tačka A na vremenskoj skali je trenutak kada se broj "210" prenosi u registar smjene, B je trenutak kada se upisuje broj "0", C je ciklus koji se ponavlja od početka.
Kao što vidite, od A do B - 10,03 milisekunde, a od B do C - 90,12 milisekundi, gotovo kao što smo tražili na skici. Mali dodatak za 0, 03 i 0, 12 ms je vrijeme za prijenos serijskih podataka iz Arduina, tako da ovdje nemamo tačno 10 i 90 ms.
Korak 6
Pogledajmo bliže odjeljak A.
Na samom vrhu je dugi puls kojim Arduino započinje prijenos na SPI-ENABLE liniji - odabir slave. U to vrijeme počinju se generirati impulsi sata SPI-CLOCK (druga linija od vrha), 8 komada (za prijenos 1 bajta).
Sljedeći redak od vrha je SPI-MOSI - podaci koje prenosimo iz Arduina u registar smjena. Ovo je naš broj "210" u binarnom obliku - "11010010".
Nakon završetka prijenosa, na kraju impulsa SPI-ENABLE, vidimo da je registar pomicanja postavio istu vrijednost na svojih 8 nogu. Istaknuo sam ovo plavom isprekidanom linijom i označio vrijednosti za jasnoću.
Korak 7
Sada skrenimo pažnju na odjeljak B.
Opet, sve započinje odabirom pomoćnog uređaja i generiranjem 8 taktova.
Podaci na liniji SPI-MOSI sada su "0". Odnosno, u ovom trenutku upisujemo broj "0" u registar.
Ali dok prijenos nije završen, registar pohranjuje vrijednost "11010010". Izlazi na paralelne pinove Q0.. Q7, a izlazi kad se u liniji nalaze impulsi takta od paralelnog izlaza Q7 'na SPI-MISO liniju, što ovdje vidimo.
Korak 8
Stoga smo detaljno proučavali pitanje razmjene informacija između glavnog uređaja, koji je bio Arduino, i registra smjene 74HC595. Naučili smo kako povezati registar smjena, upisati podatke u njega i čitati podatke iz njega.