Avvalgi maqolalardan birida biz smenali registrdan, xususan, 74HC595 dan foydalanishga qisqacha to'xtaldik. Keling, ushbu mikrosxem bilan ishlash imkoniyatlari va tartibini batafsil ko'rib chiqamiz.
Kerakli
- - Arduino;
- - 74HC595 smenali registr;
- - ulash simlari.
Ko'rsatmalar
1-qadam
Shift registri 74HC595 va shunga o'xshashlar ketma-ket ma'lumotlarni parallelga aylantirish uchun moslamalar sifatida ishlatiladi, shuningdek, uzatilgan holatni ushlab turuvchi ma'lumotlar uchun "latch" sifatida ishlatilishi mumkin.
Pinout (pinout) chapdagi rasmda ko'rsatilgan. Ularning maqsadi quyidagicha.
Q0… Q7 - ma'lumotlarning parallel chiqishi;
GND - tuproq (0 V);
Q7 '- ketma-ket ma'lumotlar chiqishi;
^ MR - reset master (faol past);
SHcp - smenali registr soatini kiritish;
STcp - "latch" soat impulsini kiritish;
^ OE - chiqishni yoqish (faol past);
Ds - ketma-ket ma'lumotlarni kiritish;
Vcc - quvvat manbai +5 V.
Strukturaviy ravishda mikrosxem bir necha turdagi holatlarda amalga oshiriladi; O'ngdagi rasmda ko'rsatilganidan foydalanaman - chiqish - chunki non taxtasi bilan ishlatish osonroq.
2-qadam
Qisqacha SPI seriyali interfeysini eslayman, biz uni ma'lumotni smenali registrga uzatish uchun foydalanamiz.
SPI - bu to'rt simli ikki yo'nalishli ketma-ket interfeys, unda usta va qul qatnashadi. Bizning ishimizdagi xo'jayin Arduino bo'ladi, qul 74HC595 ro'yxatga olinadi.
Arduino uchun ishlab chiqish muhiti SPI interfeysi ustida ishlash uchun o'rnatilgan kutubxonaga ega. Uni qo'llashda quyidagi rasmda ko'rsatilgan xulosalar qo'llaniladi:
SCLK - SPI soat chiqishi;
MOSI - xo'jayindan qulgacha bo'lgan ma'lumotlar;
MISO - quldan mastergacha bo'lgan ma'lumotlar;
SS - qullarni tanlash.
3-qadam
Rasmdagi kabi sxemani yig'amiz.
Shuningdek, men mantiqiy analizatorni smenali registr mikrosxemasining barcha pimlariga ulayman. Uning yordamida biz jismoniy darajada nima bo'layotganini, qanday signallar qaerga ketayotganini ko'rib chiqamiz va ularning ma'nosini aniqlaymiz. Bu fotosuratga o'xshash bo'lishi kerak.
4-qadam
Keling, shunday eskiz yozamiz va Arduino xotirasiga yuklaymiz.
PIN_SPI_SS o'zgaruvchisi bu erda foydalanadigan SPI interfeysining ustasi sifatida ishlatilganda Arduino piniga "10" mos keladigan ichki standart doimiydir. Printsipial jihatdan, biz Arduino-da boshqa raqamli pinlardan ham foydalanishimiz mumkin; keyin biz buni e'lon qilishimiz va uning ish rejimini belgilashimiz kerak edi.
Ushbu PIN-kodni ozgina berish orqali biz uzatish / qabul qilish uchun smenali registrimizni faollashtiramiz. Etkazib berishdan keyin biz yana kuchlanishni yuqori darajaga ko'taramiz va almashinish tugaydi.
5-qadam
Keling, bizning sxemani ishga aylantiramiz va mantiqiy analizator bizga nimani ko'rsatishini ko'rib chiqaylik. Vaqt diagrammasining umumiy ko'rinishi rasmda ko'rsatilgan.
Moviy chiziq 4 SPI chizig'ini, qizil chiziq esa smenali registrning parallel ma'lumotlarining 8 kanalini ko'rsatadi.
Vaqt shkalasidagi A nuqta - bu "210" raqami smenali registrga o'tkazilgan moment, B - "0" raqami yozilgan moment, C - boshidan takrorlanadigan tsikl.
Ko'rib turganingizdek, deyarli eskizda biz so'raganimizdek, A dan B - 10,03 millisekundalar, B dan C gacha - 90,12 millisekundalar. 0, 03 va 0, 12 msdagi kichik qo'shimchalar Arduino-dan ketma-ket ma'lumotlarni uzatish vaqti, shuning uchun bizda bu erda to'liq 10 va 90 ms mavjud emas.
6-qadam
Keling, A bo'limini batafsil ko'rib chiqamiz.
Eng yuqori qismida Arduino SPI-ENABLE liniyasida uzatishni boshlaydigan uzun zarba - qul tanlash. Ayni paytda SPI-CLOCK soat impulslari hosil bo'la boshlaydi (yuqoridan ikkinchi qator), 8 dona (1 baytni o'tkazish uchun).
Yuqoridan keyingi qator SPI-MOSI - biz Arduino-dan smenali registrga o'tkazadigan ma'lumotlar. Bu bizning "210" raqamimiz ikkilikda - "11010010".
O'tkazish tugagandan so'ng, SPI-ENABLE impulsining oxirida biz smenali registrning 8 oyog'iga bir xil qiymatni o'rnatganligini ko'ramiz. Men buni ko'k nuqta bilan ta'kidladim va aniqlik uchun qiymatlarni belgiladim.
7-qadam
Endi e'tiborimizni B bo'limiga qaratamiz.
Shunga qaramay, barchasi qulni tanlash va 8 soatlik impulslarni yaratish bilan boshlanadi.
SPI-MOSI liniyasidagi ma'lumotlar endi "0" ga teng. Ya'ni, hozirgi paytda biz "0" raqamini reestrga yozamiz.
Ammo pul o'tkazmasi tugaguniga qadar registrda "11010010" qiymati saqlanadi. U Q0.. Q7 parallel pinlariga chiqariladi va biz bu erda ko'rib turganimiz Q7 'parallel chiqishdan SPI-MISO chizig'igacha chiziqda soat impulslari mavjud bo'lganda chiqadi.
8-qadam
Shunday qilib, biz Arduino bo'lgan asosiy qurilma va 74HC595 smenali registr o'rtasidagi ma'lumot almashinuvi masalasini batafsil o'rganib chiqdik. Biz smena registrini qanday ulashni, unga ma'lumotlarni yozishni va undan ma'lumotlarni o'qishni o'rgandik.