Ühes eelmises artiklis puudutasime juba lühidalt vahetuste registri kasutamist, eriti 74HC595. Vaatame lähemalt selle mikrolülitusega töötamise võimalusi ja protseduure.
Vajalik
- - Arduino;
- - vahetuste register 74HC595;
- - juhtmete ühendamine.
Juhised
Samm 1
Nihkeregistrit 74HC595 jms kasutatakse seadmetena seeriandmete paralleelseks teisendamiseks ning neid saab kasutada ka andmete "riivina", hoides ülekantud olekut.
Pinout (pinout) on näidatud joonisel vasakul. Nende eesmärk on järgmine.
Q0… Q7 - paralleelsed andmeväljundid;
GND - maandus (0 V);
Q7 '- jadandmete väljund;
^ MR - lähtestada master (aktiivne madal);
SHcp - nihkeregistri kella sisend;
STcp - "riivi" impulsi sisend;
^ OE - väljundi lubamine (aktiivne madal);
Ds - seeriaandmete sisestamine;
Vcc - toiteallikas +5 V.
Struktuurselt tehakse mikrolülitust mitut tüüpi juhtumitel; Kasutan seda, mis on näidatud paremal joonisel - väljundit, sest seda on leivalauaga lihtsam kasutada.
2. samm
Meenutan lühidalt SPI jadaliidest, mida kasutame andmete vahetuste registrisse edastamiseks.
SPI on neljajuhtmeline kahesuunaline jadaliides, milles osalevad ülem ja ori. Meie puhul on peremeheks Arduino, orjaks on register 74HC595.
Arduino arenduskeskkonnas on sisseehitatud teek SPI-liidesega töötamiseks. Selle rakendamisel kasutatakse joonisel märgitud järeldusi:
SCLK - SPI kella väljund;
MOSI - andmed peremehelt orjale;
MISO - andmed orjalt peremehele;
SS - orjade valik.
3. samm
Paneme skeemi kokku nagu pildil.
Ühendan loogikaanalüsaatori ka kõigi nihkeregistri mikrolülituse tihvtidega. Selle abil näeme, mis toimub füüsilisel tasandil, millised signaalid kuhu lähevad, ja saame aru, mida need tähendavad. See peaks välja nägema umbes selline nagu foto.
4. samm
Kirjutame sellise visandi ja laadime selle Arduino mällu.
Muutuja PIN_SPI_SS on sisemise standardi konstant, mis vastab Arduino tihvtile "10", kui seda kasutatakse siin kasutatava SPI-liidese meistrina. Põhimõtteliselt võiksime sama hästi kasutada Arduino mis tahes muud digitaalset tihvti; siis peaksime selle deklareerima ja selle töörežiimi seadistama.
Selle tihvti LOW söötmisega aktiveerime oma vahetuste registri edastamiseks / vastuvõtmiseks. Pärast ülekannet tõstame pinge uuesti HIGH-le ja vahetus lõpeb.
5. samm
Muutkem oma vooluring tööks ja vaatame, mida loogika analüsaator meile näitab. Ajastusdiagrammi üldvaade on näidatud joonisel.
Sinine katkendjoon näitab 4 SPI joont, punane katkendjoon näitab 8 nihkeregistri paralleelsete andmete kanalit.
Ajaskaala punkt A on hetk, mil arv "210" kantakse nihkeregistrisse, B on hetk, kui kirjutatakse arv "0", C on algusest peale korduv tsükkel.
Nagu näete, A-st B-ni - 10,03 millisekundit ja B-st C-ni - 90,12 millisekundit, peaaegu nagu sketšil küsisime. Väike täiendus 0, 03 ja 0, 12 ms on aeg seeriandmete edastamiseks Arduinost, seega pole meil siin täpselt 10 ja 90 ms.
6. samm
Vaatame lähemalt A osa.
Kõige tipus on pikk impulss, millega Arduino algatab edastamise liinil SPI-ENABLE - orjavalimine. Sel ajal hakkavad tekkima SPI-CLOCK kella impulsid (ülalt teine rida), 8 tükki (1 baidi ülekandmiseks).
Järgmine rida ülalt on SPI-MOSI - andmed, mille me Arduinost vahetuste registrisse edastame. See on meie number "210" kahendkoodis - "11010010".
Pärast ülekande lõpetamist näeme SPI-ENABLE impulsi lõpus, et nihkeregister on seadnud sama väärtuse oma 8 jalale. Olen selle rõhutanud sinise punktiirjoonega ja märkinud väärtused selguse huvides.
7. samm
Pöörame nüüd tähelepanu jaotisele B.
Jällegi algab kõik orja valimisest ja 8 kellaimpulssi genereerimisest.
SPI-MOSI-liini andmed on nüüd "0". See tähendab, et hetkel kirjutame registrisse numbri "0".
Kuid kuni ülekande lõpuleviimiseni salvestatakse registrisse väärtus "11010010". See väljastatakse paralleelsetele tihvtidele Q0.. Q7 ja väljastatakse siis, kui paralleelsest väljundist Q7 'kuni SPI-MISO jooneni on joonel impulsid, mida me siin näeme.
8. samm
Seega oleme üksikasjalikult uurinud teabevahetuse küsimust põhiseadme, milleks oli Arduino, ja nihkeregistri 74HC595 vahel. Õppisime vahetuste registri ühendamist, sinna andmete sisestamist ja andmete lugemist.