Vienā no iepriekšējiem rakstiem mēs jau īsi pieskārāmies maiņu reģistra izmantošanai, it īpaši 74HC595. Apskatīsim tuvāk iespējas un procedūru darbam ar šo mikroshēmu.
Nepieciešams
- - Arduino;
- - maiņu reģistrs 74HC595;
- - savienojošie vadi.
Instrukcijas
1. solis
Maiņu reģistrs 74HC595 un tamlīdzīgi tiek izmantoti kā ierīces sērijveida datu konvertēšanai paralēli, un tos var izmantot arī kā datu "fiksatoru", turot pārsūtīto stāvokli.
Pinout (pinout) ir parādīts attēlā pa kreisi. Viņu mērķis ir šāds.
Q0… Q7 - paralēlas datu izejas;
GND - zeme (0 V);
Q7 '- sērijas datu izvade;
^ MR - reset master (aktīvs zems);
SHcp - maiņu reģistra pulksteņa ievade;
STcp - pulksteņa impulsa ieejas fiksators;
^ OE - izejas iespējošana (aktīva zema);
Ds - sērijveida datu ievade;
Vcc - barošana +5 V.
Strukturāli mikroshēma tiek izgatavota vairākos gadījumos; Es izmantošu to, kas parādīts attēlā pa labi - izvadi, jo to ir vieglāk izmantot ar maizes dēli.
2. solis
Ļaujiet man īsi atgādināt SPI sērijas saskarni, kuru izmantosim, lai pārsūtītu datus uz maiņu reģistru.
SPI ir četru vadu divvirzienu seriālais interfeiss, kurā piedalās kapteinis un vergs. Kapteinis mūsu gadījumā būs Arduino, vergs būs reģistrs 74HC595.
Arduino izstrādes vidē ir iebūvēta bibliotēka darbam ar SPI saskarni. To piemērojot, tiek izmantoti secinājumi, kas atzīmēti attēlā:
SCLK - SPI pulksteņa izeja;
MOSI - dati no kapteiņa līdz vergam;
MISO - dati no verga līdz galvenajam;
SS - vergu izvēle.
3. solis
Saliksim ķēdi kā attēlā.
Es arī savienošu loģisko analizatoru ar visām maiņu reģistra mikroshēmas tapām. Ar tās palīdzību mēs redzēsim, kas notiek fiziskajā līmenī, kādi signāli uz kurieni virzās, un izdomāsim, ko tie nozīmē. Tam vajadzētu izskatīties apmēram kā fotoattēlam.
4. solis
Uzrakstīsim šādu skici un ielādēsim to Arduino atmiņā.
Mainīgais PIN_SPI_SS ir iekšējā standarta konstante, kas atbilst Arduino tapai "10", ja to izmanto kā SPI saskarnes galveno, kuru mēs šeit izmantojam. Principā mēs tikpat labi varētu izmantot jebkuru citu digitālo tapu Arduino; tad mums tas būtu jādeklarē un jāiestata tā darbības režīms.
Padodot šo tapu LOW, mēs aktivizējam mūsu maiņu reģistru nosūtīšanai / saņemšanai. Pēc pārraides mēs atkal paaugstinām spriegumu uz HIGH, un apmaiņa beidzas.
5. solis
Pārvērsim savu ķēdi darbā un redzēsim, ko mums parāda loģiskais analizators. Laika diagrammas vispārējais skats ir parādīts attēlā.
Zilā pārtrauktajā līnijā ir redzamas 4 SPI līnijas, sarkanajā punktētā līnijā ir redzami 8 maiņu reģistra paralēlu datu kanāli.
Laika skalas punkts A ir brīdis, kad skaitlis "210" tiek pārsūtīts uz maiņu reģistru, B ir brīdis, kad tiek rakstīts skaitlis "0", C ir cikls, kas atkārtojas no sākuma.
Kā redzat, no A līdz B - 10,03 milisekundes, un no B līdz C - 90,12 milisekundes, gandrīz kā mēs prasījām skicē. Neliels papildinājums 0, 03 un 0, 12 ms laikā ir sērijveida datu pārsūtīšanas laiks no Arduino, tāpēc mums šeit nav precīzi 10 un 90 ms.
6. solis
Apskatīsim A sadaļu tuvāk.
Pašā augšpusē ir garš impulss, ar kuru Arduino uzsāk pārraidi līnijā SPI-ENABLE - vergu izvēle. Šajā laikā sāk veidoties SPI-CLOCK pulksteņa impulsi (otrā līnija no augšas), 8 gabali (1 baita pārsūtīšanai).
Nākamā rinda no augšas ir SPI-MOSI - dati, kurus mēs pārsūtām no Arduino uz maiņu reģistru. Tas ir mūsu skaitlis "210" binārā formā - "11010010".
Pēc pārsūtīšanas pabeigšanas impulsa SPI-ENABLE beigās mēs redzam, ka maiņu reģistrs ir iestatījis to pašu vērtību uz 8 kājām. Es to esmu izcēlis ar zilu punktētu līniju un skaidrības labad iezīmējis vērtības.
7. solis
Tagad pievērsīsim uzmanību B sadaļai.
Atkal viss sākas ar verga izvēli un 8 pulksteņa impulsu ģenerēšanu.
Dati līnijā SPI-MOSI tagad ir "0". Tas ir, šajā brīdī mēs ierakstām reģistrā skaitli "0".
Bet, kamēr pārsūtīšana nav pabeigta, reģistrā tiek saglabāta vērtība "11010010". Tas tiek izvadīts uz paralēlajām tapām Q0.. Q7 un tiek izvadīts, ja līnijā no paralēlās izejas Q7 'līdz līnijai SPI-MISO ir pulksteņa impulsi, ko mēs šeit redzam.
8. solis
Tādējādi mēs esam detalizēti izpētījuši informācijas apmaiņas jautājumu starp galveno ierīci, kas bija Arduino, un 74HC595 maiņu reģistru. Mēs iemācījāmies savienot maiņu reģistru, ierakstīt tajā datus un nolasīt no tā datus.