180 likes | 331 Views
HCS12 in ETC. Prosto tekoči števec (angl. Free Running Counter): 16 bitni števni register , ki krožno teče z osnovnim taktom časovnika. Vhodno prestrezanje (angl. Input Capture): ob aktivnem prehodu na prestreznem vhodu se v prestrezni register prepiše vrednost števnega registra.
E N D
HCS12 in ETC • Prosto tekoči števec (angl. Free Running Counter): 16 bitni števni register, ki krožno teče z osnovnim taktom časovnika. • Vhodno prestrezanje (angl. Input Capture): ob aktivnem prehodu na prestreznem vhodu se v prestrezni register prepiše vrednost števnega registra. • Izhodno primerjanje (angl. Output Compare): ko se vsebina števnega registra izenači s prednastavljeno vrednostjo primerjalnega registra, se postavi signal na ustreznem izhodnem kanalu. • Pulzni akumulator (amgl. Pulse Accumulator): omogoča štetje dogodkov na vhodnem kanalu, ali merjenje časovnega intervala med dvema (tipično hitrima) dogodkoma na vhodnem kanalu.
HCS12 – ETC (PIM) Prestrezni ali primerjalni kanali časovnika Časovnik ETC
HCS12 - ETC na hitro • Do 8 prestreznih kanalov, torej do 8 16-bitnih prestreznih registrov. • Do 8 primerjalnih izhodov, torej do 8 16-bitnih primerjalnih registrov. • Štiri 8 bitne ali dva 16 bitna pulzna akumulatorja. • Veliko možnosti pri izbiri osnovnega takta. S tem se doseže velik časovni razpon in/ali primerna časovna ločljivost. • Veliko načinov delovanja: poleg osnovnih funkcij (to je prestrezanja in generiranja signalov), daje veliko dodatih (specifičnih) možnosti predvsem kanal 7.
HCS12–ETC izbira takta bit v registruTSCR1 Notranji takt biti v registruTSCR2 Zunanji takt na kanalu 7 to se nanaša registre pulznih akumulatorjev
HCS12–ETC izhodno primerjanje (4) in pride do prekinitve, če jo omogoča (TIE) Prikaz delovanja za n-ti (n=0,1,...,7) kanal (3) se postavi zastavica (TFLG1) (1) Ko se časovni števec (TCNT) izenači s primerjalnim registrom (TCn) (2) Če je izbran primerjali način (TIOS) (5) izhod pa se odzove, kot določa TCTL1/TCTL2
HCS12–ETC vhodno prestrezanje (4) in pride do prekinitve, če jo omogoča (TIE) Prikaz delovanja za n-ti (n=0,1,...,7) kanal (3) se postavi zastavica (TFLG1) (5) Časovni števec (TCNT) se prepiše v primestrezni registrer (TCn) (2) Če je izbran prestrezni način (TIOS) (1) če je na vhodu aktivna sprememba kot jo določata TCTL3/TCTL4
HCS12 – delo z ETC • Delo s časovniki je spričo številnih možnosti precej zapleteno. • Izberemo vir/frekvenco osnovnega takta (tipično E), • register TSCR2. • Določimo prestrezne vhode in/ali primerjalne vhode, • register TIOS. • Določimo aktivne prehode na prestreznih vhodih in/ali • stanje na primerjalnih izhodov, TCTL1/2/3/4. • Po potrebi - tipično, omogočimo prekinitve, • register TIE. • (Ne smemo pozabiti omogočiti delovanje • celotnega časovnega modula) TSCR1.
HCS12 – ETC nekateriregistri Določimo, kateri kanali bodo prestrezni in kateri primerjalni register TIOS: IOS_i = 1, primerjalni izhod IOS_i = 0, prestrezni vhod
HCS12 – ETC nekateri registri Omogočimo/onemogočimo (ustavimo) delovanje časovnika: Kontrolni register časovnega modula: TSCR1, TEN = 1.
HCS12 – ETC nekateri registri Izberemo preddelilno razmerje: Kontrolni register časovnega modula: TSCR2 Omogoči zahtevo za prekinitev preplavitve časovnega števca Izbere preddelilno razmerje. Register zastavice preplavitve časovnega števca: TFL2
HCS12 – ETC nekateri registri Določimo delovanje izhodnih kanalov: Kontrolni register časovnika: TCTL1/TCTL2 izhod odklopljen, sprememba izhoda, izhod nizek ali visok.
HCS12 – ETC nekateri registri Določimo delovanje vhodnih kanalov: Kontrolni register časovnika: TCTL3/TCTL4 vhod odklopljen, spremba gor ali dol ali vsaka.
HCS12 – ETC nekateri registri Omogoči zahtevo za prekinitev ustreznega kanala: Register prekinitvenih mask: TIE Obravnavamo dogodke časovnika Preverjamo zastavice ustreznih kanalov in/ali prekinitev: Register prekinitvenih zastavic: TFLG1 Zastavica ustreznega kanala se briše z vpisom enice !
HCS12 – ETC primer TIOS equ ECTBase ;IC ali OC TCNT equ ECTBase+$04 ;časovni števec TIE equ ECTBase+0c ;omogočimo prekinitve TCTL2 equ ECTBase+09 ;obnašanje izhodov TSCR1 equ ECTBase+$06 ;kontr.r. modula, TE TSCR2 equ ECTBase+$0d ;kontr.r. modula, preddelilnik TFLG1 equ ECTBase+$0e ;zastavice TC0 equ ECTBase+10 ;OC register kanala 0 movb #$80,TSCR1 ;omogočimo časovnik movb #$01,TIOS ;Kanal 0 naj bo OC movb #$01,TCTL2 ;spreminjanje izhoda movb #$01,TIE ;omogočimo prekinitev kanala 0 ldd #Perioda std TC0 movb #$01,TFLG1 ;brišemo zastavico cli bra * Generiranje pravokotnega impulza Seveda pa manjka še prekinitveni strežnik in def. prekinitvenega vektorja