SlideShare a Scribd company logo
DIGITALNI ULAZI I IZLAZI
Tehničko veleučilište u Zagrebu
Elektrotehnički odjel
Stipe Predanić
20.10.2016
Elektronička računala i računalna oprema
Mikroprocesor i mikroupravljač
● Za upotrebljivo računalo potreban je
– CPU (centralna procesorska jedinica)
– ROM s programom (barem osnovnim)
– RAM za privremeno spremanje podataka
– sklopovi za rad s vanjskim jedinicama
● Mikroprocesor je uobičajeno samo CPU
● Mikroupravljač je cijelo računalo “sve u jednom”
– stoga su nam korisniji za izradu raznih uređaja
Digitalni ulazi i izlazi
● Mikroupravljač je potrebno spojiti na vanjske jedinice
– bez ulaza i izlaza nema smisla raditi računalo
● što je potrebno?
– nekakav ulaz, obrada podatka, izlaz
– ulazna jedinica -> CPU -> izlazna jedinica
● Ulazi i izlazi omogućuju mikroupravljaču postavljanje ili
čitanje stanja iz vanjskog svijeta
Ulazi
● Kakvi mogu biti ulazi u mikroupravljaču?
– Digitalni
– jedan pin predstavlja jedan bit. Niz bitova (ili cijeli port) se
mogu koristiti kao grupa, ako zatreba
● Analogni
– ugrađena podrška za analogno-digitalnu konverziju
– rezolucija je definirana hardverskom podrškom u samo
mikroupravljaču
● Što ako je potrebna finija rezolucija?
– upotrebljava se vanjski AD pretvornik, te se koriste digitalni
pinovi kao ulaz, ili se podaci šalju preko nekog od protokola
serijske komunikacie (SPI, I2C, TTL serial)
Izlazi
● Kakvi mogu biti izlazi na mikroupravljaču?
– Digitalni
● Obični izlazi, jedna izlazna nožina (eng. pin) je jedan bit. Može
se koristiti i niz bitova (ili cijela vanjska vrata eng. port) kao
grupa, ako zatreba.
– Analogni
● Dvije opcije:
– ugrađeni DA pretvornik daje vanjsku vrijednost
– analogni izlaz se simulira kroz širinsko impulsnu modulaciju i
(ako je potrebno) dodatne sklopove
Nožice na mikroupravljaču
● Nožice koje služe kao digitalni ulazi i izlazi se često
nazivaju i GPIO (eng. General Purpose Input/Output), jer
je njihova namjena općenita
● Neke nožice mogu imati i specifične zadaće poput serijske
komunikacije ili rada sa sklopovski ugrađenim brojačima.
Tad treba paziti kako se ne bi koristile nožice u dvije ili više
svrha.
ŠIM
● Širinsko impulsna modulacija ŠIM (eng Pulse Width
Modulation - PWM)
● korištenjem digitalnog signala dovoljno visoke frekvencije
u kojem se kontrolira odnos impuls/pauza postiže se
modulacija na željenom nivou analognog signala
● iako je izlaz zapravo digitalan, spojeni sklopovi dobivaju
srednju vrijednost odnosa te je moguće dobiti kompletan
analogni spektar
Mikroupravljač i ulazi/izlazi
● Ovisno od serije mikroupravljača potrebno je definirati koji
su portovi ulazi a koji su izlazi. Smjer (ulaz odnosno izlaz)
je moguće mjenjati tijekom rada programa, ali u bilo kojem
trenutku port je ili ulaz ili izlaz.
● Neki su mikroupravljači specifični, pa podržavaju oba
smjera odjednom. Takav je i Intel 8051, koji ćemo koristiti
na laboratorijskim vježbama.
Građa 8051 portova – idejna slika
Slika preuzeta s: http://www.mikroe.com/chapters/view/65/chapter-2-8051-microcontroller-architecture/
Građa 8051 portova - građa
Ugrađeni pull-up
otpornici
Slika preuzeta iz datasheeta.
Građa 8051 portova - građa
Zapiši 0
Zapiši 1 Pročitaj 1
Pročitaj 0
Slika preuzeta s: http://exploreembedded.com/wiki/1.8051_Architecture
Ulaz - spajanje tipkala
● Tipkalo
– Mehanički elementi koji zatvaraju strujni krug
● Izgled i stvarna namjena su nevažni, čim ispunjava gornji opis
Slike preuzete sa stranica trgovaca elektroničkim komponentama: Chipoteka, Kronos, Forma elektronika
Ulaz - spajanje tipkala
● Tipkalo
– Zbog same izrade nemoguć je automatski prijelaz iz jednog
u drugo stanje
● Problem bouncinga
Slika preuzeta s: http://www.ganssle.com/debouncing.htm
Ulaz - spajanje tipkala
● Tipkalo
– Debouncing sklopovi
– Debouncing se može riješiti i programski
● U tom slučaju sve izračune poželjno je obaviti u maksimalno
50ms, jer toliko kašnjenje korisnik sklopa “ne osjeti”
Slika preuzeta s: http://www.ganssle.com/debouncing.htm
Ulaz - spajanje tipkala
● Tipkalo
– Proteus i (de)bouncing
● Proteus ne simulira bouncing, stoga nije nužan
● Shema se može pojednostaviti!
– Ali ne previše!
Primjer: direktan spoj na +5V (ili masu, ako bi se tako
projektant odlučio) nije dobar, jer napon na nožici 32 nije
definiran kad je sklopka otvorena (u Proteusu prikazano
sivom bojom). Sjetimo se CMOS sklopova s Digitalnih
sklopova.
Slike preuzete s: materijali mr.sc.Dražena Ćike
Ulaz - spajanje tipkala
● Tipkalo
– Uobičajena tehnika je spajanje ulaza preko otpornika na višu
naponsku razinu (pull-up), a spoj ulaza i otpornika preko
tipke se spaja na masu.
– Vidljivo je kako su u oba slučaja vrijednosti definirane
Slike preuzete s: materijali mr.sc.Dražena Ćike
Ulaz - spajanje tipkala
● Tipkalo
– Što bi se dogodilo ako bi spojili otpornik kao pull-down (spoj
prema masi)?
– Može se primjetiti kako je nožica 32 u oba slučaja na visokoj
razini (označeno crveno)
● Razlog: 8051 nema postavke smjera (ulaz ili izlaz), te se
nožica uvijek ponašaju i kao izvor napona.
Dva invertora čine odvojni sklop (eng.
Buffer) kako nožica ne bi napajala otpornik
Slike preuzete s: materijali mr.sc.Dražena Ćike
Izlaz - spajanje LE dioda
● Svjetleća dioda
– eng. Light Effect Diode – LED
– Dioda koja svjetli u određenoj boji
– Važni parametri:
● Struja potrebna kako bi LED svjetlila maksimalnom jačinom
(“radna struja”)
– Tipične vrijednosti: 20mA standardne LED, 2mA štedljive LED
● Napon koljena (minimalni napon u propusnom smjeru kako bi
dioda vodila struju)
– Tipične vrijednosti: oko 1.5 do 2V za žutu i crvenu LED, oko 3V
za plavu i bijelu
Izlaz - spajanje LE dioda
● Svjetleća dioda
Slike preuzete s: http://www.electronics.dit.ie/staff/tscarff/DT089_Physical_Computing_1/LEDS/Leds.htm
Izlaz - spajanje LE dioda
● Svjetleća dioda
– Potrebno je spojiti otpornik koji će ograničiti maksimalnu struju
kroz LED, te koji će preuzeti “višak” napona
– Primjer izračuna za
● VS
= 5V
● VF
= 2V
● IF
= 20mA
● RS
= 150 ohma
● Veći otpor bi smanjio struju, jer je
pad napona isti, ali bi I LED slabije
svjetlila
● Snaga koja se pretvara u toplinu
P = I2
R = 60 mW
Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
Izlaz - spajanje LE dioda
● Svjetleća dioda
– LED se može direktno pogoniti s nožice mikroupravljača, ali
treba paziti na maksimalne struje koje nožica
mikroupravljača može primiti ili dati.
● Nožica može biti
– Izvor struje (eng. current source), primjer je nožica 21
– Ponor struje (eng. current sink), primjer je nožica 28
Slike preuzete s: materijali mr.sc.Dražena Ćike
Izlaz - spajanje LE dioda
● Svjetleća dioda
– Vrijednosti koje je potrebno postaviti na mikroupravljaču
kako bi LED svjetlila:
● Mikroupravljač izvor struje (eng. current source) – nožica u
visokoj razini (logička 1)
– važno je pripaziti na maksimalnu struju koju kroz jednu nožicu
može dati mikroupravljač
● Mikroupravljač ponor struje (eng. current sink) – nožica u
niskoj razini (logička 0)
– Opet je važno pripaziti na maksimalnu struju, iako
mikroupravljači u pravilu mogu podnijeti veću struju ponora nego
dati struju izvora
– Važno: vrijednost na nožici niska razina (logička 0), a LED
svjetli?
● Nekad se elementi uključuju s “0”, a isključuju s “1”
Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
Izlaz - spajanje LE dioda
● Svjetleća dioda
– Potrebno je biti oprezan ako se želi spojiti više LED na isti
pin
● (pre)velike struje
● Paziti na zasebnost svake LED, ne spajati paralelno s jednim
otpornikom ili čak serijski
– Problemi kad pregori jedna
● Ako je potrebno, spojiti preko tranzistora
Slika preuzeta s: http://forum.arduino.cc/index.php?topic=8320.0
Izlaz – spajanje na 7 segmentni display
● 7 segmentni display
– Nije ništa drugo doli 7 LED u jednom kućištu, s zajedničkom
katodom ili anodom
– Moguće pogoniti:
● direktno iz mikroupravljača
– Potrebno je barem 7 linija s mikroupravljača, paziti na struju
● kroz BCD dekoder za 7 segmentni display
– Potrebne su 4 linije s mikroupravljača, nije potrebno paziti na
struju
● Kroz posmačne registre (eng. shift) za izlaz
– Potrebno je 3 linije s mikroupravljača, struja je nevažna
Izlaz – spajanje uređaja s većim potrebama struje
● Ako je potrebno spojiti uređaj koji ima veće potrebe za
strujom, koristimo tranzistore ili odgovorajuće sklopove za
pokretanje (eng. driver)
Slike preuzete s: http://generichid.sourceforge.net/pwm.htm ; http://electronics.stackexchange.com/questions/17116/how-to-drive-a-mosfet-with-an-optocoupler
Izlaz – spajanje releja
● Releji se koriste kad je teret kojim se upravlja naponski i
strujno izvan raspona rada mikroupravljača
– Kako releji zahtjevaju dosta struje, potrebno ih je upogoniti s
nekom vrstom tranzistora
– Dioda na slici se naziva flyback dioda, i spriječava nagli
porast napona nakon isključenja zavojnice releja
Slike preuzete s: https://www.pantechsolutions.net/microcontroller-boards/relay-interfacing-with-8051-slicker http://www.mikroe.com/chapters/view/69/chapter-6-examples/
Izlaz – spajanje na H-most
● Ako mikroupravljač treba upravljati sklopom ili opremom
koja ima potrebu za promjenom polova, koristi se H-most
– Npr. Motor koji bi se trebao vrtjeti na jednu ili drugu stranu
Slika preuzeta s: http://developer.mbed.org/users/4180_1/notebook/relays1/
Ulaz 1 Ulaz 2 Rezultat
niska razina (0) niska razina (0) motor se ne vrti
niska razina (0) visoka razina (1) motor se vrti na jednu stranu (stezaljka A+, B-)
visoka razina (1) niska razina (0) motor se vrti na drugu stranu (stezaljka A-, B+)
visoka razina (1) visoka razina (1) motor se ne vrti
Galvansko odvajanje
● S obzirom na naponske razine i struje kod rada s
tranzistorima, relejima i mostovima, možda bi bilo pametno
odvojiti mikroupravljač od tih nepoćudnih stvari
– Galvansko odvajanje (strujno odvajanje) obavlja se pomoću
optičkog izolatora (optoisolator) odnosno sprežnika (eng.
Optocoupler)
– Radi se o paru LED i fototranzistor u jednom kućištu
– Sklopovi su razdvojeni strujno i naponski
Slike preuzete s:http://320volt.com/opto-kuplor-nedir-nasil-calisir-cesitleri/
Rad s portovima – maskiranje bitova
● Registri mikroupravljača mogu biti adresabilni
– Po bitu
– Po byteu
● Nerijetko se registri koji su 16 (ili više) bita dijele u dva (ili više) 8
bitna registra
– Po cijelom registru (ako se radi o 16 ili više bitnom registru)
● Kako u registru koji nije adresabilan po bitu promjeniti samo
jedan bit?
– Koristeći maskiranje bitova pomoću bitwise operatora
● Bitwise operatori:
– I, AND &
– ILI, OR |
– NE, NOT ~
– XOR ^
Rad s portovima – maskiranje bitova
● Postavljanje (setiranje) bita u registru/varijabli
REG = REG | 0b00010000
npr. REG 11000100 x ILI 1 = 1
| 0b00010000 x ILI 0 = x
= 11010100
● Brisanje bita (resetiranje) u registru/varijabli
REG = REG & 0b11101111
npr. REG 11010100 x & 1 = x
& 0b11101111 x & 0 = 0
= 11000100
Rad s portovima – maskiranje bitova
● Invertiranje bita u registru/varijabli
REG = REG ^ 0b00010000
npr. REG 11000100 REG 11010100 0 XOR 1 = 1
^ 0b00010000 ^ 0b00010000 1 XOR 1 = 0
= 11010100 11000100 x XOR 0 = x
● Invertiranje svih bitova osim jednog registru/varijabli
REG = REG ^ 0b11101111
npr. REG 11010100
^ 0b11101111
= 00111011
Rad s portovima – maskiranje bitova
● Kako promjeniti n-ti bit u registru?
REG = REG ? (1 << n );
– ? je bitwise operacija (može po potrebi biti složena)
– Postupak očekuje:
● Stavljanje 1 u privremenu memoriju (neki od slobodnih registara
opće namjene)
● Pomicanje (shift) za n mjesta
– Npr 1 << 5 rezultira s 0b00100000
– Paziti na numeraciju: 1 << 0 je zapravo isti broj
– Kod operacije I ( & ) potrebno je invertirati dobiveni posmak
REG = REG & ~ (1 << n);
00000001 → 00010000 → 11101111
Rad s portovima – maskiranje bitova
● Kako promjeniti nekoliko bitova odjednom?
– Postupak je isti!
REG = REG & 0b11110000
● Briše (resetira) zadnja 4 bita
REG = (REG & 0b11110000) | (1 << 1)
● Briše zadnja 4 bita i odmah postavlja predzadnji bit u 1
Izlaz – spajanje na posmačni registar
● Jednostavno proširenje broja izlaza na svakom
mikroupravljaču se obavlja korištenjem posmačnog
registra koji ima serijski ulaz i paralelni izlaz
– Primjer takvog je 74HC595
Slika preuzeta s: datasheet proizvođača
Paralelni izlazi
Serijski izlaz za kaskadiranje
Master reset (mora biti 1)
Clock DATA (podatkovni clock)
Output enable (mora biti 1)
Clock za izlaz (LATCH prema izlazima)
Podatkovni (data) ulaz
Paralelni izlaz (0)
Izlaz – spajanje na posmačni registar
● Ideja rada:
Slika preuzeta s: https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/the-74hc595-shift-register
Izlaz – spajanje na posmačni registar
● Primjer spajanja na mikroupravljač:
– Potrebne su samo 3 linije na mikroupravljaču, za upravljanje
s 8 linija izlaza
Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
Izlaz – spajanje na posmačni registar
● Primjer programskog koda:
for (i=0; i<8; i++) {
DATA=podatak & 1; // maskiranje kako bi ostao samo zadnji bit
SHIFT_CLOCK=1;
delay(); // malo kašnjenje
SHIFT_CLOCK=0;
podatak=podatak>>1;// pomakni (shift) podatak za 1 mjesto udesno
}
LATCH_CLOCK=1;
delay();
LATCH_CLOCK=0;
Izlaz – spajanje na posmačni registar
● Dobivanje 8 linija za 3 linije
nije puno, ali je moguće
kaskadirati shift registre,
odnosno povezati ih u
lanac.
– Tad za 3 linije na
mikroupravljaču dobivamo
16, 24, 32 izlazne linije,
nauštrb brzine (jer treba
sve prebaciti u posmačni
registar)
Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
Ulaz – spajanje na posmačni registar
● Sličan postupak kao kod izlaza, ali se koriste paralelni
ulazi i serijski izlaz
– 74HC597, CD4021
Slike preuzete s: datasheet proizvođača, http://www.arduino.cc/en/Tutorial/ShiftIn
Ulaz – spajanje na posmačni registar
● Kaskadiranje ulaza
Slike preuzete s: http://arduino.ru/forum/apparatnye-voprosy/uvelichenie-kol-knopok-74hc597-kaskadirovanie
Posmačni registri
● Postoji puno različitih modela posmačnih registara
– Npr 74198 i 7199 imaju i serijske i paralelne - ulaze i izlaze
– Važno je razumjeti potrebe
● IZLAZI : serijski ulaz → paralelni izlaz
● ULAZI : paralelni ulaz → serijski izlaz
– Preko posmačnih registara moguće je primiti ili poslati
podatke na sve uređaje (nema razlike u funkcionalnosti svih
danih shema) ali nauštrb vremena potrebnog da se podaci
prebace između mikroupravljača i shift registra.

More Related Content

What's hot (7)

line following robot
line following robotline following robot
line following robot
 
Basic Electronic Components used in PCB Designing
Basic Electronic Components used in PCB DesigningBasic Electronic Components used in PCB Designing
Basic Electronic Components used in PCB Designing
 
Les 10 principes essentiels de l’enseignement du projet urbain par Michèle Tr...
Les 10 principes essentiels de l’enseignement du projet urbain par Michèle Tr...Les 10 principes essentiels de l’enseignement du projet urbain par Michèle Tr...
Les 10 principes essentiels de l’enseignement du projet urbain par Michèle Tr...
 
Buzzer
BuzzerBuzzer
Buzzer
 
Electronic components
Electronic componentsElectronic components
Electronic components
 
electronic componets
electronic componetselectronic componets
electronic componets
 
ONDULEUR.pptx
ONDULEUR.pptxONDULEUR.pptx
ONDULEUR.pptx
 

Similar to [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)

"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK""Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
Faris Karić
 
Automatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenjaAutomatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenja
Darbob
 

Similar to [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) (11)

[ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016 [ERRO] Predavanje: Napajanje uređaja 8.12.2016
[ERRO] Predavanje: Napajanje uređaja 8.12.2016
 
Maturski rad.pptx
Maturski rad.pptxMaturski rad.pptx
Maturski rad.pptx
 
"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK""Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
"Measurement of 0.4 kV network grid using DAQ and MATLAB / SIMULINK"
 
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 [ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
 
[ERRO] Predavanje: Komunikacija s mikroupravljačem 8.12.2016
[ERRO] Predavanje: Komunikacija s mikroupravljačem 8.12.2016 [ERRO] Predavanje: Komunikacija s mikroupravljačem 8.12.2016
[ERRO] Predavanje: Komunikacija s mikroupravljačem 8.12.2016
 
Sklopni_aparati_-__Izvedbe_i_karakteristike_.pptx
Sklopni_aparati_-__Izvedbe_i_karakteristike_.pptxSklopni_aparati_-__Izvedbe_i_karakteristike_.pptx
Sklopni_aparati_-__Izvedbe_i_karakteristike_.pptx
 
[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016
 
Tehničari_Integrirani-sklopovi_3-razred.ppsx
Tehničari_Integrirani-sklopovi_3-razred.ppsxTehničari_Integrirani-sklopovi_3-razred.ppsx
Tehničari_Integrirani-sklopovi_3-razred.ppsx
 
Automatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenjaAutomatizacija industrijskih postrojenja
Automatizacija industrijskih postrojenja
 
Osi Referentni Model
Osi Referentni ModelOsi Referentni Model
Osi Referentni Model
 
Informatika
InformatikaInformatika
Informatika
 

More from Stipe Predanic

More from Stipe Predanic (20)

Osnove bežičnih mreža - Predavanje: Topologije
Osnove bežičnih mreža - Predavanje: TopologijeOsnove bežičnih mreža - Predavanje: Topologije
Osnove bežičnih mreža - Predavanje: Topologije
 
Osnove bežičnih mreža - Predavanje 4: 802.11 protokoli
Osnove bežičnih mreža - Predavanje 4: 802.11 protokoli Osnove bežičnih mreža - Predavanje 4: 802.11 protokoli
Osnove bežičnih mreža - Predavanje 4: 802.11 protokoli
 
Osnove bežičnih mreža - Predavanje: Antene
Osnove bežičnih mreža - Predavanje: AnteneOsnove bežičnih mreža - Predavanje: Antene
Osnove bežičnih mreža - Predavanje: Antene
 
Osnove bežičnih mreža - Predavanje Bežične radiokomunikacije
Osnove bežičnih mreža - Predavanje Bežične radiokomunikacijeOsnove bežičnih mreža - Predavanje Bežične radiokomunikacije
Osnove bežičnih mreža - Predavanje Bežične radiokomunikacije
 
[ERRO] Predavanje: FPGA 12.1.2017
[ERRO] Predavanje: FPGA 12.1.2017 [ERRO] Predavanje: FPGA 12.1.2017
[ERRO] Predavanje: FPGA 12.1.2017
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita)
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
 

[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)

  • 1. DIGITALNI ULAZI I IZLAZI Tehničko veleučilište u Zagrebu Elektrotehnički odjel Stipe Predanić 20.10.2016 Elektronička računala i računalna oprema
  • 2. Mikroprocesor i mikroupravljač ● Za upotrebljivo računalo potreban je – CPU (centralna procesorska jedinica) – ROM s programom (barem osnovnim) – RAM za privremeno spremanje podataka – sklopovi za rad s vanjskim jedinicama ● Mikroprocesor je uobičajeno samo CPU ● Mikroupravljač je cijelo računalo “sve u jednom” – stoga su nam korisniji za izradu raznih uređaja
  • 3. Digitalni ulazi i izlazi ● Mikroupravljač je potrebno spojiti na vanjske jedinice – bez ulaza i izlaza nema smisla raditi računalo ● što je potrebno? – nekakav ulaz, obrada podatka, izlaz – ulazna jedinica -> CPU -> izlazna jedinica ● Ulazi i izlazi omogućuju mikroupravljaču postavljanje ili čitanje stanja iz vanjskog svijeta
  • 4. Ulazi ● Kakvi mogu biti ulazi u mikroupravljaču? – Digitalni – jedan pin predstavlja jedan bit. Niz bitova (ili cijeli port) se mogu koristiti kao grupa, ako zatreba ● Analogni – ugrađena podrška za analogno-digitalnu konverziju – rezolucija je definirana hardverskom podrškom u samo mikroupravljaču ● Što ako je potrebna finija rezolucija? – upotrebljava se vanjski AD pretvornik, te se koriste digitalni pinovi kao ulaz, ili se podaci šalju preko nekog od protokola serijske komunikacie (SPI, I2C, TTL serial)
  • 5. Izlazi ● Kakvi mogu biti izlazi na mikroupravljaču? – Digitalni ● Obični izlazi, jedna izlazna nožina (eng. pin) je jedan bit. Može se koristiti i niz bitova (ili cijela vanjska vrata eng. port) kao grupa, ako zatreba. – Analogni ● Dvije opcije: – ugrađeni DA pretvornik daje vanjsku vrijednost – analogni izlaz se simulira kroz širinsko impulsnu modulaciju i (ako je potrebno) dodatne sklopove
  • 6. Nožice na mikroupravljaču ● Nožice koje služe kao digitalni ulazi i izlazi se često nazivaju i GPIO (eng. General Purpose Input/Output), jer je njihova namjena općenita ● Neke nožice mogu imati i specifične zadaće poput serijske komunikacije ili rada sa sklopovski ugrađenim brojačima. Tad treba paziti kako se ne bi koristile nožice u dvije ili više svrha.
  • 7. ŠIM ● Širinsko impulsna modulacija ŠIM (eng Pulse Width Modulation - PWM) ● korištenjem digitalnog signala dovoljno visoke frekvencije u kojem se kontrolira odnos impuls/pauza postiže se modulacija na željenom nivou analognog signala ● iako je izlaz zapravo digitalan, spojeni sklopovi dobivaju srednju vrijednost odnosa te je moguće dobiti kompletan analogni spektar
  • 8. Mikroupravljač i ulazi/izlazi ● Ovisno od serije mikroupravljača potrebno je definirati koji su portovi ulazi a koji su izlazi. Smjer (ulaz odnosno izlaz) je moguće mjenjati tijekom rada programa, ali u bilo kojem trenutku port je ili ulaz ili izlaz. ● Neki su mikroupravljači specifični, pa podržavaju oba smjera odjednom. Takav je i Intel 8051, koji ćemo koristiti na laboratorijskim vježbama.
  • 9. Građa 8051 portova – idejna slika Slika preuzeta s: http://www.mikroe.com/chapters/view/65/chapter-2-8051-microcontroller-architecture/
  • 10. Građa 8051 portova - građa Ugrađeni pull-up otpornici Slika preuzeta iz datasheeta.
  • 11. Građa 8051 portova - građa Zapiši 0 Zapiši 1 Pročitaj 1 Pročitaj 0 Slika preuzeta s: http://exploreembedded.com/wiki/1.8051_Architecture
  • 12. Ulaz - spajanje tipkala ● Tipkalo – Mehanički elementi koji zatvaraju strujni krug ● Izgled i stvarna namjena su nevažni, čim ispunjava gornji opis Slike preuzete sa stranica trgovaca elektroničkim komponentama: Chipoteka, Kronos, Forma elektronika
  • 13. Ulaz - spajanje tipkala ● Tipkalo – Zbog same izrade nemoguć je automatski prijelaz iz jednog u drugo stanje ● Problem bouncinga Slika preuzeta s: http://www.ganssle.com/debouncing.htm
  • 14. Ulaz - spajanje tipkala ● Tipkalo – Debouncing sklopovi – Debouncing se može riješiti i programski ● U tom slučaju sve izračune poželjno je obaviti u maksimalno 50ms, jer toliko kašnjenje korisnik sklopa “ne osjeti” Slika preuzeta s: http://www.ganssle.com/debouncing.htm
  • 15. Ulaz - spajanje tipkala ● Tipkalo – Proteus i (de)bouncing ● Proteus ne simulira bouncing, stoga nije nužan ● Shema se može pojednostaviti! – Ali ne previše! Primjer: direktan spoj na +5V (ili masu, ako bi se tako projektant odlučio) nije dobar, jer napon na nožici 32 nije definiran kad je sklopka otvorena (u Proteusu prikazano sivom bojom). Sjetimo se CMOS sklopova s Digitalnih sklopova. Slike preuzete s: materijali mr.sc.Dražena Ćike
  • 16. Ulaz - spajanje tipkala ● Tipkalo – Uobičajena tehnika je spajanje ulaza preko otpornika na višu naponsku razinu (pull-up), a spoj ulaza i otpornika preko tipke se spaja na masu. – Vidljivo je kako su u oba slučaja vrijednosti definirane Slike preuzete s: materijali mr.sc.Dražena Ćike
  • 17. Ulaz - spajanje tipkala ● Tipkalo – Što bi se dogodilo ako bi spojili otpornik kao pull-down (spoj prema masi)? – Može se primjetiti kako je nožica 32 u oba slučaja na visokoj razini (označeno crveno) ● Razlog: 8051 nema postavke smjera (ulaz ili izlaz), te se nožica uvijek ponašaju i kao izvor napona. Dva invertora čine odvojni sklop (eng. Buffer) kako nožica ne bi napajala otpornik Slike preuzete s: materijali mr.sc.Dražena Ćike
  • 18. Izlaz - spajanje LE dioda ● Svjetleća dioda – eng. Light Effect Diode – LED – Dioda koja svjetli u određenoj boji – Važni parametri: ● Struja potrebna kako bi LED svjetlila maksimalnom jačinom (“radna struja”) – Tipične vrijednosti: 20mA standardne LED, 2mA štedljive LED ● Napon koljena (minimalni napon u propusnom smjeru kako bi dioda vodila struju) – Tipične vrijednosti: oko 1.5 do 2V za žutu i crvenu LED, oko 3V za plavu i bijelu
  • 19. Izlaz - spajanje LE dioda ● Svjetleća dioda Slike preuzete s: http://www.electronics.dit.ie/staff/tscarff/DT089_Physical_Computing_1/LEDS/Leds.htm
  • 20. Izlaz - spajanje LE dioda ● Svjetleća dioda – Potrebno je spojiti otpornik koji će ograničiti maksimalnu struju kroz LED, te koji će preuzeti “višak” napona – Primjer izračuna za ● VS = 5V ● VF = 2V ● IF = 20mA ● RS = 150 ohma ● Veći otpor bi smanjio struju, jer je pad napona isti, ali bi I LED slabije svjetlila ● Snaga koja se pretvara u toplinu P = I2 R = 60 mW Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
  • 21. Izlaz - spajanje LE dioda ● Svjetleća dioda – LED se može direktno pogoniti s nožice mikroupravljača, ali treba paziti na maksimalne struje koje nožica mikroupravljača može primiti ili dati. ● Nožica može biti – Izvor struje (eng. current source), primjer je nožica 21 – Ponor struje (eng. current sink), primjer je nožica 28 Slike preuzete s: materijali mr.sc.Dražena Ćike
  • 22. Izlaz - spajanje LE dioda ● Svjetleća dioda – Vrijednosti koje je potrebno postaviti na mikroupravljaču kako bi LED svjetlila: ● Mikroupravljač izvor struje (eng. current source) – nožica u visokoj razini (logička 1) – važno je pripaziti na maksimalnu struju koju kroz jednu nožicu može dati mikroupravljač ● Mikroupravljač ponor struje (eng. current sink) – nožica u niskoj razini (logička 0) – Opet je važno pripaziti na maksimalnu struju, iako mikroupravljači u pravilu mogu podnijeti veću struju ponora nego dati struju izvora – Važno: vrijednost na nožici niska razina (logička 0), a LED svjetli? ● Nekad se elementi uključuju s “0”, a isključuju s “1” Slika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation
  • 23. Izlaz - spajanje LE dioda ● Svjetleća dioda – Potrebno je biti oprezan ako se želi spojiti više LED na isti pin ● (pre)velike struje ● Paziti na zasebnost svake LED, ne spajati paralelno s jednim otpornikom ili čak serijski – Problemi kad pregori jedna ● Ako je potrebno, spojiti preko tranzistora Slika preuzeta s: http://forum.arduino.cc/index.php?topic=8320.0
  • 24. Izlaz – spajanje na 7 segmentni display ● 7 segmentni display – Nije ništa drugo doli 7 LED u jednom kućištu, s zajedničkom katodom ili anodom – Moguće pogoniti: ● direktno iz mikroupravljača – Potrebno je barem 7 linija s mikroupravljača, paziti na struju ● kroz BCD dekoder za 7 segmentni display – Potrebne su 4 linije s mikroupravljača, nije potrebno paziti na struju ● Kroz posmačne registre (eng. shift) za izlaz – Potrebno je 3 linije s mikroupravljača, struja je nevažna
  • 25. Izlaz – spajanje uređaja s većim potrebama struje ● Ako je potrebno spojiti uređaj koji ima veće potrebe za strujom, koristimo tranzistore ili odgovorajuće sklopove za pokretanje (eng. driver) Slike preuzete s: http://generichid.sourceforge.net/pwm.htm ; http://electronics.stackexchange.com/questions/17116/how-to-drive-a-mosfet-with-an-optocoupler
  • 26. Izlaz – spajanje releja ● Releji se koriste kad je teret kojim se upravlja naponski i strujno izvan raspona rada mikroupravljača – Kako releji zahtjevaju dosta struje, potrebno ih je upogoniti s nekom vrstom tranzistora – Dioda na slici se naziva flyback dioda, i spriječava nagli porast napona nakon isključenja zavojnice releja Slike preuzete s: https://www.pantechsolutions.net/microcontroller-boards/relay-interfacing-with-8051-slicker http://www.mikroe.com/chapters/view/69/chapter-6-examples/
  • 27. Izlaz – spajanje na H-most ● Ako mikroupravljač treba upravljati sklopom ili opremom koja ima potrebu za promjenom polova, koristi se H-most – Npr. Motor koji bi se trebao vrtjeti na jednu ili drugu stranu Slika preuzeta s: http://developer.mbed.org/users/4180_1/notebook/relays1/ Ulaz 1 Ulaz 2 Rezultat niska razina (0) niska razina (0) motor se ne vrti niska razina (0) visoka razina (1) motor se vrti na jednu stranu (stezaljka A+, B-) visoka razina (1) niska razina (0) motor se vrti na drugu stranu (stezaljka A-, B+) visoka razina (1) visoka razina (1) motor se ne vrti
  • 28. Galvansko odvajanje ● S obzirom na naponske razine i struje kod rada s tranzistorima, relejima i mostovima, možda bi bilo pametno odvojiti mikroupravljač od tih nepoćudnih stvari – Galvansko odvajanje (strujno odvajanje) obavlja se pomoću optičkog izolatora (optoisolator) odnosno sprežnika (eng. Optocoupler) – Radi se o paru LED i fototranzistor u jednom kućištu – Sklopovi su razdvojeni strujno i naponski Slike preuzete s:http://320volt.com/opto-kuplor-nedir-nasil-calisir-cesitleri/
  • 29. Rad s portovima – maskiranje bitova ● Registri mikroupravljača mogu biti adresabilni – Po bitu – Po byteu ● Nerijetko se registri koji su 16 (ili više) bita dijele u dva (ili više) 8 bitna registra – Po cijelom registru (ako se radi o 16 ili više bitnom registru) ● Kako u registru koji nije adresabilan po bitu promjeniti samo jedan bit? – Koristeći maskiranje bitova pomoću bitwise operatora ● Bitwise operatori: – I, AND & – ILI, OR | – NE, NOT ~ – XOR ^
  • 30. Rad s portovima – maskiranje bitova ● Postavljanje (setiranje) bita u registru/varijabli REG = REG | 0b00010000 npr. REG 11000100 x ILI 1 = 1 | 0b00010000 x ILI 0 = x = 11010100 ● Brisanje bita (resetiranje) u registru/varijabli REG = REG & 0b11101111 npr. REG 11010100 x & 1 = x & 0b11101111 x & 0 = 0 = 11000100
  • 31. Rad s portovima – maskiranje bitova ● Invertiranje bita u registru/varijabli REG = REG ^ 0b00010000 npr. REG 11000100 REG 11010100 0 XOR 1 = 1 ^ 0b00010000 ^ 0b00010000 1 XOR 1 = 0 = 11010100 11000100 x XOR 0 = x ● Invertiranje svih bitova osim jednog registru/varijabli REG = REG ^ 0b11101111 npr. REG 11010100 ^ 0b11101111 = 00111011
  • 32. Rad s portovima – maskiranje bitova ● Kako promjeniti n-ti bit u registru? REG = REG ? (1 << n ); – ? je bitwise operacija (može po potrebi biti složena) – Postupak očekuje: ● Stavljanje 1 u privremenu memoriju (neki od slobodnih registara opće namjene) ● Pomicanje (shift) za n mjesta – Npr 1 << 5 rezultira s 0b00100000 – Paziti na numeraciju: 1 << 0 je zapravo isti broj – Kod operacije I ( & ) potrebno je invertirati dobiveni posmak REG = REG & ~ (1 << n); 00000001 → 00010000 → 11101111
  • 33. Rad s portovima – maskiranje bitova ● Kako promjeniti nekoliko bitova odjednom? – Postupak je isti! REG = REG & 0b11110000 ● Briše (resetira) zadnja 4 bita REG = (REG & 0b11110000) | (1 << 1) ● Briše zadnja 4 bita i odmah postavlja predzadnji bit u 1
  • 34. Izlaz – spajanje na posmačni registar ● Jednostavno proširenje broja izlaza na svakom mikroupravljaču se obavlja korištenjem posmačnog registra koji ima serijski ulaz i paralelni izlaz – Primjer takvog je 74HC595 Slika preuzeta s: datasheet proizvođača Paralelni izlazi Serijski izlaz za kaskadiranje Master reset (mora biti 1) Clock DATA (podatkovni clock) Output enable (mora biti 1) Clock za izlaz (LATCH prema izlazima) Podatkovni (data) ulaz Paralelni izlaz (0)
  • 35. Izlaz – spajanje na posmačni registar ● Ideja rada: Slika preuzeta s: https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/the-74hc595-shift-register
  • 36. Izlaz – spajanje na posmačni registar ● Primjer spajanja na mikroupravljač: – Potrebne su samo 3 linije na mikroupravljaču, za upravljanje s 8 linija izlaza Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
  • 37. Izlaz – spajanje na posmačni registar ● Primjer programskog koda: for (i=0; i<8; i++) { DATA=podatak & 1; // maskiranje kako bi ostao samo zadnji bit SHIFT_CLOCK=1; delay(); // malo kašnjenje SHIFT_CLOCK=0; podatak=podatak>>1;// pomakni (shift) podatak za 1 mjesto udesno } LATCH_CLOCK=1; delay(); LATCH_CLOCK=0;
  • 38. Izlaz – spajanje na posmačni registar ● Dobivanje 8 linija za 3 linije nije puno, ali je moguće kaskadirati shift registre, odnosno povezati ih u lanac. – Tad za 3 linije na mikroupravljaču dobivamo 16, 24, 32 izlazne linije, nauštrb brzine (jer treba sve prebaciti u posmačni registar) Slika preuzeta s: http://wiki.t-o-f.info/Arduino/ExempleD%C3%A9multiplexeurNum%C3%A9rique74HC595
  • 39. Ulaz – spajanje na posmačni registar ● Sličan postupak kao kod izlaza, ali se koriste paralelni ulazi i serijski izlaz – 74HC597, CD4021 Slike preuzete s: datasheet proizvođača, http://www.arduino.cc/en/Tutorial/ShiftIn
  • 40. Ulaz – spajanje na posmačni registar ● Kaskadiranje ulaza Slike preuzete s: http://arduino.ru/forum/apparatnye-voprosy/uvelichenie-kol-knopok-74hc597-kaskadirovanie
  • 41. Posmačni registri ● Postoji puno različitih modela posmačnih registara – Npr 74198 i 7199 imaju i serijske i paralelne - ulaze i izlaze – Važno je razumjeti potrebe ● IZLAZI : serijski ulaz → paralelni izlaz ● ULAZI : paralelni ulaz → serijski izlaz – Preko posmačnih registara moguće je primiti ili poslati podatke na sve uređaje (nema razlike u funkcionalnosti svih danih shema) ali nauštrb vremena potrebnog da se podaci prebace između mikroupravljača i shift registra.