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

41
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

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

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

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

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

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

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

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

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

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)

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

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

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

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.

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

Š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

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

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.

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

Građa 8051 portova – idejna slika

Slika preuzeta s: http://www.mikroe.com/chapters/view/65/chapter-2-8051-microcontroller-architecture/

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

Građa 8051 portova - građa

Ugrađeni pull-upotpornici

Slika preuzeta iz datasheeta.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Izlaz - spajanje LE dioda

● Svjetleća dioda

Slike preuzete s: http://www.electronics.dit.ie/staff/tscarff/DT089_Physical_Computing_1/LEDS/Leds.htm

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

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 = I2R = 60 mWSlika preuzeta s: http://electronics.stackexchange.com/questions/26134/confusion-with-voltage-drop-equation

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

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

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

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

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

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

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

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

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

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

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

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/

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

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

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

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/

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

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 ^

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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;

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

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

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

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

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

Ulaz – spajanje na posmačni registar

● Kaskadiranje ulaza

Slike preuzete s: http://arduino.ru/forum/apparatnye-voprosy/uvelichenie-kol-knopok-74hc597-kaskadirovanie

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

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.