View
55
Download
0
Category
Preview:
DESCRIPTION
Realni čas. V vsakem vgradnem mikrokrmilniškem sistemu je čas pomembna spremenljivka. Delovanje sistemov v odvisnosti od ‘realnega’ časa pa je v nekaterih primerih bistvenega pomena. Tem sistemom pravimo sistemi realnega časa (angl. Real-Time Systems) ali tudi časovno kritični sistemi. - PowerPoint PPT Presentation
Citation preview
http://vision.fe.uni-lj.si/classes/GSPV
GSPV (10)
Realni čas, HCS12,
RTI, COP in ECT
Stanislav Kovačič
Univerza v Ljubljani
Fakulteta za elektrotehniko
Realni časRealni čas
V vsakem vgradnem mikrokrmilniškem sistemu je čas pomembna
spremenljivka. Delovanje sistemov v odvisnosti od ‘realnega’ časa pa je v nekaterih
primerih bistvenega pomena. Tem sistemom pravimo sistemi realnega časa
(angl. Real-Time Systems) ali tudi časovno kritični sistemi. Od sistemov realnega časa se pričakuje, da bodo delovali pravilno v
vsakih okoliščinah in v skladu z vnaprej predpisanimi
časovnimi zahtevami (omejitvami). ‘Vnaprej’ pomeni, da mora biti delovanje sistema realnega časa
predvidljivo: vse aktivnosti se bodo izvršile v predpisanem
časovnem intervalu (niti ne prej niti ne pozneje).
Realni časRealni čas Dva tipa sistemov realnega časa:
sistemi s trdimi omejitvami (Angl. Hard Real-Time Systems)
(časovne zahteve morajo biti vedno upoštevne). sistemi z mehkimi omejitvami (angl. Soft Real Time Systems)
(nekatere časovne zahteve so lahko občasno kršene). Sistem realnega časa ni nujno zelo hiter, mora pa biti dovolj hiter,
predvsem pomembna pa sta njegova odzivnost in predvidljivost.
Tipična področja uporabe: vodenje in nador procesov proizvodni sistemi komunikacijski sistemi prometni (transportni) sistemi interaktivni sistemi, uporabniški vmesniki ....
Realni časRealni čas
Nekaj zahtev v (mikrokrmilniških) sistemih realnega časa: Sočasno izvrševanje več opravil (večopravilnost). Prioritetno obravnavanje - razvrščanje opravil. ‘Predopravilnost’ – izvršitev (prioritetnega) opravila tudi na
račun prekinitve opravila, ki je (že) v teku. Izvrševanje opravil v odvisnosti od časa (časovniki). Asinhrono odzivanje sistema na zunanje vzroke –
dogodkovno vodeno delovanje, potreben je učinovit
prekinitveni sistem. Sinhronizacija opravil, komunikacija med opravili. Primerno ‘fina’ delitev časa (čas je namreč diskreten).
To se doseže s primerno strojno in programsko opremo.
HCS12 in realni časHCS12 in realni čas
Prioritetni vektorski sistem prekinitev - asinhrono obravnavanje
zunanjih (spontanih) dogodkov. Časovniki (angl. Timer(s)):
Časovni modul ECT (Angl. Enhanced Capture Timer): časovno odvisno, periodično, izvajanje opravil, tudi
kasnitve beleženje časovnih trenutkov, štetje dogodkov generiranje signalov s primernim časovnim potekom
Modul CRG (angl. Clock and Reset Generator): Časovnik RTI (Angl. Real Time Interrupt): periodično
(z nastavljivo periodo) izvajanje opravil - postavlja
znak, da se je čas (časovnik) iztekel Časovni paznik COP (angl. Computer
Operating Properly):
preverjanje pravilnosti delovanja mikrokrmilnika
v odvisnosti od časa.
HCS12 – ECT (PIM)HCS12 – ECT (PIM)
Precej kompleksno vezje - o tem bomo govorili kasneje
Modul ECT: Enhanced Capture Timer.
HCS12 – CRG (RTI)HCS12 – CRG (RTI)
Pozor: RTI ni RTC (angl. Real-Time Clock): RTC je namreč vezje, ki daje koledarski čas.
Časovnik RTI (ime oz. oznaka sta pravzaprav zavajajoča), uporaba:
- periodično proženje opravil
- enostaven način za izvedbo
zakasnitev.
CRG (registri RTI)CRG (registri RTI) CRG začetni naslov: $34
CRGFLG: RTIF (zastavica):
časovnik se je iztekel, brišemo jo z vpisom 1 v ta bit. CRGINT: RTIE - omogočimo prekinitev, prekinitveni vektor: $FFF0/FFF1 RTICTL: nastavitev periode proženja časovnika
CRG (pa še RTI vektor)CRG (pa še RTI vektor)
RTI vektor: $FFF0, $FFF1
Registri RTI - RTICTL Registri RTI - RTICTL
register RTICTL – nastavitev periode proženja prekinitve
Z vsebino tega registra izberemo periodo proženja:
perioda proženja = (osnovna frekvenca, vsebina registra)
Delilnik Odštevalnik
Registri RTI - RTICTLRegistri RTI - RTICTL
register RTICTL – pomen skupin bitov
210
210
211
212
213
214
215
216
blokiran
HCS12 HCS12 – RTI - register RTICTL – RTI - register RTICTL
časovnik se lahko kadarkoli (ponovno) resetira z vpisom v ta register.
OSCCLK se najprej deli s 1024 Ta se naprej deli z vsebino RTICTL Na primer za OSCCLK = 8 MHz
RTR[6:4]=100 -> 213
RTR[3:0]=0000 RTR[01000000]
Interval proženja:
8000000 / 8192 ≈ 1ms
HCS12 – RTI primerHCS12 – RTI primer; Primer: proženje na vsakih 1 s, osnovna frekvenca je 8 MHz.
;
RtiVek equ $fff0 ;vektor prekinitve RTI
CRGbase equ $34 ;zacetni naslov modula CRG
CRGFLG equ CRGbase+3
CRGINT equ CRGbase+4
RTICTL equ CRGbase+7
Perioda equ %01000000
RtiIntE equ %10000000 ;zastavica in RTIE
; --- osnovne zacetne nastavitve
ldaa #Perioda
staa RTICTL ;nastavitev periode
bset CRGINT,RtiIntE ;omogocimo prekinitve
bset CRGFLG,RtiIntE ;brisemo morebitno zastavico
; --- karkoli je ze potrebno
bra * ;neskoncna zanka
HCS12 – RTI primerHCS12 – RTI primer
;-----------------------------------------------------------
; Prekinitveni streznik RTI
;
IsrRTI:
bset CRGFLG,RtiIntE ;brisemo zastavico
;--- Karkoli je se potrebno
rti
;
; Prekinitveni vektor (RTI)
org RtiVek
fdb IsrRTI
HCS12 – CRG (COP)HCS12 – CRG (COP) Časovni paznik - COP: časovni nadzor sistema
časovniku izberemo primeren (osnovni) takt odštevanja
(časovnik nastavimo na začetno vrednost) če se časovnik izteče, povzroči
ponovni zagon (reset) da se to ne zgodi, ga prej
vrnemo na začetno vrednost
Uporaba: na ‘kritičnih točkah’ v programu
predvidimo ponovno nastavitev časovnega paznika dokler se program pravilno izvršuje, bo časovni paznik vedno
pravočasno ponovno nastavljen do začetne (ponovne) vzpostavitve sistema zato praviloma ne pride
CRG (registri COP)CRG (registri COP)
Tu nastavimo interval, v katerem se paznik izteče. Časovnik pa resetiramo z vpisom $55 in $AA
v register ARMCOP
CRG (pa še COP vektor)CRG (pa še COP vektor)
Če se časovnik izteče, se postavi signal Reset, nakar pride
do prevzema COP vektorja.
HCS12 – ECT (ponovno)HCS12 – ECT (ponovno)
Prestrezni in/ali
primerjalni
‘kanali’
časovnika.
Poleg določanja
časovnih
intervalov,
zajemamo in
postavljamo tudi
zunanje signale
v odvisnosti
od časa.
Časovnik ETC
HCS12 – ECT HCS12 – ECT (blokovna shema)(blokovna shema)
V/i signali:
- prestrezni
- primerjalni
Prestrezni in primerjalni registriPulzna akumulatorja
Preddelilnik
Kontrolni in
statusni
registri
Časovni števec
HCS12 - ECT na hitroHCS12 - ECT na hitro
Veliko možnosti pri izbiri osnovnega takta (preddelilnik, števnik),
s tem se doseže velik časovni razpon in/ali primerna
časovna ločljivost. Do 8 ‘prestreznih’ vhodnih kanalov, skupaj z do osmimi 16-
bitnimi
‘prestreznimi’ registri. Do 8 primerjalnih izhodnih kanalov, skupaj z do osmimi 16-
bitnimi
‘primerjalnimi’ registri. Štiri 8 bitne ali dva 16 bitna pulzna akumulatorja. Veliko načinov delovanja:
poleg osnovnih funkcij (to je prestrezanja in generiranja
signalov), daje veliko dodatih (specifičnih) možnosti
predvsem kanal 7.
HCS12 – ECTHCS12 – ECT
ECT blok (modul): Enhanced Capture Timer. Prosto tekoči števec (angl. Free Running Counter): to je
16 bitni števni register, ki krožno teče z osnovnim taktom časovnika.
Vhodno prestrezanje (angl. Input Capture): ob pojavu (aktivnem
prehodu) signala na eni od prestreznih sponk se v prestrezni register
prepiše vrednost števnega registra - zabeleži se časovni trenutek.
Izhodno primerjanje (angl. Output Compare): ko se vrednost števnega
registra izenači s prednastavljeno vrednostjo primerjalnega registra,
časovnik (na eni od sponk – ’kanalu’) postavi ustrezen izhodni signal.
Štetje dogodkov: pulzni akumulator (angl. Pulse Accumulator).
Registri ECT (1/3)Registri ECT (1/3)ECT začetni naslov: $0040
Ko
ntro
lni /
sta
tusn
i re
gist
ri
Registri ECT (2/3)Registri ECT (2/3)P
rim
erja
lni /
pre
stre
zni r
egis
tri
Registri ECT (3/3)Registri ECT (3/3)P
ulz
ni a
kum
ula
tor,
....
ECT - izbira taktaECT - izbira takta
Notranji takt
(tak vodila)
Zunanji
takt
na kanalu 7
bit v registruTSCR1
biti v registruTSCR2
to se nanaša na registre pulznih akumulatorjev
ECT - izhodno primerjanjeECT - izhodno primerjanje
(1)
Ko se časovni števec (TCNT)
izenači s
primerjalnim registrom (TCn)
Prikaz delovanja za
n-ti (n=0,1,...,7) kanal
(2)
Če je izbran
primerjali način
(TIOS)
(3)
se postavi
zastavica
(TFLG1)
(4)
in pride do
prekinitve, če jo
omogoča (TIE)
(5)
izhod pa
se odzove, kot
določa
TCTL1/TCTL2
ECT - vhodno prestrezanjeECT - vhodno prestrezanje
(5)
Časovni števec (TCNT)
se prepiše v
prestrezni registrer (TCn)
Prikaz delovanja za
n-ti (n=0,1,...,7) kanal
(2)
Če je izbran
prestrezni način
(TIOS)
(4)
in pride do
prekinitve, če jo
omogoča (TIE)
(1)
če je na vhodu
aktivna sprememba
kot jo določata
TCTL3/TCTL4
(3)
se postavi
zastavica
(TFLG1)
ECT - osnove uporabeECT - osnove uporabe
• Delo s časovniki je spričo številnih možnosti precej zahtevno. • Izberemo vir/frekvenco osnovnega takta,
register TSCR2.• Določimo prestrezne vhode in/ali primerjalne izhode,
register TIOS. • Določimo aktivne prehode na prestreznih vhodih in/ali
stanje na primerjalnih izhodih, TCTL1/2/3/4.• Po potrebi – pravzaprav tipično, omogočimo prekinitve,
register TIE.
• (Ne smemo pozabiti omogočiti delovanje
celotnega časovnega modula) TSCR1.
ECT – register TIOSECT – register TIOS
Določimo, kateri kanali bodo prestrezni in kateri primerjalni
register TIOS:
IOS_i = 1, primerjalni izhod
IOS_i = 0, prestrezni vhod
ECT – register TSCR1ECT – register TSCR1
Omogočimo/onemogočimo (ustavimo) delovanje časovnika:
Kontrolni register časovnega modula: TSCR1,
TEN = 1.
ECT – register TSCR2ECT – register TSCR2Izberemo preddelilno razmerje:
Kontrolni register časovnega modula: TSCR2
Izbere preddelilno razmerje.
Omogoči zahtevo za prekinitev
preplavitve časovnega števca
Register zastavice preplavitve časovnega števca: TFL2
ECT – registra TCTL1/TCTL2ECT – registra TCTL1/TCTL2
Določimo delovanje izhodnih kanalov:
Kontrolni register časovnika: TCTL1/TCTL2
izhod odklopljen, sprememba izhoda, izhod nizek ali visok.
ECT – registra TCTL3/TCTL4ECT – registra TCTL3/TCTL4
Določimo delovanje vhodnih kanalov:
Kontrolni register časovnika: TCTL3/TCTL4
vhod odklopljen, aktivna spremba gor ali dol ali obe.
ECT – registra TIE,TFLG1ECT – registra TIE,TFLG1
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 !
ECT – ogrodje programaECT – ogrodje programaTIOS equ ECTBase ;IC ali OC (ECTBase = $0040)
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 *
ECT – primer programa 1ECT – primer programa 1 ;****************************************************************
;* GSPV 2005/06
;* Primer (izhodnega) primerjalnega delovanja casovnika ECT
;* Za izhodno primerjanje uporabimo kanal 0 (register TC0)
;* Frekvenca na vodilu: 24 MHz
;* Casovni interval med prekinitvami: 0.25 s
;
; --- vstopna tocka
ABSENTRY Start ;absolutni program
;
; --- nekaj splosnih definicij, kje je ram, rom, sklad,..
;
0000 1000 Ram EQU $1000 ;tu naj bo pomnilnik RAM
0000 0400 RamSize EQU $400 ;naj bo 1K RAM-a
0000 1400 RamEnd EQU Ram+RamSize
0000 2000 Program EQU $2000 ;tu naj bo program
0000 0100 SkladSize EQU $100
0000 FFEE ECTVek EQU $FFEE ;vektor prekinitve it ECT, kanal 0
ECT – primer programa 2/7ECT – primer programa 2/7 ;
; --- definicije naslovov registrov RTI
;
0000 0040 ECTbase equ $0040
0000 0040 TIOS equ ECTbase+$00 ;izbira prestreznega ali primerjalnega nacina
0000 0044 TCTN equ ECTbase+$04 ;casovni stevec H,L
0000 0046 TSCR1 equ ECTbase+$06 ;sistemski kontrolni regsiter
0000 0048 TCTL1 equ ECTbase+$08 ;kontrolni registri 1,2,3,4
0000 0049 TCTL2 equ ECTbase+$09
0000 004A TCTL3 equ ECTbase+$0a
0000 004B TCTL4 equ ECTbase+$0b
0000 004C TIE equ ECTbase+$0c ;omogocanje prekinitev
0000 004D TSCR2 equ ECTbase+$0d ;sistemski kontrolni register
0000 004E TFLG1 equ ECTbase+$0e ;registra zastavic 1,2
0000 004F TFLG2 equ ECTbase+$0f
0000 0050 TC0 equ ECTbase+$10 ;prestrezni/primerjalni register kanala 0
0000 0001 IOS0 equ %00000001 ;primerjanje na kanalu TC0
0000 0001 C0I equ %00000001 ;omogocimo prekinitev kanala TC0
0000 0001 C0F equ %00000001 ;maska za brisanje zastavice TC0
ECT – primer programa 3/7ECT – primer programa 3/7 ; ---- bus clock = 24 MHz
0000 0007 Delilnik equ %00000111 ;delimo osnovni takt z 128
0000 B71B Interval equ 46875 ;to bi dalo 0.25 sekunde
; --- definicije naslovov vrat A
0000 0000 PortA EQU $0000
0000 0002 DDRA EQU $0002
;
org Ram
a001000 Cas: ds.b 1 ;pomozni stevec
a001001 ds.b SkladSize
0000 1101 Sklad: equ *
;
; --- vstopna tocka, priprava vmesnika, sprejem in oddaja
;
org Program
a002000 1410 Start: sei
a002002 CF11 01 lds #Sklad
a002005 1620 2D jsr InitPortA ;priprava vrat A
a002008 1620 36 jsr InitECT ;priprava casovnika ECT
a00200B 10EF cli
ECT – primer programa 4/7ECT – primer programa 4/7
a00200D 180B 0410 Zanka: movb #4,Cas ;stetje prekinitev (4 x 0.25 = 1s)
002011 00
a002012 9600 ldaa PortA
a002014 8880 eora #$80 ;vsako sekundo menjamo prikaz
a002016 5A00 staa PortA
a002018 B610 00 Zanka0: ldaa Cas
a00201B 26FB bne Zanka0
a00201D 20EE bra Zanka
;
;-----------------------------------------------------------
; Prekinitveni streznik ECT kanal 0
;
a00201F DC50 IsrECT: ldd TC0
a002021 C3B7 1B addd #Interval ;ponovno nastavimo interval
a002024 5C50 std TC0
a002026 4C4E 01 bset TFLG1,C0F ;brisemo zastavico
a002029 7310 00 dec Cas
a00202C 0B rti
;
ECT – primer programa 5/7ECT – primer programa 5/7 ;---------------------------------------------------
; Subrutina za zacetno pripravo vrat A, na katera je
; prikljucen 7 segmentni LED
;
InitPortA:
a00202D 86FF ldaa #$ff
a00202F 5A02 staa DDRA
a002031 867F ldaa #$7f
a002033 5A00 staa PortA ;pikica na LED naj bi se prizgala
a002035 3D rts
ECT – primer programa 6/7ECT – primer programa 6/7 ;----------------------------------------------------
; Subrutina za zacetno pripravo casovnika ECT
; primerjanje na kanalu 0
InitECT:
a002036 180B 0100 movb #IOS0,TIOS ;izberemo primerjalni nacin kanala 0
00203A 40
a00203B 180B 0000 movb #$00,TCTL1
00203F 48
a002040 180B 0000 movb #$00,TCTL2 ;izhodi odkljuceni
002044 49
a002045 1803 B71B movw #Interval,TC0 ;nastavimo prvo vrednost TC0
002049 0050
a00204B 180B 0700 movb #Delilnik,TSCR2 ;pred-delilnik (128)
00204F 4D
a002050 180B 8000 movb #$80,TSCR1 ;omogocimo casovnik
002054 46
a002055 4C4E FF bset TFLG1,#$ff ;brisemo morebitne zastavice
a002058 4C4F 80 bset TFLG2,#$80
a00205B 180B 0100 movb #C0I,TIE ;omogocimo prekinitve kanala 0
00205F 4C
a002060 3D rts
ECT – primer programa 7/7ECT – primer programa 7/7
; Prekinitveni vektor (ECT kanal 0)
org ECTVek
a00FFEE 201F fdb IsrECT
Recommended