Az egyik korábbi cikkben már röviden kitértünk a műszakregiszter használatára, különös tekintettel a 74HC595-re. Vizsgáljuk meg közelebbről a mikrokapcsolat használatának lehetőségeit és eljárását.
Szükséges
- - Arduino;
- - műszakregiszter 74HC595;
- - összekötő vezetékek.
Utasítás
1. lépés
A 74HC595 váltóregisztert és hasonlókat eszközként használják a soros adatok párhuzamos konvertálásához, és az adatok "reteszeként" is használhatók, az átadott állapotot tartva.
A kihúzás (kitűzés) a bal oldali ábrán látható. Céljuk a következő.
Q0… Q7 - párhuzamos adatkimenetek;
GND - test (0 V);
Q7 '- soros adatkimenet;
^ MR - master visszaállítása (aktív alacsony);
SHcp - shift regiszter óra bemenet;
STcp - "reteszelt" óra impulzus bemenet;
^ OE - kimenet engedélyezése (aktív alacsony);
Ds - soros adatbevitel;
Vcc - tápegység +5 V.
Szerkezetileg a mikrokapcsolás többféle esetben készül; A jobb oldali ábrán láthatóat - a kimenetet - azért fogom használni, mert könnyebb kenyérdeszkával használni.
2. lépés
Hadd idézzem fel röviden az SPI soros interfészt, amelyet az adatok átvitelére fogunk használni a shift regiszterbe.
Az SPI egy négyvezetékes, kétirányú soros interfész, amelyben egy master és egy slave vesz részt. A mester esetünkben az Arduino lesz, a rabszolga a 74HC595 regiszter lesz.
Az Arduino fejlesztői környezete rendelkezik egy beépített könyvtárral az SPI felületen való munkához. Alkalmazásakor az ábrán megjelölt következtetéseket használjuk:
SCLK - SPI órajel kimenet;
MOSI - adatok a mestertől a rabszolgáig;
MISO - adatok a rabszolgától a masterig;
SS - szolga kiválasztása.
3. lépés
Állítsuk össze az áramkört, mint a képen.
Csatlakoztatok egy logikai analizátort a shift regiszteres mikrokapcsoló minden érintkezőjéhez. Segítségével meglátjuk, hogy mi történik fizikai szinten, milyen jelek merre mennek, és kitaláljuk, mit jelentenek. Valami olyannak kell kinéznie, mint a fénykép.
4. lépés
Írjunk egy ilyen vázlatot, és töltsük be az Arduino memóriába.
A PIN_SPI_SS változó egy belső standard konstans, amely megfelel az Arduino "10" tűjének, amikor az itt használt SPI interfész mestereként használjuk. Elvileg ugyanolyan jól használhatnánk bármilyen más digitális tűt az Arduino-n; akkor deklarálnunk kellene és beállítanunk az üzemmódját.
Ennek a tűnek a LOW adagolásával aktiváljuk a váltási regiszterünket az adáshoz / fogadáshoz. Az átvitel után ismét HIGH-ra emeljük a feszültséget, és a csere véget ér.
5. lépés
Változtassuk áramkörünket munkává, és nézzük meg, mit mutat nekünk a logikai elemző. Az időzítési diagram általános nézete az ábrán látható.
A kék szaggatott vonal 4 SPI vonalat, a piros szaggatott vonal a shift regiszter párhuzamos adatainak 8 csatornáját mutatja.
Az időskála A pontja az a pillanat, amikor a "210" számot átviszik a váltási regiszterbe, B az a pillanat, amikor a "0" számot beírják, C az elejétől megismétlődő ciklus.
Amint láthatja, A-tól B-ig - 10,03 ezredmásodperc, és B-től C-ig - 90,12 ezredmásodperc, majdnem úgy, ahogy a vázlatban kértük. Egy kis kiegészítés 0, 03 és 0, 12 ms alatt a soros adatok átvitelének ideje az Arduino-ból, tehát itt nincs pontosan 10 és 90 ms.
6. lépés
Vizsgáljuk meg közelebbről az A szakaszt.
A legtetején egy hosszú impulzus található, amellyel az Arduino megkezdi az adást az SPI-ENABLE vonalon - a szolga kiválasztása. Ekkor SPI-CLOCK óraimpulzusok kezdenek keletkezni (felülről a második sor), 8 darab (1 bájt átvitelére).
A következő sor felülről az SPI-MOSI - az adatok, amelyeket átadunk az Arduino-ból a shift regiszterbe. Ez a szám a "210" bináris formában - "11010010".
Az átvitel befejezése után, az SPI-ENABLE impulzus végén azt látjuk, hogy a shift regiszter ugyanazt az értéket állította be a 8 lábán. Ezt kék pontozott vonallal emeltem ki, és az érthetőség érdekében felcímkéztem az értékeket.
7. lépés
Most fordítsuk figyelmünket a B szakaszra.
Ismét minden azzal kezdődik, hogy kiválasztunk egy rabszolgát és 8 óra impulzust generálunk.
Az SPI-MOSI vonal adatai most "0". Vagyis ebben a pillanatban beírjuk a "0" számot a regiszterbe.
De amíg az átvitel nem fejeződik be, a regiszter tárolja az "11010010" értéket. Kimenet a Q0.. Q7 párhuzamos csapokhoz, és akkor kerül kimenetre, ha a Q7 'párhuzamos kimenet és az SPI-MISO vonal között az impulzusok impulzusok vannak.
8. lépés
Így részletesen megvizsgáltuk a mester eszköz, amely az Arduino volt, és a 74HC595 váltóregiszter közötti információcsere kérdését. Megtanultuk a műszakregiszter összekapcsolását, az adatok beírását és az adatok kiolvasását.