osnove mikroprocesorske elektronikelpvo.fe.uni-lj.si/.../ome/predavanja/04/04_predavanje.pdfo s n o...

24
Osnove mikroprocesorske elektronike doc. dr. Marko Jankovec I/O linije

Upload: others

Post on 04-Feb-2021

4 views

Category:

Documents


0 download

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