Reaalajakell

Reaalajakell (ingl real time clock ehk RTC) on arvutites ja muudes elektroonilistes seadmetes kasutatav aja arvestamisega tegelev lülitus. Reaalajakella põhiülesanne on hoida sõltumatult ja täpselt hetke aega ning seda teistele seadme osadele kindlas vormingus edastada.

Reaalajakell leiab kasutust nii personaalarvutites ja serverites kui ka väikestes manussüsteemides, seega igal pool, kus on vajadus täpse aja järele.

EhitusRedigeeri

 
Ajalooline Dallas Semiconductorsi integreeritud varupatareiga reaalajakivi personaalarvuti emaplaadil

Reaalajakellad on enamasti iseseisvad integraallülitused, mille mõõtmed võivad olla väga väikesed. See võimaldab neid mugavalt paigutada erinevatesse elektroonikaseadmetesse, muuhulgas väikestesse mobiilsetesse seadmetesse.[1]

Põhilised reaalajakellade väljaviigud on toitejalad (sealhulgas on enamasti eraldi toitejalg varupatarei ja põhitoite jaoks), sideliidese väljaviigud (sagedamini kasutatavad on SPI ja I2C sideprotokollid), kvartskristalli ühendamiseks sisendviigud ja multifunktsionaalne väljaviik protsessori katkestuse tekitamiseks.[2]

Ka on reaalajakelli, mille puhul võib olla varupatarei juba komponendi sisse ehitatud. See ei võimalda küll komponendi väga väikseid mõõtmeid, kuid see-eest vähendab patarei paigutamise vaeva.[3]

Samuti võib olla juba reaalajakella sisse integreeritud kvartskristall koos selle juurde kuuluvate kondensaatoritega. Mainitud lähenemise puuduseks on see, et korpuse temperatuuri muutused mõjuvad kristalli temperatuurile, mille tagajärjel võib kristalli täpsus kõikuda. Samas vähendab selline viis oluliselt trükkplaadi disainija vaeva.

Tavaliselt sisaldab reaalajakella kivi ostsillaatorit. Sel puhul on vaja väliselt ühendada kristall koos kondensaatoritega.[4]

TööpõhimõteRedigeeri

Reaalajakellad töötavad põhimõttel, et võnkeid loetakse kindla sagedusega resonaatori sisendist ning vastavalt sellele, kas otse või suurendatakse mingi arv korda mälus asuvat kellaaega ja kuupäeva. Kellaaega ja kuupäeva säilitatakse tavaliselt SRAM- (Static Random Access Memory) mälus, mille poole pöördudes saab mikrokontroller või protsessor selle sealt välja lugeda.[4]

FunktsioonidRedigeeri

Reaalajakella funktsioonid sarnanevad kella ja kalendri omadega, järgides täpset kuupäeva ja kellaaega alates hetkest, mil vastavale reaalajakellale programmeeriti hetkeaeg sisse. Hetkeaja programmeerimisest alates loeb lülitus iseseisvalt aega seadme keskprotsessori abi vajamata. See tähendab, et keskne protsessor saab kasutada ressurssi muudeks tegevusteks[5].

Teine oluline reaalajakella funktsioon on hoida kellaaeg õige ka siis, kui seade ühendatakse vooluvõrgust lahti või esineb elektrikatkestus. Selleks kasutavad reaalajakellad eraldi varutoiteallikat, milleks on enamasti väike liitium-ioon patarei, tänapäeval võib selleks olla ka superkondensaator, mille eeliseks on uuesti laaditavus.[4]

Reaalajakellade suur eelis on nende väga madal voolutarve, mis suudab toita varutoitena kasutatavaid väikesemõõtmelisi patareisid piisavalt, et patareid kestaks terve oma eluea ehk 10 aastat. Patarei toitevõimelisus sõltub nii patarei mahtuvusest kui ka sellest, kui suure osa ajast saab reaalajakell voolu põhitoitest ja kui suure osa ajast peab kasutama varutoiteallikat. Väike voolutarve saavutatakse ka sellega, kui põhitoitelt lülitatakse kell varutoitele, mis tagab ainult õige kellaaja arvestamise, muud funktsioonid varutoite ajal ei toimi. Olenevalt patarei ühendusest võib olla võimalik patareid vahetada, mis tähendab, et kellaaeg tuleb uuesti seadistada.[1]

Reaalajakellad pakuvad enamasti ka kalendri funktsiooni, see tähendab, et kella on võimalik kasutada kuupäeva jälgimiseks. Selleks on reaalajakellades riistvaraliselt implementeeritud kalender, mis arvestab automaatselt nii liigaastate, erinevate kuude pikkuste kui ka iga 100 aasta tagant puuduva liigaastaga. See kõik võimaldab seadme programmeerija vabastada küllaltki tülikast kalendri programmeerimisest ning ühtlasi vabaneb selle võrra keskprotsessori ressurss.[5]

Et veelgi enam põhiprotsessori tööd lihtsamaks teha, salvestavad paljud reaalajakellad riistvaralisel tasemel aja andmed mällu tekstina, inimloetaval kujul, mis tähendab et põhiprotsessoril piisab need andmed sealt kasutatava sideliidese kaudu välja lugeda ja andmeid enam teisendada ei ole vaja. Selline lähenemine on eriti oluline kalendri funktsiooni puhul.[3][6]

Enamik reaalajakellasid sisaldab ka alarmi funktsiooni, see tähendab, et on võimalik salvestada alarmi aeg, mis säilib sarnaselt kellaajaga ka voolukatkestuste korral. Alarmist teavitamine, siis kui hetkeaeg on saanud võrdseks seadistatud alarmi ajaga, toimub enamasti ühe reaalajakella väljaviiguga, mis seatakse vastavalt seadmele kas kõrgeks või madalaks. Selline funktsioon vabastab protsessori pidevast kellaaja kontrollimisest, selle asemel saab kasutada riistvaralist katkestust[1][4].

Osades reaalajakellades on sisse ehitatud väike varumälu, mis samuti säilib voolukatkestuse korral. Seega võib sinna kirjutada kriitilisi andmeid, mis jäävad alles sõltumata seadme toites olevatest häiretest. Enamasti kasutatakse selleks sama mälu, kus hoitakse ka kuupäeva ja kellaaega.[4]

Seadmed võivad sisaldada ka valvetaimerit (ingl watchdog timer), mille eesmärk on teha protsessorile taaskäivitus, juhul kui protsessor peaks ootamatult mõne funktsiooni taha kinni jääma.[1]

Mitmed reaalajakellad võimaldavad veel kellaaja kalibreerimist, mis kujutab endast ostsillaatori võnkeringi modifitseerimist. See võimaldab parandada kristalli võimalikku ebatäpsust, mis võib olla tingitud kristalli vananemisest, temperatuuri erinevustest või valesti valitud kondensaatoritest kristalli juures.[7]

KasutusRedigeeri

Kuigi lihtsat ajapidamist on võimalik saavutada ka ainult tavalise mikrokontrolleriga, kasutades sisemisi taimereid, on see ebamugav, sest kontrolleri igal taaskäivitamisel algab loendamine jälle algväärtusest (s.t kellaaeg ja kuupäev tuleb iga kord uuesti seadistada). Kui uuesti seadistamine pole probleemiks või kui ei olegi vaja lugeda absoluutset aega, polegi tegelikult vajadust reaalajakella järele.[8]

Küll aga, kui tegu on juba natuke keerulisema seadmega, kus on nõutud täpne ajaarvestus, mis peab säilima ka toite kadumisel, on hea kasutada reaalajakella, seda nii statsionaarsetes seadmetes kui ka kaasaskantavates akutoitega seadmetes, kus kuupäev ja kellaaeg peaksid jääma õigeks ka aku tühjenemise korral.[1]

SaadavusRedigeeri

 
Reaalajakella moodul Adafruitilt

Reaalajakelli toodavad paljud tuntud integraallülituste tootjad, sealhulgas näiteks Maxim Integrated Products, Intersil, Texas Instruments, STMicroelectronics ja Epson. Varem oli väga populaarne reaalajakellade tootja ka Dallas Semiconductors, mille toodetud kellasid võib leida paljudelt vanematelt personaalarvutite emaplaatidelt.[9]

Lisaks eraldi reaalajakellalülitusele on saadaval reaalajakellamoodulid, mis sisaldavad patareiühendust ja kristalli ning on juba trükkplaadile joodetud. Selliste moodulite olemasolu teeb mugavaks prototüüpimise ning seadmete kasutamise hobielektroonikute hulgas, kuna neid on võimalik lihtsalt oma skeemi ühendada, kasutades näiteks makettplaati.[10]

ViitedRedigeeri