kaip pridėti kojų valdikliui (su C kodu) (add pins to controller)

Taigi mano vienas mėgstamiausių valdiklių Attiny2313, turėdamas pakankamai greičio, tačiau turi labai mažai kojų kai norima ką nors prikabinti daugiau. Pavyzdžiu tikrai gali būti jau rodytas laikrodis su 7 segmentų LED. visam tam malonumui reikia skirti TIK 8+4 kojas. o kai šis mažiukas teturi 15 IO kojų (kai naudojamas išorinis kvarcas), tai žinoma kažkaip tenka apgalvoti, kaip čia išsisukus.

naudoti kitą valdiklį, kaip Atmega8, turintį 20 kojų (atsimeta kvarcas ir reset). 5 kojos jau daug. bet ir jų gali netyčia neužtekti, kai taip švaistoma.

lėtiems išvedimams, kaip kad 7segmentų matricai puikiai tinka serial in – parallel out 74hc164 mikrė. jai valdyti tereikia 2 išvadų clock ir data ir vualia, ištaupoma tik 6 pinai šiokio tokio greičio ir flash sąskaita. jei labai reikia, galima jas jungti nuosekliai ir gauti net 16 išvadų iš 2. kadangi ši mikrė gali source`inti iki 75 mA srovės per visus išvadus, to tikrai pakanka užkurti 7 segmetų LED.  (nesuprantu kodėl jie vadinami 7 segm, kai yra 8, bet tai gal kitam kartui).

shift-0011

jei reikia įėjimų pin sukurti, galima naudoti mygtukų matricą, tik jos atveju reikia mažiausiai 5 išvadų, kad gautumei naudos. arba naudoti parallel in – serial out registrą 74hc165. jam pakurti reikės 3 išvadų clock, data, enable, o išlošiame 8įvadus. visai neblogai sakyčiau. jei baisiai reikia, galima jungti nuosekliai ir gauti 16! iš 3 (mygtukų matrica tokį gėrį pasiekia tik su 8 pinais). žinoma vėl greičio, flash`o ir vietos plokštėje sąskaita, bet negi gaila geram daiktui (ko ne ką mažiau surytų ir mygtukų matrica).

reikia dar pridurti, kad 74hc164 neturėtų būti naudojama relėms junginėti. na ką reiškia neturėtų… dėl didelio greičio, ji nespės pakeisti būklės, kol uC praleis reikalingą seriją pro registrą, bet tai jei dažnai tai įvyks, maža kas.

tam ir vėl į pagalbą 74hc mikrė, šį kartą 74hc574. Octal D-type flip-flop. kodėl būtent šita? tiesioginis išėjimas, 3-state. iš esmės tai buferis: pratrauki duomenis per 164 ir tada meti clock ant šitos ir ji išveda. ar ne paprasta? ir nebūna bereikalingo virpėjimo/drebėjimo/mirgėjimo. tiesa tam prireiks atskiros mikrovaldiklio kojos.

taigi jau galima valdyti daug relių ir dar mygtukų.

o štai dar vienas hint.

jei naudojama kelios mikroschemos, tai joms atskirai duodamas Clock, o Data suimama į vieną. tarkim 7 segmentų matrica + relių išvadai + mygtukų begalybė:  3 clock + 1 data. tik reikia atskirti hc164 ir hc165 data pinus tarkim per kokią 10k varžą, nes kitaip draivinant 164, bus supleškinama 165.

dar labai tinkamas panaudojimas simbolių LCD. ir užtenka 3 išvadų: clock, data, bei gal kas parašys koks kitas?

shift-002

štai kaip atrodo mano mygtukų matricikė valdoma šift registru:

hc165-001

hc165-002

hc165-003

ir C kodas valdymui RAR

į main ciklą reiktų primesti:

#include “global.h”
#include “serial_push.h”
#include “lcd.h”

LCD_PORT&=~((1<<E_PIN)|(1<<SERIAL_LCD_CLK)|(1<<L_PIN));
LCD_DDR=(1<<E_PIN)|(1<<SERIAL_LCD_CLK)|(1<<L_PIN);
D_PORT&=~(1<<DATA);
D_DDR&=~(1<<DATA);
PUSH_DDR|=(1<<PL_PIN);
PUSH_DDR|=(1<<SERIAL_PUSH_CLK);
PUSH_PORT&=~(1<<SERIAL_PUSH_CLK);

tags: , , ,
posted in Elektronika, Mikrovaldikliai by admin

Follow comments via the RSS Feed | Leave a comment | Trackback URL

Leave Your Comment

 
Copyright © freshmake85

Powered by Wordpress.

Design by Bingo - The Web Design Experts.

Creative Commons licenzija
Code, images, text, sound, video by http://freshmake85.myftp.org is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.