1 / 42

Realni čas

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.

arion
Télécharger la présentation

Realni čas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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. • 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).

  2. Realni č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 • ....

  3. Realni č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.

  4. HCS12 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.

  5. HCS12 – ECT (PIM) • Modul ECT: Enhanced Capture Timer. • Precej kompleksno vezje - o tem bomo govorili kasneje

  6. HCS12 – CRG (RTI) • Časovnik RTI (ime oz. oznaka sta pravzaprav zavajajoča), uporaba: - periodično proženje opravil - enostaven način za izvedbo zakasnitev. • Pozor: RTI ni RTC (angl. Real-Time Clock): • RTC je namreč vezje, ki daje koledarski čas.

  7. 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

  8. CRG (pa še RTI vektor) RTI vektor: $FFF0, $FFF1

  9. Registri RTI - RTICTL • register RTICTL – nastavitev periode proženja prekinitve Delilnik Odštevalnik • Z vsebino tega registra izberemo periodo proženja: perioda proženja = (osnovna frekvenca, vsebina registra)

  10. Registri RTI - RTICTL • register RTICTL – pomen skupin bitov 210 blokiran 210 211 212 213 214 215 216

  11. HCS12 – RTI - register RTICTL • 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 • časovnik se lahko kadarkoli (ponovno) resetira z vpisom v ta register.

  12. HCS12 – 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

  13. HCS12 – RTI primer ;----------------------------------------------------------- ; Prekinitveni streznik RTI ; IsrRTI: bset CRGFLG,RtiIntE ;brisemo zastavico ;--- Karkoli je se potrebno rti ; ; Prekinitveni vektor (RTI) org RtiVek fdb IsrRTI

  14. 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

  15. CRG (registri COP) • Tu nastavimo interval, v katerem se paznik izteče. • Časovnik pa resetiramo z vpisom $55 in $AA v register ARMCOP

  16. CRG (pa še COP vektor) • Če se časovnik izteče, se postavi signal Reset, nakar pride do prevzema COP vektorja.

  17. 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

  18. HCS12 – ECT (blokovna shema) Preddelilnik Časovni števec V/i signali: - prestrezni - primerjalni Kontrolni in statusni registri Prestrezni in primerjalni registri Pulzna akumulatorja

  19. HCS12 - 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.

  20. HCS12 – 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).

  21. Registri ECT (1/3) • ECT začetni naslov: $0040 Kontrolni / statusni registri

  22. Registri ECT (2/3) Primerjalni / prestrezni registri

  23. Registri ECT (3/3) Pulzni akumulator, ....

  24. ECT - izbira takta bit v registruTSCR1 Notranji takt (tak vodila) biti v registruTSCR2 Zunanji takt na kanalu 7 to se nanaša na registre pulznih akumulatorjev

  25. ECT - 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

  26. ECT - 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 prestrezni registrer (TCn) (2) Če je izbran prestrezni način (TIOS) (1) če je na vhodu aktivna sprememba kot jo določata TCTL3/TCTL4

  27. ECT - 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.

  28. ECT – register TIOS Določimo, kateri kanali bodo prestrezni in kateri primerjalni register TIOS: IOS_i = 1, primerjalni izhod IOS_i = 0, prestrezni vhod

  29. ECT – register TSCR1 Omogočimo/onemogočimo (ustavimo) delovanje časovnika: Kontrolni register časovnega modula: TSCR1, TEN = 1.

  30. ECT – register TSCR2 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

  31. ECT – registra TCTL1/TCTL2 Določimo delovanje izhodnih kanalov: Kontrolni register časovnika: TCTL1/TCTL2 izhod odklopljen, sprememba izhoda, izhod nizek ali visok.

  32. ECT – registra TCTL3/TCTL4 Določimo delovanje vhodnih kanalov: Kontrolni register časovnika: TCTL3/TCTL4 vhod odklopljen, aktivna spremba gor ali dol ali obe.

  33. ECT – 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 !

  34. ECT – ogrodje programa TIOS 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 *

  35. ECT – 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

  36. ECT – 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

  37. ECT – 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

  38. ECT – 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 ;

  39. ECT – 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

  40. ECT – 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

  41. ECT – primer programa 7/7 ; Prekinitveni vektor (ECT kanal 0) org ECTVek a00FFEE 201F fdb IsrECT

More Related