Fórum témák

» Több friss téma
Cikkek » SPI használata AVR-rel
SPI használata AVR-rel
Szerző: Fizikus, idő: Jún 13, 2011, Olvasva: 31957, Oldal olvasási idő: kb. 3 perc
Lapozás: OK   4 / 8

74HC595 8 bites shift regiszter

Mint korábban láthattuk, az SPI periféria működése alapjaiban egy shift regiszterre épül, ezért egy shift regiszter a legegyszerűbb SPI eszköz amit használhatunk.

Első példámban megnézzük hogy egy output latch-el ellátott 8 bites 74HC595-ös shift regisztert hogyan tudunk egyszerűen felhasználni arra, hogy kibővítsük a mikrovezérlőnk kimeneteinek a számát, és ezáltal hogyan tudunk egy egyszerű 8 LED-ből álló kijelzőt készíteni.

Az alábbi ábrán a 74HC595-ös shift regiszter IC lábkiosztása látható.

   

(az adatlaphoz kattints az ábrára)

Normál üzemmódban a shift regiszter törles lábát (SCLR) logikai magas szintre kell kötni(5V). A 8 bites D-latch puffer kimenetét engedélyező lábat pedig logikai alacsony szintre (GND). A soros bemeneti lábra (SER) az AVR MOSI lábát, az SCK lábára pedig a Master SPI órajelét kell kötni. Az RCK láb az SS lábnak felel meg. Magas állapotban a 8 bites shift regiszter tartalmát rákapcsolja a 8 kimeneti lábra (QA...QH). Alacsony állapotban pedig engedélyezi az SPI adatbevitelt. A 74HC595-ös shift regisztert úgy is használhatjuk mint egy egyszerű Slave eszközt, de a Q`H kimeneti lábat (a shift regiszter legnagyobb helyiértékű bitje) az AVR MISO lábára kötve, a shift regiszternek küldött előző adatbájtot küldhetjük vissza a Master-nek.

A 74HC595 egy output latch-el rendelkező 8 bites, soros bemenetű, soros és párhuzamos kimenetű shift regiszter. Ez azt jelenti hogy a shift regiszterbe sorosan, bitenként egymás után küldhetjük az adatokat, és 8 adatbit beérkezése után az adatbájtot egyszerre (párhuzamosan) küldhetjük ki a 8 kimeneti lábon (QA...QH). Ezért ezt a shift regiszteret általában soros adatok párhuzamossá alakítására szokták használni. Mivel a kimeneteken a 0 és 1 logikai szintek mint 0V és 5V jelennek meg, ezért felhasználhatjuk különböző eszközök vezérlésére is. Pl. LED-ek kapcsolgatására. Több shift regisztert sorban összekapcsolva megnövelhetjük a mikrovezérlőnk digitális kimeneteinek a számát (Pl. 2 shift regiszterrel már 16 LED-et, vagy akár egy 8x8-as LED mátrix kijelzőt is vezérlehetünk az AVR 4 lábának felhasználásával: Link). Mivel a shift regiszterek nagyon gyorsak (akár több tíz MHz-en is működhetnek), ezért akár szoftveresen előállított PWM jeleket is létrehozhatunk és ezáltal pl. a LED-ek fényerejét is változtathatjuk, vagy több szervómotort vezérelhetünk egyszerre. Például a hexapod robotot építők által előszeretettel használt SSC-32 szervóvezérlő is SPI-n keresztül vezérelt 4db 74HC595-ös shift regisztert használ a maximum 32db szervó vezérlésére (Link).

A Shift-regiszter működése

Az SPI-t tárgyaló fejezetben már említettem, hogy a shift regiszterbe amint egy új bit beérkezik, a korábbi bitek automatikusan eggyel tovább léptetődnek. Ha egy 9. bit érkezik mielőtt a latch állapota magasra váltana, akkor az elsőnek beérkezett bit eltűnik a sor végén és örökre elvész. Ezek a sorvégi bitek jelennek meg a shift regiszter QH` lábán, ezért lehetőség van arra hogy ezt mint egy MISO kimenetként használva a beérkezett bájtot visszaküldjük a mikrovezérlőre, vagy ezt a lábat ráköthetjük egy következő shift regiszter soros adatbemeneti lábára. Ezzel a módszerrel több shift regiszter is sorba fűzhető.

A Latch kapcsolóval lehet a shift regiszterben tárolt adatbájtot megjeleníteni a 8 kimeneti lábra kapcsolni. A Latch-et úgy is elképzelhetjük mint egy sorompót, ami az adatok be és kiáramlását szabályozza. Ha a sorompó le van engedve (logikai alacsony szint), akkor az adatok csak beérkezhetnek, de nem tudnak a kimeneti lábakra "menni", azon nem jelennek meg. Ha a sorompó fel van engedve, akkor új adatok már nem érkezhetnek be, de a shift regiszterben lévő, korábban beérkezett adatbitek megjelennek a 8 kimeneti lábon.

A fentiek alapján látható, hogy a shift regiszter használatához először a latch lábat és az órajel vonalat alacsony állapotba kell kapcsolni, hogy a shift regisztert aktiváljuk és adatokat tudjunk küldeni neki. Ennek a lábnak mindaddig alacsonyan kell maradnia, amíg mind a 8 adatbit be nem érkezik. Az első bit beolvasásához először az adatlábra küldjük a bitet (0 vagy 1), majd az órajel vonalat magas állapotra kell kapcsolni. Az órajel felfutó éle az adatvonalon lévő logikai értéket eltárolja a shift regiszter első helyére. Ezután az órajelet alacsony állapotra kell kapcsolni, majd a következő bitet kell az adatlábra küldeni. A shift regiszter a beérkezett biteket automatikusan tovább lépteti, helyet csinálva ezzel a következő bejövő bitnek. A fenti folyamatot 8-szor ismételve egymás után, egy teljes adatbájtot írhatunk a shift regiszterbe. Ezután a latch lábat magas állapotba kapcsolva, a shift regiszterben tárolt adat megjelenik a 8 kimeneti labon (QA...QH).


A cikk még nem ért véget, lapozz!
Következő: »»   4 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem