ARM Vhodno izhodne naprave ARS 2 Arhitektura raunalnikih











- Slides: 11
ARM Vhodno / izhodne naprave ARS 2 – Arhitektura računalniških sistemov 2 1 - <##>
PIO krmilnik Registri z informacijo o stanju : PSR (PIO Status Register): 1 - digitalni vhod/izhod / 0 - naprava AB OSR (Output Status Register): 1 - izhod omogočen / 0 - izhod onemogočen (deluje kot vhod) ODSR (Output Data Status Register): stanje izhoda 1 / 0 MDSR (Multiple Drive Status Register): tip izhoda 1 - ’open drain’ / 0 - ’totem pole’ PUSR (Pull Up Status Register): 1 - omogočen / 0 - onemogočen; uporabno za vhode ARS 2 – Arhitektura računalniških sistemov 2 2 - <##>
PIO krmilnik Registri za nastavitve delovanja: PER (PIO Enable Register): 1 - nastavi kot digitalni vhod/izhod / 0 - ni spremembe delovanja PDR (PIO Disable Register): 1 - nastavi kot napravo AB / 0 - ni spremembe delovanja OER (Output Enable Register): 1 - nastavi kot izhod / 0 - ni spremembe delovanja ODR (Output Disable Register): 1 - onemogoči izhod (dela kot vhod) / 0 - ni spremembe delovanja SODR (Set Output Data Register): 1 - nastavi stanje izhoda na 1 / 0 - ni spremembe izhoda CODR (Clear Output Data Register): 1 - nastavi stanje izhoda na 0 / 0 - ni spremembe izhoda MDER (Multiple Drive Enable Register): 1 - nastavi izhod na ’totem pole’ / 0 - ni spremembe delovanja MDDR (Multiple Drive Disable Register): 1 - nastavi izhod na ’open drain’ / 0 - ni spremembe delovanja PUER (Pull Up Enable Register): 1 - omogočen ‘pull-up’ upor / 0 - ni spremembe delovanja PUDR (Pull Up Disable Register): 1 - onemogočen ‘pull-up’ upor / 0 - ni spremembe delovanja ARS 2 – Arhitektura računalniških sistemov 2 3 - <##>
PIO krmilnik – krmiljenje izhodov Spreminjanje bitov v V/I registrih: Namesto branja-spreminjanja-pisanja enega registra imamo trojico registrov – en statusni in dva s katerima postavljamo / brišemo bite. Ko v njiju v določen bit vpišemo enico, s tem postavimo / brišemo ustrezen bit, ki krmili posamezno funkcijo, stanje bita pa potem lahko preberemo v statusnem registru. Potrebni koraki za krmiljenje izhoda: 1. vpiši 1 na ustrezno mesto v PER (določimo način delovanja kot vhod/izhod) 2. vpiši 1 na ustrezno mesto v OER (nastavimo kot digitalni izhod) 3. določi stanje izhoda s pisanjem v SODR / CODR (nastavljamo na 1/0) Naslovi registrov: . equ PIOA_BASE, 0 x. FFFFF 400 /* Začetek registrov za vrata A - PIOA */ PIOB_BASE, 0 x. FFFFF 600 /* Začetek registrov za vrata B - PIOB */ PIOC_BASE, 0 x. FFFFF 800 /* Začetek registrov za vrata C - PIOC */ PIO_PER, 0 x 00 /* Odmiki. . . */ PIO_OER, 0 x 10 PIO_SODR, 0 x 30 PIO_CODR, 0 x 34 ARS 2 – Arhitektura računalniških sistemov 2 4 - <##>
PIO krmilnik – krmiljenje izhodov Zgled: . equ ldr mov str PIOB_BASE, 0 x. FFFFF 600 /* Začetni naslov registrov za PIOB */ PIO_PER, 0 x 00 /* Odmiki. . . */ PIO_OER, 0 x 10 PIO_SODR, 0 x 30 PIO_CODR, 0 x 34 r 0, r 1, =PIOB_BASE #1 << 15 [r 0, #PIO_PER] [r 0, #PIO_OER] str r 1, [r 0, #PIO_SODR] str r 1, [r 0, #PIO_CODR] /* Priključek B 15 krmili PIO */ /* Omogoči izhod na B 15 */ /* Na priključek B 15 zapiši stanje 1 */ /* Na priključek B 15 zapiši stanje 0 */ ARS 2 – Arhitektura računalniških sistemov 2 5 - <##>
DBGU (‘debug unit’ – razhroščevalna enota) • Enota za dostop do vseh razhroščevalnih zmožnosti mikrokrmilnika • V enoto je integriran UART (Universal Asynchronous Receiver Transmitter) z dvema priključkoma (sprejem – RX, oddaja – TX) in naslednjimi zmožnostmi: dolžina znakov samo 8 bitov + bit parnosti neodvisno delovanje sprejemnika in oddajnika generator hitrosti prenosa (baud rate generator) je skupni za oddajnik in sprejemnik hitrost prenosa nastavljiva med MCK/(16*65536) in MCK/16 Potrebni koraki za nastavitev UART: 1. Nastavi način delovanja (normal mode) in parnost z vpisom v DBGU_MR 2. Nastavi hitrost prenosa z vpisom v DBGU_BRGR vrednost, ki jo vpišemo izračunamo po formuli MCK/(16*BAUD_RATE) 3. Omogoči oddajnik in sprejemnik z vpisom 1 v bita TXEN in RXEN v DBGU_CR ARS 2 – Arhitektura računalniških sistemov 2 6 - <##>
DBGU (‘debug unit’ – razhroščevalna enota) Sprejem / oddaja znakov preko UART: - ob sprejemu znaka se na 1 postavi bit RXRDY v DBGU_SR znak preberemo v spodnjih 8 bitih DBGU_RHR znak, ki ga želimo poslati, vpišemo v spodnjih 8 bitov DBGU_THR in sicer takrat, ko je oddajnik pripravljen na oddajo (bit TXRDY v DBGU_SR postavljen na 1) Naslovi registrov: . equ DBGU_BASE, 0 x. FFFFF 200. equ DBGU_CR, 0 x 00. equ DBGU_MR, 0 x 04. equ DBGU_IER, 0 x 08. equ DBGU_IDR, 0 x 0 C. equ DBGU_IMR, 0 x 10. equ DBGU_SR, 0 x 14. equ DBGU_RHR, 0 x 18. equ DBGU_THR, 0 x 1 C. equ DBGU_BRGR, 0 x 20 /* Debug Unit Base Address */ /* DBGU Control Register */ /* DBGU Mode Register*/ /* DBGU Interrupt Enable Register*/ /* DBGU Interrupt Disable Register */ /* DBGU Interrupt Mask Register */ /* DBGU Status Register */ /* DBGU Receive Holding Register */ /* DBGU Transmit Holding Register */ /* DBGU Baud Rate Generator Register */ ARS 2 – Arhitektura računalniških sistemov 2 7 - <##>
TC (časovnik / števec) • Trije enakovredni 16 -bitni kanali TC 0, TC 1 in TC 2. • Uporabni za štetje dogodkov (Capture) ali tvorjenje časovnih signalov (Waveform). zakasnitve tvorjenje signala določene frekvence pulzno širinska modulacija (PWM) merjenje intervalov ciklične prekinitve! • 8 izvorov ure: zunanji 3 x notranji (MCK/2, MCK/8, MCK/32, MCK/128, SLCK) • Vrednost se poveča ob pozitivni fronti ure. Uro je mogoče invertirati… 0 xffff -> 0 x 0000 /* vrednost je v registru TCx_CV */ Ø Postavi se zastavica COVFS v TCx_SR. Lahko se sproži prekinitev. ARS 2 – Arhitektura računalniških sistemov 2 8 - <##>
TC (časovnik / števec) • Števec lahko postavimo na 0 (reset) s pomočjo prožilcev (trigger). • Programski SWTRG • SYNC (ponastavi vse tri kanale) • Primerjava z registrom RC • Zunanji prožilci… Načeloma je potrebno za vsako V/I napravo omogočiti urin signal z vpisom 1 na ustrezno mesto v registru PMC_PCER. Mesto je določeno z ID številko naprave. TC 0 ima številko ID_TC 0 = 17. Potrebni koraki za zaznavanje prehodov števca 0 x. FFFF -> 0 x 0000: 1. Števcu omogoči urin signal z vpisom na ustrezno mesto v PMC_PCER 2. Izberi frekvenco urinega signala z vpisom v spodnje 3 bite TCx_CMR 3. Omogoči uro z vpisom 1 v CLKEN (bit 0 v TCx_CCR) 4. Sproži števec z vpisom 1 v SWTRG (bit 2 v TCx_CCR) 5. Čakaj na zastavico COVFS (bit 0 v TCx_SR) ARS 2 – Arhitektura računalniških sistemov 2 9 - <##>
TC (časovnik / števec) • Zastavica COVFS se postavi prehodu števca iz 0 xffff na 0 x 0000, zato ni primerna za poljubne časovne intervale. • TC lahko nastavimo tako, da šteje do določene meje. Mejo določimo z vsebino registra RC. Ko števec doseže vrednost, ki je zapisano v RC, se postavi zastavica CPCS (Com. Pare C Status). Potrebni koraki za štetje do vrednosti v RC: 1. Števcu omogoči urin signal z vpisom na ustrezno mesto v PMC_PCER 2. Izberi frekvenco urinega signala z vpisom v spodnje 3 bite TCx_CMR 3. Z vpisom WAVE in WAVSEL (1 in npr. 10) nastavi delovanje števca* 4. Zapiši ustrezno mejo v RC* 5. Omogoči uro z vpisom 1 v CLKEN (bit 0 v TCx_CCR) 6. Sproži števec z vpisom 1 v SWTRG (bit 2 v TCx_CCR) 7. Čakaj na zastavico CPCS* *podrobnosti poiščite v tovarniški listini od strani 523 dalje. ARS 2 – Arhitektura računalniških sistemov 2 10 - <##>
TC (časovnik / števec) Naslovi registrov: . equ PMC_BASE, 0 x. FFFFFC 00. equ PMC_PCER, 0 x 10 /* Power Management Controller */ /* Base Address */ /* Peripheral Clock Enable Register */ . equ TC 0_BASE, 0 x. FFFA 0000. equ TC_CCR, 0 x 00. equ TC_CMR, 0 x 04. equ TC_CV, 0 x 10. equ TC_RA, 0 x 14. equ TC_RB, 0 x 18. equ TC_RC, 0 x 1 C. equ TC_SR, 0 x 20. equ TC_IER, 0 x 24. equ TC_IDR, 0 x 28. equ TC_IMR, 0 x 2 C /* TC 0 Channel Base Address */ /* TC 0 Channel Control Register */ /* TC 0 Channel Mode Register*/ /* TC 0 Counter Value */ /* TC 0 Register A */ /* TC 0 Register B */ /* TC 0 Register C */ /* TC 0 Status Register */ /* TC 0 Interrupt Enable Register*/ /* TC 0 Interrupt Disable Register */ /* TC 0 Interrupt Mask Register */ ARS 2 – Arhitektura računalniških sistemov 2 11 - <##>











