U jednom od prethodnih članaka već smo se ukratko dotaknuli upotrebe registra smjena, posebice 74HC595. Pogledajmo pobliže mogućnosti i postupak za rad s ovom mikrovezom.
Potrebno
- - Arduino;
- - registar smjene 74HC595;
- - spojne žice.
Upute
Korak 1
Shift registar 74HC595 i slično 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 lijevo. Njihova je svrha kako slijedi.
Q0 … Q7 - paralelni izlazi podataka;
GND - tlo (0 V);
Q7 '- serijski izlaz podataka;
^ MR - reset master (aktivno nisko);
SHcp - unos takta registra pomicanja;
STcp - impulsni ulaz takta "zasun";
^ OE - omogućavanje izlaza (aktivno nisko);
Ds - serijski unos podataka;
Vcc - napajanje +5 V.
Strukturno, mikrovezje se izrađuje u nekoliko vrsta slučajeva; Koristit ću onaj prikazan na slici desno - izlaz - jer lakše ga je koristiti s 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 sudjeluju master i slave. Glavni u našem slučaju bit će Arduino, slave će biti registriran 74HC595.
Razvojno okruženje za Arduino ima ugrađenu knjižnicu za rad na SPI sučelju. Kada se primjenjuje, 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.
3. korak
Sastavimo sklop kao na slici.
Također ću spojiti logički analizator na sve iglice mikrosklopa registra pomicanja. Pomoću nje vidjet ćemo što se događa na fizičkoj razini, koji signali kamo idu i shvatit ćemo što oni znače. Trebao bi izgledati otprilike poput fotografije.
4. korak
Napišimo ovakvu skicu i učitajmo je u Arduino memoriju.
Varijabla PIN_SPI_SS interna je 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 ga morali deklarirati i postaviti način rada.
Hranjenjem ovog pina LOW, aktiviramo naš registar smjene za prijenos / primanje. Nakon prijenosa ponovo podižemo napon na VISOK i izmjena završava.
Korak 5
Pretvorimo svoj krug u posao i vidjet ćemo š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 pomicanja.
Toč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 milisekundi, a od B do C - 90,12 milisekundi, gotovo kao što smo tražili na skici. Mali dodatak u 0, 03 i 0, 12 ms vrijeme je za prijenos serijskih podataka s Arduina, tako da ovdje nemamo točno 10 i 90 ms.
Korak 6
Pogledajmo bliže odjeljak A.
Na samom vrhu je dugi impuls kojim Arduino pokreće prijenos na SPI-ENABLE liniji - odabir slave. U to vrijeme počinju se generirati impulsi sata SPI-CLOCK (drugi redak od vrha), 8 komada (za prijenos 1 bajta).
Sljedeći redak s vrha je SPI-MOSI - podaci koje prenosimo s 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 pomaka postavio istu vrijednost na svojih 8 nogu. To sam istaknuo plavom isprekidanom crtom i označio vrijednosti za jasnoću.
Korak 7
Sada ćemo skrenuti pozornost na odjeljak B.
Opet, sve započinje odabirom slave-a 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 su u liniji taktovi sa paralelnog izlaza Q7 'na SPI-MISO liniju, što ovdje vidimo.
Korak 8
Stoga smo detaljno proučili pitanje razmjene podataka 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.