320 likes | 447 Views
V/I prenosi. Dve napravi, na primer: mikrokrmilnik z drugim mikrokrmilnikom, mikrokrmilnik s tipkovnico, mikrokrmilnik s stikalom, mikrokrmilnik z ventilom, .... načeloma komunicirata na enega od dveh načinov: brez usklajevanja (“neusklajen” način) ali
E N D
V/I prenosi • Dve napravi, na primer: • mikrokrmilnik z drugim mikrokrmilnikom, • mikrokrmilnik s tipkovnico, • mikrokrmilnik s stikalom, • mikrokrmilnik z ventilom, • .... načeloma komunicirata na enega od dveh načinov: • brez usklajevanja (“neusklajen” način) ali • z usklajevanjem (“usklajen” način).
Oddajna naprava Sprejemna naprava Podatki V/I – neusklajen način • Brez usklajevanja (“neusklajen” način): • Prenašajo se samo podatki brez nadzornih signalov, to je ena naprava enostavno postavi signale in druga jih odčita. • Med napravama se ne prenašajo (nadzorni) signali, kdaj naj ena naprava da podatek in kdaj, če sploh, naj ga druga prevzame. • Na primer: mikrokrmilnik odčita stanje stikala, ali mikrokrmilnik prižge LED diodo (ni potrebe po usklajevanju).
V/I – usklajen način • Z usklajevanjem (angl. Hand Shaking): • Prenos podatkov spremlja izmenjava nadzornih signalov, načeloma takole: • Oddajna naprava zahteva od sprejemne naprave naj se pripravi na prevzem podatka. • Sprejemna naprava javi pripravljenost na sprejem podatka. • Oddajna naprava pošlje podatek in javi prisotnost podatka. • Sprejemna naprava prevzame podatek in javi prevzem podatka.... • Obstaja več načinov usklajevanja, včasih jih imenujemo tudi “delno” usklajen, (“polno”) usklajen in “dvojno” usklajen....
1 2 3 Podatki Oddajna naprava Sprejemna naprava V/I – usklajen način Oddajna naprava postavi podatek. Oddajna naprava postavi nadzorni signal “podatek je prisoten”. Sprejemna naprava zazna nadzorni signal in prevzame podatek. Opomba: Temu načinu bi lahko rekli tudi delno usklajen (Angl. Strobed I/O).
1 2 3 4 Podatki Oddajna naprava Sprejemna naprava V/I – usklajen način Oddajna naprava postavi podatek. Oddajna naprava postavi nadzorni signal “podatek prisoten”. Sprejemna naprava zazna nadzorni signal in prevzame podatek. Sprejemna naprava javi prevzem podatka. Opomba: to lahko (hkrati) pomeni zahtevo za pošiljanje (novega) podatka oziroma pripravljenost na prevzem naslednjega podatka.
Zuna- nja napra- va Vmes- nik V/I prenosi in CPE CPE Pomnilnik • V/I prenos poteka načeloma na enega od naslednjih načinov: • S posredovanjem procesorja (pod nadzorom programa): • Enostavno brez preverjanja stanja V/I. • S preverjanjem stanja V/I vmesnika. • Z zahtevo za prekinitev. • Brez posredovanja procesorja: • Z neposrednim dostopom do pomnilnika (DMA). V tem primeru opravi prenos (namesto procesorja) krmilnik za neposreden dostop (o tem ne bomo govorili).
CPE Vmesnik Zunanja naprava Klik LDAA PortA Podatek V/I – brez preverjanja stanja • Enostavno prevzamemo (beremo) ali postavimo (pišemo) V/I sponke (signale) – to je torej neusklajen način. ......... LDAA PortA ;beremo stanje na vhodu ......... • Ta način je primeren, kadar sinhronizacija z drugo napravo (npr. stikalom ali lučko) ni potrebna (o tem smo že govorili).
CPE Vmesnik Zunanja naprava LDAA PortStatus Stanje Klik LDAA PortA Podatek V/I – s preverjanjem stanja • Pred prenosom podatka, preverimo prisotnost podatka: CAKAJ: LDAA PortStatus ;zanima nas stanje V/I BITA #$80 ;je podatek prisoten (b7 =1)? BEQ CAKAJ ;ne, čakaj podatek ; Ali bolj kompaktno ; CAKAJ: BRCLR PortStatus,#$80,CAKAJ LDAA PortData ;da, prevzemi podatek • Ta način je primeren, kadar je potrebna sinhronizacija z zunanjo napravo – ko pride podatek, ga je potrebno prevzeti pred prihodom naslednjega podatka, i.t.d.
V/I – s preverjanjem stanja • Preverjanje stanja – druga možnost ; LDAA PortStatus ;zanima nas stanje V/I BITA #$80 ;je podatek prisoten (b7 =1)? BEQ NAPREJ ;ne, nadaljuj z delom ;Ali kar BRCLR PortStatus,#$80,NAPREJ LDAA PortData ;da, prevzemi podatek NAPREJ: .......... ;npr. preveri drugo napravo • Ta način je primeren, kadar imamo več V/I naprav, ki jim strežemo ‘v zanki’ s predvidenim taktom.
V/I – s prekinitvijo Zahteva za prekinitev CPE Vmesnik Zunanja naprava Stanje Klik LDAA PortA Podatek ; --- poljuben program ....... ;ustrezno pripravimo V/I vmesnik CLI ;omogočimo I maskirane zahteve PROG: ....... ;kadarkoli lahko nastopi prekinitev BRA PROG ; --- prekinitveni strežnik V/I ISR: LDAA PortData ;prevzamem podatek STAA Nekam ;nekaj naredim z njim in RTI ;se vrnem v prekinjeni program
HCS12 – PIM(Port Integration Module) Sponke (signali) vrat P, H, J lahko služijo tudi kot prekinitveni vhodi.
HCS12 – vrata P, H in J • Vrata P, H in J so si v vlogi splošno namenskih vrat (GPIO) enakovredna. • Lahko jih uporabljamo podobno, kot npr. vrata A in B, ki smo jih že spoznali. • Omogočajo pa tudi proženje zahtev za prekinitev, kar npr. vrata A in B ne omogočajo. • Sicer pa vrata (P,H,J) služijo oz. so prek njih dosegljivi tudi (drugi) notranji periferni moduli: • Vrata P: za PWM in SPI, • Vrata H: za SPI, • Vrata J: IIC in CAN.
HCS12–vrata H kot splošnonamenski V/I • 8 digitalnih vhodov ali izhodov, posamično programljivih za vhod ali izhod s pomočjo smernega registra. • Vhodi z/brez zaključnega upora na napajanje/maso. • Polna ali zmanjšana gonilna moč izhodov. • Možnost proženja zahteve za prekinitev pri aktivnem prehodu signala na kateremkoli od 8 vhodnih (v tem primeru prekinitvenih) sponk.
HCS12 – vrata H – registri vrat • S stališča programerja zadostuje poznavanje V/I registrov in njihovega pomena (pravzaprav to velja za vse V/I prenose). • Registri vrat H spadajo k modulu PIM • Skica je izrezana iz dokumenta 9s12DP256BDGV2.pdf
HCS12 – vrata H – registri vrat ODMIK POMEN • Naslovi registrov = Osnovni (začetni) naslov + Odmik • Osnovni naslov modula PIM = $0240 • Naslov registra PTH je $0240 + $20 = $0260 • Naslov registra PTIH je $0240 + $21 = $0261 • i.t.d. • (Ta skica je v bistvu ponovitev prejšnje, izrezana iz dokumentacije PIM )
HCS12 – vrata H – vektor • Pri streženju prekinitvenih zahtev iz teh vrat pa moramo poznati še naslov pripadajačega prekinitvenega vektorja. Opomba: To je del tabele vektorjev (glej prejšnje predavanje)
HCS12 – vrata H: V/I register • V primeru, da so sponke vrat programirane kot izhodne, bo operacija branja vrnila vsebino tega registra. • V nasprotnem primeru operacija branja vrne stanje sponk.
HCS12–načelna skica sponke vrat Celica (bit) smernega registra Celica (bit) V/I registra • V primeru, da so sponke vrat programirane kot izhodne, bo operacija branja vrnila vsebino tega registra. • V nasprotnem primeru operacija branja vrne stanje sponk.
HCS12 – vrata H: vhodni register • Branje tega registra vedno vrne stanje (vhodnih) sponk. Na ta način se da ugotoviti tudi preobremenjenost ali kratek stik, kadar so sponke programirane kot izhodne.
HCS12 – vrata H: smerni register • Vsebina smernega registra izbere smer pripadajoče (istoležne) sponke: vrednost bita = 0 vhodna sponka vrednost bita = 1 izhodna sponka • Možna je poljubna kombinacija vhodnih/izhodnih sponk.
HCS12 – vrata H: register RDRH • Register za zmanšanje izhodne gonilne moči sponke na tretjino: vrednost bita = 0 polna moč vrednost bita = 1 zmanjšana moč
HCS12 – vrata H: register PERH • Register za priklop zaključnega upora vhodne sponke: vrednost bita = 0 upor odključen vrednost bita = 1 upor priključen
HCS12 – vrata H: register PPSH • Izbira polaritete. Register ima dvojni pomen: • Za zaključni upor: vrednost bita = 0 upor na napajalno napetost vrednost bita = 1 upor na maso • Za proženje zahteve za prekinitev: vrednost bita = 0 prehod navzdol vrednost bita = 1 prehod navzgor
HCS12 – vrata H: register PIEH • Omogočanje zahtev za prekinitev na posameznih sponkah vrednost bita = 0 prekinitev ni omogočena vrednost bita = 1 prekinitev je omogočena
HCS12 – vrata H: register PIFH • Register zastavic: vrednost bita = 0 ni zahteve vrednost bita = 1 zahteva • Stanje bita 1 je posledica aktivnega prehoda na pripradajočem vhodu. Bit brišemo z vpisom enice.
HCS12 – vrata H – primer 1/3 PimBase EQU $0240 ;Port Integration Module PortHoffset EQU $0020 ;Odmik od PimBase za vrata H PortHbase EQU PimBase+PortHoffset PTH EQU PortHbase ;V/I register PTIH Equ PortHbase+1 ;vhodni register DDRH EQU PortHbase+2 ;smerni register RDRH EQU PortHbase+3 ;zmanjsana gonilna moc PERH EQU PortHbase+4 ;izbira zakljucnih uporov PPSH EQU PortHbase+5 ;izbira prožile fronte PIEH EQU PortHbase+6 ;omogočanje prekinitev PIFH EQU PortHbase+7 ;zastavice prekinitev ; PHIV EQU $FFCC ;vektor za vrata H
HCS12 – vrata H – primer 2/3 ; zacetna vzpostavitev --- poljubno zaporedje ukazov ; ....... ; sedaj priprava vrat H CLRA STAA DDRH ;vse sponke so vhodne STAA PPSH ;aktiven prehod navzdol – za vse vhode COMA STAA PERH ;vklopimo zakljucne upore na napajanje LDAA #$01 STAA PIEH ;omogočimo zahtevo za prekinitev na sponki PH0 CLI ;omogočimo prekinitve ......... ; poljubno zaporedje ukazov BRA * ;čakamo na prekinitev
HCS12 – vrata H – primer 3/3 ; --- strežnik prekinitve ; ISR: ......... ; LDAA PIFH ; ANDA #$01 ;zahteva na PH0? BEQ ISR0 ;ne STAA PIFH ;da, brišemo zahtevo ......... ;npr. prevzamemo podatek, i.t.d. ISR0: RTI ; --- vektor prekinitve ORG PHIV ;definicija vektorja vrat H FDB ISR
HCS12 – vrata H – programcek 1/3 ;******************************************************************************************************** ;* Preprost primer zehteve za prekinitev na vratih H, sponka PH0. Ob vsaki zahtevi za prekinitev ;* spremenimo stanje vrat A, kamor je prikljucen 7 segmentni LED element, tako da se pikica izmenicno ;*priziga in ugasa. Program dela pod D-Bug12 XDEF Entry ABSENTRY Entry ;vstopna tocka ; definicije konstant RamStart EQU $1000 ;Zacetek pomnilnika RAM RamEnd EQU $2000 ;Konec pomnilnika RAM RomStart EQU $2000 ;Zacetek pomnilnika za program ; Vrata H PimBase EQU $0240 ;zacetek naslovov modula PIM PortOff EQU $0020 ;zacetek naslovov vrat H PortBase EQU PimBase+PortOff PTH EQU PortBase ;V/I register PTIH EQU PortBase+1 ;V register DDRH EQU PortBase+2 ;smerni register RDRH EQU PortBase+3 ;zmanjsanje gonilne moci PERH EQU PortBase+4 ;vklop uporov PPSH EQU PortBase+5 ;izbira prozenja PIEH EQU PortBase+6 ;omogocanje prekinitev PIFH EQU PortBase+7 ;zastavice PortHvect EQU $3e4c ;Pomni, to je d-bug12 psevdo vektor
HCS12 – vrata H – programcek 2/3 ; vrata A PORTA EQU $0000 DDRA EQU $0002 ; --- podatkovni del in sklad ORG RamStart ds.b $100 Sklad: equ * ; --- Program ORG RomStart Entry: lds #Sklad ;tu bo zacetek sklada jsr InitPortA ;priprava vrat A JSR InitH ;priprava vrat H CLI ;omogocimo prekinitve loop: BRA loop ;neskonca zanka ; --- priprava vrat A InitPortA: ldaa #$FF staa DDRA ldaa #$7f ;na vratih je 7-segmentni LED, staa PORTA ;prizgemo piko rts
HCS12 – vrata H – programcek 3/3 ; --- priprava vrat H InitH: clra staa DDRH ;vhodi staa PPSH ;obcutljivost na zadnji rob ldaa #$FF staa PERH ;vkljucimo upore ldaa #$01 staa PIEH ;omogocimo prekinitev na PH0 ldaa #$FF staa PIFH ;brisemo morebitne postavljene zastavice rts ; --- prekinitveni streznik zahteve za prekinitev na vratih H IsrH: LDAA #$ff ;brisemo kar vse zastavice STAA PIFH ldaa PORTA eora #$80 staa PORTA ;spremenimo LED prikaz rti ; --- Vektor vrat H ORG PortHvect FDB IsrH