V jednom z predchádzajúcich článkov sme sa už v krátkosti dotkli použitia posuvného registra, najmä modelu 74HC595. Pozrime sa podrobnejšie na možnosti a postup pri práci s týmto mikroobvodom.
Nevyhnutné
- - Arduino;
- - posuvný register 74HC595;
- - spojovacie vodiče.
Inštrukcie
Krok 1
Posuvný register 74HC595 a podobne sa používajú ako zariadenia na prevod sériových údajov na paralelné a možno ich tiež použiť ako „západku“pre údaje, ktorá uchováva prenesený stav.
Pinout (pinout) je znázornený na obrázku vľavo. Ich účel je nasledovný.
Q0 … Q7 - paralelné dátové výstupy;
GND - zem (0 V);
Q7 '- výstup sériových údajov;
^ MR - reset master (aktívne nízke);
SHcp - vstup hodín posuvného registra;
STcp - "západkový" hodinový impulzný vstup;
^ OE - povolený výstup (aktívny nízky);
Ds - vstup sériových údajov;
Vcc - napájanie +5 V.
Štrukturálne je mikroobvod vyrobený v niekoľkých typoch prípadov; Použijem ten, ktorý je zobrazený na obrázku vpravo - výstup - pretože je to jednoduchšie na použitie s nepájivým panelom.
Krok 2
V krátkosti si spomeniem na sériové rozhranie SPI, ktoré použijeme na prenos údajov do posuvného registra.
SPI je štvorvodičové obojsmerné sériové rozhranie, na ktorom sa zúčastňujú master a slave. Pánom v našom prípade bude Arduino, otrokom bude register 74HC595.
Vývojové prostredie pre Arduino má zabudovanú knižnicu pre prácu na rozhraní SPI. Pri jeho uplatňovaní sa používajú závery, ktoré sú vyznačené na obrázku:
SCLK - výstup hodín SPI;
MOSI - údaje od hlavného k podriadenému;
MISO - dáta od slave po master;
SS - výber otroka.
Krok 3
Dajme dokopy obvod ako na obrázku.
Pripojím tiež logický analyzátor ku všetkým vývodom mikroobvodu posuvného registra. Pomocou nej uvidíme, čo sa deje na fyzickej úrovni, aké signály smerujú kam a zistíme, čo to znamená. Malo by to vyzerať asi ako na fotografii.
Krok 4
Poďme si napísať tento náčrt a načítať ho do pamäte Arduino.
Premenná PIN_SPI_SS je interná štandardná konštanta, ktorá zodpovedá pinu „10“Arduina, ak sa použije ako master rozhrania SPI, ktoré tu používame. V zásade môžeme rovnako dobre použiť akýkoľvek iný digitálny pin na Arduine; potom by sme to museli deklarovať a nastaviť jeho prevádzkový režim.
Napájaním tohto pinu NÍZKY aktivujeme náš posuvný register pre vysielanie / príjem. Po prenose opäť zvýšime napätie na VYSOKÉ a výmena končí.
Krok 5
Premeňme náš obvod na prácu a pozrime sa, čo nám ukazuje logický analyzátor. Celkový pohľad na časový diagram je znázornený na obrázku.
Modrá prerušovaná čiara zobrazuje 4 čiary SPI, červená prerušovaná čiara zobrazuje 8 kanálov paralelných údajov posuvného registra.
Bod A na časovej škále je okamih, keď sa číslo „210“prenesie do posuvného registra, B je okamih, keď sa napíše číslo „0“, C je cyklus opakujúci sa od začiatku.
Ako vidíte, od A do B - 10,03 milisekundy a od B do C - 90,12 milisekundy, takmer tak, ako sme požadovali v náčrte. Malý prírastok za 0, 03 a 0, 12 ms je čas na prenos sériových údajov z Arduina, takže tu nemáme presne 10 a 90 ms.
Krok 6
Pozrime sa bližšie na časť A.
Na samom vrchole je dlhý impulz, ktorým Arduino iniciuje prenos na linke SPI-ENABLE - výber slave. V tejto dobe sa začnú generovať hodinové impulzy SPI-CLOCK (druhý riadok zhora), 8 kusov (na prenos 1 bajtu).
Ďalším riadkom zhora je SPI-MOSI - údaje, ktoré prenášame z Arduina do posuvného registra. Toto je naše číslo „210“v binárnom formáte - „11010010“.
Po dokončení prenosu, na konci impulzu SPI-ENABLE, vidíme, že posuvný register nastavil na svojich 8 nohách rovnakú hodnotu. Zvýraznil som to modrou bodkovanou čiarou a kvôli prehľadnosti som označil hodnoty.
Krok 7
Teraz sa obráťme na časť B.
Všetko opäť začína výberom otroka a generovaním 8 hodinových impulzov.
Údaje na linke SPI-MOSI sú teraz „0“. To znamená, že v tejto chvíli zapíšeme do registra číslo „0“.
Kým sa prenos nedokončí, register uloží hodnotu „11010010“. Je výstupom na paralelné piny Q0.. Q7 a je výstupom, ak sú v linke hodinové impulzy z paralelného výstupu Q7 'na linku SPI-MISO, ktorú tu vidíme.
Krok 8
Podrobne sme teda študovali problematiku výmeny informácií medzi hlavným zariadením, ktorým bolo Arduino, a posuvným registrom 74HC595. Naučili sme sa, ako spojiť posuvný register, zapisovať doň dáta a čítať z nich dáta.