Sistemski časovnik  in števec



Eden od pomembnih sklopov strojnega dela računalnika je sklop, ki omogoča osnovne operacije, povezane s štetjem, in osnovne operacije, vezane na realni čas. Ta sklop je programirljivi števec in časovnik. Nekoč je bil realiziran kot samostojno integrirano vezje, danes ga najdemo kot del kompleksnejših integriranih vezij.


V čem je razlika med števcem in časovnikom?

Števec šteje impulze binarnega signala. Predviden ima poseben števni vhod, kamor je priključen vir impulzov, ter register, v katerem je zapisano število preštetih impulzov. Ob vsakem novem impulzu se vrednost v tem registru poveča za 1.
Zaradi lažje realizacije nekaterih funkcij je števec lahko realiziran tako, da izbrano začetno vrednost vpišemo v register, ob preihajajočih impulzih pa se vrednost v registru zmanjšuje. Pri tem je seveda posebej pomemben trenutek, ko stanje doseže vrednost nič. Ta dogodek lahko sproži ustrezno prekinitev, pri kateri se nato izvede določen podprogram.

Princip delovanj casovnika
Slika: Princip števca. Stanje v registru se poveča z vsakim impulzom.

Če števcu damo šteti impulze iz oscilatorja z znano periodo (oz. frekvenco), dobimo števec časovnih intervalov znane dolžine. Naprava, ki šteje čas (mikrosekunde), je seveda časovnik. Če štejemo impulze iz oscilatorja s frekvenco fosc = 1 MHz, ustreza vsak prešteti impulz periodi oscilatorja, kar v našem primeru znaša 1/ 1MHz = 1 mikrosekunda.


Princip delovanja časovnika
Slika: Princip delovanja časovnika: štejejo se impulzi iz oscilatorja z znano frekvenco.

V obeh gornjih primerih gre torej za isto vezje (števec), ki je glede na priključen vhodni signal uporabljeno kot števec ali kot časovnik.


Arhitektura programirljivega števca - časovnika

Osnovno zgradbo opasanega podsistema tvorijo trije elektronski števci s priključki Clk, Gate in Out ter tremi podsklopi.

ČNotranja organizacija števcaPriključki

Clock
– priključek za binarni signal ali za takt oscilatorja. Frekvenca je navzgor omejena (hardverske omejitve), navzdol pa ne – možen je zelo dolg čas brez sprememb stanja (statično delovanje).

Out
– priključek za izhodni signal. Način delovanja je odvisen od programskih nastavitev.

Gate
– signal na tej sponki lahko služi kot pogoj (vrata) za signal oscilatorja. Na ta način lahko štejemo čas trajanja nekega dogodka.

Slika: Arhitektura časovnika in števca


Trije podsklopi so
•    vmesnik za komunikacijo z vodilom, ki skrbi za prenašanje podatkov iz vodila ter v vodilo,
•    bralno-pisalna logika, s katero se izbira branje oz. pisanje  ter
•    register za vpis kontrolne besede: posamezni biti te kontrolne besede določajo režim delovanja števcev.

Kontrolno besedo vpišemo programsko.

Kontrolna beseda pomeni 8-bitno informacijo o načinu delovanja. Posamezni biti imajo svoj pomen. Za ilustracijo (slika):
 Kontrolna beseda
Slika: Kontrolna beseda za inicializacijo delovanja števca

Z opisanim vezjem lahko neposredno realiziramo:
•    generiranje pulzov nastavljive (sprogramirane) dolžine,
•    generiranje takta, ki je N-krat počasnejši od osnovnega (N določimo sami),
•    generiranje pravokotnih signalov nastavljive (sprogramirane) periode oziroma frekvence,
•    štetje, ki ga sprožimo softversko ali hardversko.

Dodatek 1:
Razpored priključkov integriranega vezja programirljivega števca/časovnika. Primerjaj z gornjo shemo notranje arhitekture. V njej nista vrisani le še napajalna priključka Vcc in GND.
Izvorno vezje števca / časovnika


Dodatek 2: Primer programa za števec (v zbirnem jeziku), ki vhodni takt oscilatorja vrne v obliki pravokotnega signala s 100-krat zmanjšano frekvenco. Vhodni takt 1 MHz bo tako »predelan« v signal s frekvenco 1 kHz. Program je mišljen kot informativni dodatek. V prvem stolpcu programske kode so naslovi ukazov, v drugem so strojni ukazi, v tretjem so ukazi v zbirnem jeziku in v četrtem komentar.

B000 3E35   LD A,$36          ; pošljemo kontrolno besedo $35 (števec 0,
; način 3 – generator pravokotnega signala, binarno štetje
B002 3207E0 LD ($E007),A ; na port $E007...
B005 2104E0 LD HL,$E004 ; ...na naslov števca 0...
B008 3E00 LD A,$64 ; ...v register vpišemo 100 (=$64), najprej naložimo...
B00A 77 LD (HL),A ; ... ...lažji zlog števila $0064
B00B 3E10 LD A,$00 ; ...naložimo še...
B00D 77 LD (HL),A ; ... ... težji zlog števila $0064
B00E 3E01 LD A,1 ; poženemo...
B010 3208E0 LD ($E008),A ; ...števec 0
Števec je s tem inicializiran. Če je bila vhodna frekvenca  1,0 MHz, bo izhodna frekvenca 100-krat nižja (10 kHz), perioda pa 100-krat daljša kot perioda vhodnega signala: 100 mikrosekund.



Uporaba števca in časovnika


Pri delu z višjimi programskimi jeziki je uporaba števca in časovnika »skrita« v višjenivojskih funkcijah. Ukazi za potrebne nastavitve in komuniciranje s števcem in časovnikom se generirajo pri prevajanju.

 Timer - gradnik v višjih programskih jezikih
Slika: Uporaba timerja je v višjeprogramskČih vizualnih okoljih (tu: Lazarus) je preprosta:
Za animacijo delovanja KLIKNI!Rezultat: širina gumba Button1 se vsako sekundo poveča za 2 piksla.
(Za prikaz delovanja klikni na sliko!)