Sa isa sa mga naunang artikulo, mabilis na na-touch namin ang paggamit ng isang shift register, sa partikular, ang 74HC595. Tingnan natin nang mas malapit ang mga kakayahan at pamamaraan para sa pagtatrabaho sa microcircuit na ito.
Kailangan
- - Arduino;
- - shift register 74HC595;
- - pagkonekta ng mga wire.
Panuto
Hakbang 1
Ang shift register 74HC595 at mga katulad nito ay ginagamit bilang mga aparato para sa pag-convert ng serial data sa parallel, at maaari ding magamit bilang isang "latch" para sa data, na humahawak sa inilipat na estado.
Ang pinout (pinout) ay ipinapakita sa figure sa kaliwa. Ang kanilang pakay ay ang mga sumusunod.
Q0… Q7 - parallel data outputs;
GND - lupa (0 V);
Q7 '- output ng serial data;
^ MR - reset master (aktibo mababa);
SHcp - paglilipat ng rehistro ng pag-input ng orasan;
STcp - input ng pulso ng orasan na "latch";
^ OE - paganahin ang output (aktibo mababa);
Ds - serial data input;
Vcc - power supply +5 V.
Sa istruktura, ang microcircuit ay ginawa sa maraming uri ng mga kaso; Gagamitin ko ang ipinakita sa pigura sa kanan - ang output - dahil mas madaling gamitin sa isang breadboard.
Hakbang 2
Hayaan mo akong paalalahanan ang SPI serial interface, na gagamitin namin upang ilipat ang data sa rehistro ng shift.
Ang SPI ay isang apat na kawad na bi-direksyong serial interface kung saan lumahok ang isang master at isang alipin. Ang master sa aming kaso ay ang Arduino, ang alipin ay magparehistro 74HC595.
Ang kapaligiran sa pag-unlad para sa Arduino ay may built-in na aklatan para sa pagtatrabaho sa interface ng SPI. Kapag inilalapat ito, ginagamit ang mga konklusyon na minarkahan sa pigura:
SCLK - output ng orasan ng SPI;
MOSI - data mula sa master hanggang alipin;
MISO - data mula sa alipin hanggang sa master;
SS - pagpili ng alipin.
Hakbang 3
Pinagsama natin ang circuit tulad ng nasa larawan.
Ikonekta ko rin ang isang analyzer sa lohika sa lahat ng mga pin ng microcircuit ng rehistro. Sa tulong nito, makikita natin kung ano ang nangyayari sa pisikal na antas, kung anong mga senyas ang pupunta kung saan, at malalaman natin kung ano ang ibig sabihin nito. Dapat magmukhang katulad ng larawan.
Hakbang 4
Sumulat tayo ng isang sketch na tulad nito at i-load ito sa memorya ng Arduino.
Ang variable na PIN_SPI_SS ay isang panloob na pamantayang pare-pareho na tumutugma sa pin na "10" ng Arduino kapag ginamit bilang master ng interface ng SPI na ginagamit namin dito. Sa prinsipyo, magagamit din namin ang anumang iba pang digital pin sa Arduino; pagkatapos ay idedeklara namin ito at itatakda ang operating mode nito.
Sa pamamagitan ng pagpapakain ng mababa sa pin na ito, pinapagana namin ang aming rehistro para sa paglilipat / pagtanggap. Matapos ang paghahatid, itaas namin ang boltahe sa TAAS muli, at nagtatapos ang palitan.
Hakbang 5
Gawin nating trabaho ang ating circuit at tingnan kung ano ang ipinapakita sa atin ng logic analyzer. Ang pangkalahatang pagtingin sa diagram ng tiyempo ay ipinapakita sa pigura.
Ang asul na tinadtad na linya ay nagpapakita ng 4 na mga linya ng SPI, ang pulang linya na putol ay nagpapakita ng 8 mga channel ng kahanay na data ng rehistro ng paglilipat.
Ang point A sa scale ng oras ay ang sandali kapag ang bilang na "210" ay inilipat sa rehistro ng shift, ang B ay ang sandali kapag nakasulat ang bilang na "0", ang C ay ang pag-uulit na ikot mula sa simula.
Tulad ng nakikita mo, mula A hanggang B - 10.03 milliseconds, at mula B hanggang C - 90.12 milliseconds, halos tulad ng tinanong namin sa sketch. Ang isang maliit na karagdagan sa 0, 03 at 0, 12 ms ay ang oras para sa paglilipat ng serial data mula sa Arduino, kaya wala kaming eksaktong 10 at 90 ms dito.
Hakbang 6
Tingnan natin nang mabuti ang seksyon A.
Sa tuktok ay isang mahabang pulso kung saan pinasimulan ng Arduino ang paghahatid sa linya na SPI-ENABLE - pagpili ng alipin. Sa oras na ito, ang mga pulso ng orasan ng SPI-CLOCK ay nagsisimulang mabuo (pangalawang linya mula sa itaas), 8 piraso (para sa paglilipat ng 1 byte).
Ang susunod na linya mula sa itaas ay ang SPI-MOSI - ang data na inililipat namin mula sa Arduino patungo sa rehistro ng shift. Ito ang aming numero na "210" sa binary - "11010010".
Matapos ang pagkumpleto ng paglipat, sa pagtatapos ng SPI-ENABLE pulse, nakikita namin na ang rehistro ng shift ay nagtakda ng parehong halaga sa 8 mga binti nito. Na-highlight ko ito sa isang asul na may tuldok na linya at may label na mga halaga para sa kalinawan.
Hakbang 7
Ngayon ay ibaling natin ang ating pansin sa seksyon B.
Muli, nagsisimula ang lahat sa pagpili ng isang alipin at pagbuo ng 8 pulso na orasan.
Ang data sa linya ng SPI-MOSI ay "0" na. Iyon ay, sa sandaling ito ay isinusulat namin ang bilang na "0" sa rehistro.
Ngunit hanggang sa makumpleto ang paglipat, iniimbak ng rehistro ang halagang "11010010". Ito ay output sa mga parallel na pin na Q0.. Q7, at output kapag may mga pulso ng orasan sa linya mula sa parallel output Q7 'hanggang sa linya ng SPI-MISO, na nakikita natin dito.
Hakbang 8
Sa gayon, napag-aralan namin nang detalyado ang isyu ng pagpapalitan ng impormasyon sa pagitan ng master device, na kung saan ay ang Arduino, at ang rehistro ng shift ng 74HC595. Nalaman namin kung paano ikonekta ang isang rehistro ng shift, magsulat ng data dito at magbasa ng data mula rito.