42
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 čas

  • Upload
    arion

  • View
    55

  • Download
    0

Embed Size (px)

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

Page 1: Realni čas

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

Page 2: Realni čas

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

Page 3: Realni čas

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

Page 4: Realni čas

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.

Page 5: Realni čas

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.

Page 6: Realni čas

HCS12 – ECT (PIM)HCS12 – ECT (PIM)

Precej kompleksno vezje - o tem bomo govorili kasneje

Modul ECT: Enhanced Capture Timer.

Page 7: Realni čas

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.

Page 8: Realni čas

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

Page 9: Realni čas

CRG (pa še RTI vektor)CRG (pa še RTI vektor)

RTI vektor: $FFF0, $FFF1

Page 10: Realni čas

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

Page 11: Realni čas

Registri RTI - RTICTLRegistri RTI - RTICTL

register RTICTL – pomen skupin bitov

210

210

211

212

213

214

215

216

blokiran

Page 12: Realni čas

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

Page 13: Realni čas

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

Page 14: Realni čas

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

Page 15: Realni čas

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

Page 16: Realni čas

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

Page 17: Realni čas

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.

Page 18: Realni čas

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

Page 19: Realni čas

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

Page 20: Realni čas

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.

Page 21: Realni čas

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

Page 22: Realni čas

Registri ECT (1/3)Registri ECT (1/3)ECT začetni naslov: $0040

Ko

ntro

lni /

sta

tusn

i re

gist

ri

Page 23: Realni čas

Registri ECT (2/3)Registri ECT (2/3)P

rim

erja

lni /

pre

stre

zni r

egis

tri

Page 24: Realni čas

Registri ECT (3/3)Registri ECT (3/3)P

ulz

ni a

kum

ula

tor,

....

Page 25: Realni čas

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

Page 26: Realni čas

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

Page 27: Realni čas

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)

Page 28: Realni čas

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.

Page 29: Realni čas

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

Page 30: Realni čas

ECT – register TSCR1ECT – register TSCR1

Omogočimo/onemogočimo (ustavimo) delovanje časovnika:

Kontrolni register časovnega modula: TSCR1,

TEN = 1.

Page 31: Realni čas

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

Page 32: Realni čas

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.

Page 33: Realni čas

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.

Page 34: Realni čas

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 !

Page 35: Realni čas

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 *

Page 36: Realni čas

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

Page 37: Realni čas

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

Page 38: Realni čas

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

Page 39: Realni čas

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

;

Page 40: Realni čas

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

Page 41: Realni čas

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

Page 42: Realni čas

ECT – primer programa 7/7ECT – primer programa 7/7

; Prekinitveni vektor (ECT kanal 0)

org ECTVek

a00FFEE 201F fdb IsrECT