Əvvəlki məqalələrdən birində, keçid qeydinin istifadəsinə, xüsusən 74HC595-ə qısa bir müddətdə toxunduq. Bu mikro dövrə ilə işləmə imkanlarını və prosedurunu daha ətraflı nəzərdən keçirək.
Zəruri
- - Arduino;
- - növbə qeydiyyatı 74HC595;
- - birləşdirici tellər.
Təlimat
Addım 1
Shift registri 74HC595 və buna bənzərlər serial məlumatların paralelə çevrilməsi üçün cihazlar kimi istifadə olunur və ötürülən vəziyyəti saxlayan məlumatlar üçün "mandal" kimi də istifadə edilə bilər.
Pinout (pinout) soldakı şəkildə göstərilir. Onların məqsədi aşağıdakı kimidir.
Q0… Q7 - paralel məlumat çıxışları;
GND - torpaq (0 V);
Q7 '- serial məlumat çıxışı;
^ MR - yenidən qurma master (aktiv aşağı);
SHcp - shift registri saat girişi;
STcp - "mandalı" saat nəbzi girişi;
^ OE - çıxış imkan verir (aktiv aşağı);
Ds - serial məlumatların daxil edilməsi;
Vcc - enerji təchizatı +5 V.
Struktur olaraq, mikro dövrə bir neçə növdə hazırlanır; Sağdakı şəkildə göstəriləni - çıxışı istifadə edəcəyəm, çünki bir çörək taxtası ilə istifadə etmək daha asandır.
Addım 2
Məlumatların növbə reyestrinə ötürülməsi üçün istifadə edəcəyimiz SPI serial interfeysini qısaca xatırlayım.
SPI, bir usta və köləin iştirak etdiyi dörd telli iki yönlü bir serial interfeysdir. Bizim vəziyyətimizdəki usta Arduino olacaq, kölə 74HC595 qeydiyyatdan keçəcəkdir.
Arduino üçün inkişaf mühiti, SPI interfeysi üzərində işləmək üçün quraşdırılmış kitabxanaya malikdir. Tətbiq edərkən şəkildə qeyd olunan nəticələr istifadə olunur:
SCLK - SPI saat çıxışı;
MOSI - ağadan qula verilən məlumatlar;
MISO - kölədən ustaya məlumat;
SS - kölə seçimi.
Addım 3
Şəkildə olduğu kimi dövrəni bir yerə yığaq.
Həm də bir məntiq analizatorunu shift registri mikrosxeminin bütün sancaqlarına bağlayacağam. Bunun köməyi ilə fiziki səviyyədə nə baş verdiyini, hansı siqnalların hara getdiyini görəcəyik və bunun nə demək olduğunu başa düşəcəyik. Fotoya bənzər bir şey görünməlidir.
Addım 4
Belə bir eskiz yazaq və Arduino yaddaşına yükləyək.
Dəyişən PIN_SPI_SS, burada istifadə etdiyimiz SPI interfeysinin ustası kimi istifadə edildikdə Arduinonun "10" pininə uyğun gələn daxili standart sabitdir. Prinsipcə, Arduinodakı hər hansı digər rəqəmsal pindən istifadə edə bilərik; onda elan etməli və iş rejimini təyin etməliyik.
Bu sancağı DÜŞÜK qidalandırmaqla ötürmə / qəbul üçün növbə qeydiyyatımızı aktivləşdiririk. Şanzımandan sonra gərginliyi yenidən YÜKSƏK səviyyəsinə qaldırırıq və mübadilə başa çatır.
Addım 5
Devrimizi işə çevirək və məntiq analizatorunun bizə nə göstərdiyini görək. Vaxt diaqramının ümumi görünüşü şəkildə göstərilmişdir.
Mavi kəsikli xətt 4 SPI xəttini, qırmızı kəsikli xətt isə keçid reyestrinin 8 paralel məlumat kanalını göstərir.
Vaxt miqyasındakı A nöqtəsi "210" rəqəminin keçid reyestrinə köçürülmə anı, B "0" rəqəminin yazıldığı an, C əvvəldən təkrarlanan dövrdür.
Gördüyünüz kimi, demək olar ki, eskizdə soruşduğumuz A - B - 10.03 milisaniyə, B - C - 90.12 millisaniyə. 0, 03 və 0, 12 ms-də kiçik bir əlavə, Arduinodan serial məlumatların ötürülməsinin vaxtıdır, buna görə burada tam olaraq 10 və 90 ms yoxdur.
Addım 6
A hissəsini daha yaxından nəzərdən keçirək.
Ən üst hissədə Arduinonun SPI-ENABLE xətti ilə qul seçimi ilə başladığı uzun bir nəbz var. Bu zaman, SPI-SAAT saat nəbzləri yaranmağa başlayır (yuxarıdan ikinci sətir), 8 ədəd (1 bayt ötürülməsi üçün).
Yuxarıdakı növbəti sətir SPI-MOSI - Arduinodan keçid reyestrinə ötürdüyümüz məlumatlar. Bu, ikili olaraq "210" nömrəmizdir - "11010010".
Köçürmə tamamlandıqdan sonra, SPI-ENABLE nəbzinin sonunda, növbə qeydinin 8 ayağında eyni dəyəri təyin etdiyini görürük. Bunu mavi nöqtəli bir xəttlə vurğuladım və aydınlıq üçün dəyərləri etiketlədim.
Addım 7
İndi diqqətimizi B hissəsinə verək.
Yenə də hər şey bir kölə seçmək və 8 saat nəbzini yaratmaqla başlayır.
SPI-MOSI xəttindəki məlumatlar indi "0" -dır. Yəni bu anda reyestrə "0" rəqəmini yazırıq.
Ancaq köçürmə tamamlanana qədər qeyd "11010010" dəyərini saxlayır. Paralel sancaqlar Q0.. Q7-yə çıxarılır və Q7 'paralel çıxışdan SPI-MISO xəttinə qədər burada gördüyümüz xəttdə saat impulsları olduqda çıxır.
Addım 8
Beləliklə, Arduino olan ana cihaz ilə 74HC595 növbə qeydiyyatı arasında məlumat mübadiləsi məsələsini ətraflı araşdırdıq. Bir növbə qeydini necə bağlayacağınızı, ona məlumat yazmağı və ondan məlumat oxumağı öyrəndik.