Алдыңғы мақалалардың бірінде біз ауысым регистрін, атап айтқанда 74HC595 пайдалану туралы қысқаша тоқталдық. Осы микросхемамен жұмыс істеу мүмкіндіктері мен процедурасын егжей-тегжейлі қарастырайық.
Қажетті
- - Ардуино;
- - 74HC595 ауысым регистрі;
- - сымдарды қосу.
Нұсқаулық
1-қадам
Ауыстыру регистрі 74HC595 және сол сияқтылар тізбектелген деректерді параллельге түрлендіруге арналған құрылғылар ретінде қолданылады, сонымен қатар берілген күйді ұстап тұрған мәліметтер үшін «ысырма» ретінде қолданыла алады.
Бекіту (бекіту) сол жақтағы суретте көрсетілген. Олардың мақсаты келесідей.
Q0… Q7 - параллель мәліметтер шығару;
GND - жер (0 V);
Q7 '- деректерді сериялық шығару;
^ MR - қалпына келтіру мастері (белсенді төмен);
SHcp - ауысым регистрінің сағатты енгізу;
STcp - импульстің «ысырмасы» кірісі;
^ OE - шығуды қосу (белсенді төмен);
Ds - деректерді тізбектей енгізу;
Vcc - қуат көзі +5 В.
Құрылымдық жағынан микросұлба бірнеше жағдайда жасалады; Мен оң жақтағы суретте көрсетілгенді - шығуды қолданамын - өйткені нан тақтайымен пайдалану оңайырақ.
2-қадам
SPI сериялық интерфейсін қысқаша еске түсірейін, оны біз ауысым регистріне деректерді жіберу үшін қолданамыз.
SPI - бұл шебері мен құлы қатысатын төрт сымды екі бағытты сериялық интерфейс. Біздің жағдайда қожайын Ардуино болады, құл 74HC595 тіркелімі болады.
Arduino үшін даму ортасында SPI интерфейсінде жұмыс істеуге арналған кіріктірілген кітапхана бар. Оны қолданған кезде суретте көрсетілген тұжырымдар қолданылады:
SCLK - SPI сағат шығысы;
MOSI - шеберден құлға дейінгі мәліметтер;
MISO - құлдан шеберге дейінгі мәліметтер;
SS - құлды таңдау.
3-қадам
Суреттегідей тізбекті біріктірейік.
Логикалық анализаторды ауысым регистрі микросұлбасының барлық түйреуіштеріне қосамын. Оның көмегімен біз физикалық деңгейде не болып жатқанын, қандай сигналдар қайда бара жатқанын көреміз және олардың мағынасын анықтаймыз. Бұл фотосуретке ұқсас болуы керек.
4-қадам
Осылай эскиз жазып, Arduino жадына жүктейік.
PIN_SPI_SS айнымалысы - бұл біз қолданып отырған SPI интерфейсінің шебері ретінде қолданылған кезде Arduino-ның «10» пиніне сәйкес келетін ішкі стандартты тұрақты шама. Негізінде біз Arduino-да кез-келген басқа цифрлық штырды қолдана аламыз; онда біз оны жариялап, оның жұмыс режимін орнатуымыз керек еді.
Осы түйреуішті ТӨМЕН беру арқылы біз жіберу / қабылдау үшін ауысым тіркелімін белсендіреміз. Беруден кейін біз кернеуді қайтадан ЖОҒАРЫ деңгейге көтереміз, ал айырбас аяқталады.
5-қадам
Тізбекті жұмысқа айналдырып, логикалық анализатордың бізге не көрсететінін көрейік. Уақыт диаграммасының жалпы көрінісі суретте көрсетілген.
Көк сызықпен 4 SPI сызығы, қызыл сызықпен ауысым регистрінің параллель мәліметтерінің 8 арнасы көрсетілген.
Уақыт шкаласындағы А нүктесі - «210» саны ауысым регистріне ауысқан сәт, В - «0» саны жазылған сәт, С - басынан бастап қайталанатын цикл.
Көріп отырғаныңыздай, А-дан В-ға дейін - 10,03 миллисекунд, ал В-ден С - 90,12 миллисекунд, біз эскизде сұрағандай болдық. 0, 03 және 0, 12 мс қосындылары - бұл Arduino-дан сериялық деректерді беру уақыты, сондықтан бізде дәл 10 және 90 мс жоқ.
6-қадам
А бөлімін толығырақ қарастырайық.
Ең жоғарғы жағында Arduino SPI-ENABLE желісі бойынша берілісті бастайтын ұзын импульс - құлды таңдау. Осы уақытта сағаттық импульстар SPI-CLOCK пайда бола бастайды (жоғарыдан екінші жол), 8 дана (1 байтты беру үшін).
Жоғарыдан келесі жол - SPI-MOSI - біз Arduino-дан ауысым регистріне өткізетін деректер. Бұл біздің «210» екілік нөмірдегі «11010010».
Тасымалдау аяқталғаннан кейін, SPI-ENABLE импульсінің соңында ауысым регистрі 8 аяғына бірдей мән орнатқанын көреміз. Мен мұны көк нүктелі сызықпен бөліп алып, айқындық үшін мәндерді белгіледім.
7-қадам
Енді назарымызды В бөліміне аударайық.
Тағы да, бәрі құлды таңдаудан және 8 сағат импульсін құрудан басталады.
SPI-MOSI жолындағы деректер қазір «0» құрайды. Яғни, осы сәтте біз «0» санын тізілімге жазамыз.
Аударым аяқталғанша, регистр «11010010» мәнін сақтайды. Ол Q0.. Q7 параллель түйреуіштеріне шығарылады және Q7 'параллель шығысынан SPI-MISO желісіне дейінгі сызықта тактілік импульстар болған кезде шығады, мұнда біз көріп отырмыз.
8-қадам
Осылайша, біз Arduino болған басты құрылғы мен 74HC595 ауысым регистрі арасындағы ақпарат алмасу мәселесін егжей-тегжейлі зерттедік. Біз ауысым регистрін қосуды, оған мәліметтер жазуды және одан деректерді оқуды үйрендік.