Realni čas

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