osnove mikroprocesorske elektronikelpvo.fe.uni-lj.si/.../ome/predavanja/04/04_predavanje.pdfo s n o...
TRANSCRIPT
-
Osnove mikroprocesorske elektronikedoc. dr. Marko Jankovec
I/O linije
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 2
Periferija
13.3.2011I/O linije
Microschematic
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 3
Logični nivoji
13.3.2011I/O linije
„1“
„0“𝟎 𝑽
𝑼𝑪𝑪
𝑼𝑯𝒎𝒊𝒏
𝑼𝑳𝒎𝒂𝒙
„X“
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 4
Digitalni vhod - vzorčenje
13.3.2011I/O linije
• Zakasnitev je med 0 in 1 urin cikel• Impulz mora biti daljši kot 1 urin cikel za zanesljivo
detekcijo
Zgrešen impulz
Ura
Signal
PIN
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 5
Problem pri počasno spreminjajočem signalu
13.3.2011I/O linije
• Metastabilnost▫ Vzorčenje v času nedefiniranega stanja na vhodu lahko
povzroči oscilacije
Ura
Signal
PIN
Oscilacije
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 6
Schmittov prožilnik
13.3.2011I/O linije
Vhodni signal
Izhod Schmittovega prožilnika
Več urinih ciklov
manj od 1 urinega cikla
U
U
Uztp
Ustp
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 7
Sinhronizator13.3.2011I/O linije
Vhodni
signal
Shmittov
prožilnik
Sinhronizatorski
zapahi
PIN
PIN
zapah
Ura
Ura
Signal
PIN
Q1 Q2 Q3
Zakasnitev
Q1 Q2 Q3
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 8
Izločanje šuma (Noise Cancellation)
13.3.2011I/O linije
• Stanje PIN se prebere n-krat in izhodno stanje se postavi na ustrezen nivo le, če je vseh n prebranih vzorcev enakih
• Zakasnitev se s tem podaljša za dodatnih n-1 urinih ciklov
Ura
Signal
PIN
1 2 3 4
Zakasnitev
&
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 9
Konfiguracije I/O linij
13.3.2011I/O linije
• Simetrični izhod (Totem pole)▫ Tokovno zmogljiv izvor in ponor
• Izhod z odprtim ponorom (Open drain)▫ Potrebuje zunanji pull-up upor▫ Ne more biti izvor toka▫ Tokovno zmogljiv ponor toka▫ Se uporablja za „vezano in“ logiko v
kombinaciji z zunanjim zgornjim uporom
• Izhod z zgornjim uporom (Pull-up)▫ Šibek vir toka▫ Tokovno zmogljiv ponor toka▫ Se uporablja za „vezano in“ logiko
Ucc
Ucc
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 10
Konfiguracije I/O linij
13.3.2011I/O linije
• Izhod s spodnjim uporom (Pull-down)▫ Tokovno zmogljiv izvor toka▫ Šibek ponor toka▫ Se uporablja za „vezano ali“ logiko
• Visokoimpedančni vhod (HiZ)▫ Enosmerno ne bremeni izhoda▫ Vhodna kapacitivnost (~pF)▫ Ne sme biti nepriklopljen
Vedno priklopljen na nek drug digitalni izhod Kombinacija s pull-up ali pull-down uporom
• Zadrževalnik nivoja (Buss-keeper)▫ Zadržuje vhodni nivo, ko ni priključen
Ucc
Ucc
Ucc
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 11
Dvosmerne I/O linije s „pull-up“ upori
13.3.2011I/O linije
• Nekateri mikrokrmilniki imajo stalno vključene Pull-up upore▫ Intel 8051 serija
▫ Vsak vhod je hkrati tudi izhod
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 12
Pull-up upori
13.3.2011I/O linije
• Če je I/O pin definiran kot vhod▫ Vloga Pull-up upora je, da potegne nivo vhoda na VDD, če ga
zunanje vezje ne vleče drugam
▫ Nepriključen vhod brez pull-up upora ima visoko impedanco
pobira elektrostatične motnje iz okolice
zaradi nihanja povzroča dodatno porabo vezja
• Lahko ga uporabimo za branje stanja stikala/tipke
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 13
I/O linije pri Atmel AVR
13.3.2011I/O linije
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 14
Splošni I/O pin pri Atmel AVR
13.3.2011I/O linije
VDD VDD
VDD
Iout
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 15
Organizacija I/O linij pri Atmel AVR
13.3.2011I/O linije
• Organizirani so v skupine po 8-bitov (PORT)▫ Označeni s črkami: A, B, C, … (PORTA, PORTB, PORTC, …)▫ Vsak pin znotraj posameznega porta je označen s številkami
PORTA.3, PORTC.6
• PORTI so lahko vhodi ali izhodi• Vsaka linija ima lahko vključen Pull-up upor• Vsaka I/O linija ima poleg vloge splošnega vhoda ali
izhoda tudi specialne vloge▫ Proženje zunanje prekinitve▫ Priključitev na razne vhode/izhode periferije
• Specialna vloga neke linije se vključi avtomatsko z vključitvijo ustrezne periferije
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 16
Logični nivoji I/O linij pri ATMEL AVR
13.3.2011I/O linije
Parameter Pogoji Minimalno Maksimalno
Vhodni nizek nivoVdd = 1.8 V – 2.4 V -0.5 V 0.2 Vcc
Vdd= 2.4 V – 5.5 V -0.5 V 0.3 Vcc
Vhodni visok nivoVdd= 1.8 V – 2.4 V 0.7 Vcc Vcc + 0.5 V
Vdd = 2.4 V – 5.5 V 0.6 Vcc Vcc + 0.5 V
Izhodni nizek nivoIo = 20 mA, Vcc = 5V 0.9 V
Io = 10 mA, Vcc = 3V 0.6 V
Izhodni visok nivoIo = -20 mA, Vcc = 5V 4.2 V
Io = -10 mA, Vcc = 3V 2.3 V
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 17
Arhitektura splošne I/O linije pri AVR
13.3.2011I/O linije
DDR
PORT
PIN
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 18
Logična tabela nastavitev I/O linije
13.3.2011I/O linije
x – se nanaša na port (A, B, C, …)
n – se nanaša na linijo v portu (0,1,…,7)
• Vpis logične „1“ v register PINxn negira vrednost registra PORTxn, ne glede na vrednost DDRxn
• PUD – Pull Up Disable bit v registru MCUCR
DDRxn
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 19
Vhodni sinhronizator
13.3.2011I/O linije
• Proženje ure:▫ Prvi D- zapah sinhronizatorja je prožen na negativni prehod
▫ Drugi (PIN) D-zapah pa na pozitivni prehod
• Zakasnitev je zaradi sinhronizatorja podaljšana le za 0.5 cikla▫ Skupna zakasnitev je od : 0.5 – 1.5 urinega cikla
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 20
Težave pri zamenjavi smeri I/O linije
13.3.2011I/O linije
• Tristanjski vhod -> Izhod z visokim nivojem
▫ Vmesno stanje je lahko vhod s pull-up (DDRxn=0 PORTxn=1)▫ ali izhod na nizkem nivoju (DDRxn=1 PORTxn=0)
• Vhod s pull-up -> Izhod z nizkim stanjem
▫ Vmesno stanje je lahko visokoimpedančni vhod (DDRxn=0 PORTxn=0)▫ ali izhod na visokem nivoju (DDRxn=1 PORTxn=1)
DDRxn
DDRxn
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 21
Izvajanje kode – ukaz LDI
13.3.2011I/O linije
1110 KKKK DDDD KKKK
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 22
Izvajanje kode – Ukaz OUT
13.3.2011I/O linije
1011 1AAR RRRR AAAA
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 23
Izvajanje kode – Ukaz SBI
13.3.2011I/O linije
1001 1010 AAAA ABBB
-
O S N O V E M I K R O P R O C E S O R S K E E L E K T R O N I K E 24
Dostop do I/O registrov
13.3.2011I/O linije
• Postavitev I/O linije PORTA.3 na 1▫ PORTA=PORTA|0x08 oz. PORTA|=0x08,
• WinAVR (GNU C) brez optimizacij (11 ciklov)LDI R24, 0x22 ;Load immediateLDI R25, 0x00 ;Load immediateLDI R18, 0x22 ;Load immediateLDI R19, 0x00 ;Load immediateMOVW R30, R18 ;Copy register pairLDD R18, Z+0 ;Load indirect with displacementORI R18, 0x08 ;Logical OR with immediateMOVW R30, R24 ;Copy register pairSTD Z+0, R18 ;Store indirect with displacement
• WinAVR (GNU C) –O1 optimizacija (7 ciklov)LDI R30, 0x22 ;Load immediateLDI R31, 0x00 ;Load immediateLDD R24, Z+0 ;Load indirect with displacementORI R24, 0x08 ;Logical OR with immediateSTD Z+0, R24 ;Store indirect with displacement
• WinAVR (GNU C) –O2 optimizacija (3 cikli)IN R24, 0x02 ;Load immediateORI R24, 0x08 ;Logical OR with immediateOUT 0x02, R24 ;Store indirect with displacement
• WinAVR (GNU C) –O3, –Os optimizacija (1 cikel)SBI 0x02,3 ;Set bit in I/O register
TrueREAD/WHILE/WRITE
operation