9.3. Ceasuri în timp real


Un ceas în timp real (Real Time Clock - RTC) este un IC care păstrează o pistă actualizată a timpului curent. Această informație poate fi citită de un microprocesor, de obicei pe o interfață serială pentru a facilita executarea de funcții software care sunt dependente de timp. RTC-urile sunt proiectate pentru un consum extrem de redus de energie, deoarece ele continuă de obicei să funcționeze atunci când sistemul principal este oprit. Acest lucru le permite să mențină timpul curent față de o referință de timp absolută, stabilită de microprocesor în mod direct. Figura 1 prezintă lucrările interne tipice ale unui RTC simplu.

Figura 1: Blocurile de circuite interne ale unui PCA21125

RTC-urile sunt un element foarte comun. Ele sunt prezente în orice, de la grupuri de instrumente și sisteme de divertisment audio-video în aplicații auto până la contorizarea casei. RTC-urile se integrează frecvent în alte dispozitive - de exemplu, IC-urile de comunicații în bandă largă utilizate în radiourile auto.

De obicei, acestea sunt conectate la un circuit microprocesor printr-o magistrală serială SPI sau I2C și pot conține o serie de alte funcții, cum ar fi memoria de rezervă, un temporizator de supraveghere a microprocesorului și cronometre pentru generarea unui eveniment în timp real. Unele RTC-uri includ ieșiri de întrerupere de secunde sau minute și sunt destul de inteligente pentru a face față anilor. (a se vedea figura 2).

Figura 2: Diagrama fluxului de date a unei funcții de timp.

Un RTC își menține ceasul prin numărarea ciclurilor unui oscilator - de obicei, un circuit oscilator cu cristal extern de 32,768 kHz, un oscilator bazat pe condensator intern sau chiar un cristal de cuarț încorporat. Unele pot detecta tranzițiile și pot calcula periodicitatea unei intrări care poate fi conectată.

Acest lucru poate permite unui RTC să perceapă ripplu de 50/60Hz pe o sursă de alimentare de rețea, sau să detecteze și să acumuleze tranziții provenite de la un ceas de epocă cu unitate GPS. Un RTC care face astfel operează ca o buclă blocată în fază (PLL), schimbând referința ceasului intern la "blocarea" acestuia pe semnalul extern. Dacă RTC își pierde referința externă, poate detecta acest eveniment (deoarece PLL-ul său se stinge la blocare) și poate rula liber de la oscilatorul său intern.

Unele RTC-uri mențin setarea oscilatorului la ultimul punct cunoscut înainte de a ieși din blocare cu intrarea. Rezoluția timpului este un aspect important - cât de precis trebuie să citiți timpul curent? Acest lucru este specificat de foaia de date RTC, dar în cele din urmă este limitat de frecvența oscilatorului.

Un RTC care rulează cu propria sa referință internă va integra o eroare legată de precizia absolută a referinței cristalului și se va realiza printr-o serie de condiții, incluzând temperatura. Cristalele sunt specificate pentru a funcționa într-un interval de temperatură, de obicei în jur de -10°C ~ 60°C - iar precizia lor este redusă dacă o schemă deviază în afara acestuia (figura 3).

Unele RTC-uri au compensație de temperatură integrată care poate extinde și crește precizia circuitului oscilator cu cristal. De asemenea, cristalele îmbătrânesc, ceea ce le schimbă natura fizică, ceea ce duce la erori suplimentare. Cristalele cu costuri reduse tipice au o toleranță la frecvență de aproximativ +/- 20ppm (părți per milion), și acumulează lent greșeli. Un cristal de +/- 20ppm poate devia până la 72ms în fiecare oră sau 1,7 secunde pe zi. Ocazional, acestea necesită recalibrarea, pentru a corecta driftul (deviația).

Procesorul conectat obține un "timp de sistem" actualizat într-un fel și scrie această nouă valoare la RTC pentru ca acesta să poată începe să contorizeze. Acest timp al sistemului ar putea proveni de la introducerea manuală de la o interfață utilizator, citirea unei unități GPS sau de la o conexiune cloud.

Figura 3: Abaterea frecvenței cu temperatura a unui cristal tipic de 32.768 kHz.

RTC-urile au nevoie de energie continuă și trebuie să aibă un consum extrem de redus de energie. Majoritatea RTC-urilor folosesc alimentarea circuitelor digitale atunci când aparatul este pornit și activ, dar comută la o sursă de alimentare conectată în mod continuu când circuitul este oprit. Această sursă de alimentare ar putea fi o baterie dedicată, un supercondensator încărcat sau o sursă separată de alimentare de la rețea.

Multe RTC-uri pot detecta această schimbare și pot intra într-o stare de putere ultra-scăzută, în care opresc toate circuitele, cu excepția celor care sunt esențiale pentru menținerea ceasului, pentru a conserva durata de viață a bateriei. RTC-urile pot include și funcții de alarmă - timpi setați care, atunci când sunt atinși, declanșează RTC pentru a comanda o ieșire care trezește procesorul la lucru.