Multe dintre sistemele electronice includ un ceas de timp real RTC (real-time clock). Ceasul este utilizat pentru numeroase şi diferite funcţii precum: calendar, indicarea ceasului, iniţierea unor activităţi periodice (e.g. activarea regulată pentru realizarea unor măsurători). RTC există de mulţi ani, dar nu au fost niciodată optimizate pentru aplicaţii embedded. Există soluţii disponibile care integrează un RTC cu funcţionare ‘autonomă’ pe un MCU, obţinând astfel multe avantaje. Acest articol urmăreşte discutarea modului în care unificarea dintre un RTC tradiţional şi un MCU creează un dispozitiv mai bun decât suma unor elemente distincte.
Stabilirea duratei de timp
Figura 1 ilustrează digrama bloc a unui modul de ceas inteligent smaRTClock. Circuitul va realiza toate funcţiile convenţionale asociate cu un RTC (cronometrare, alarmă şi operaţii atunci când sistemul central este închis) şi funcţii de protecţie precum revenirea dintr-o cădere de tensiune sau dintr-o eroare a semnalului de ceas.
Unitatea bază de temporizare în smaRTClock este un numărător continuu pe 47 de biţi. Acesta are la bază un cristal de 32,768 kHz sau poate utiliza un auto-oscilator intern ce operează la 20kHz sau 40kHz (auto-oscilatorul consumă mai puţin din punct de vedere energetic dar este mai puţin exact). Pentru determinarea elementelor de calendar şi ceas din informaţia de la numărător, este utilizat un software. Nu este nevoie de un set suplimentar de registre pentru păstrarea calendarului în unităţi convenţionale de timp. Unul dintre avantajele acestei abordări software este acela că utilizatorul are un control mai mare asupra operaţiilor, deoarece algoritmul poate fi complex sau simplu în funcţie de cerinţele sistemului. De exemplu compensarea de temperatură, care în general complică lucrurile, poate fi integrată în algoritm prin utilizarea senzorului de temperatură on-chip. Pe de altă parte, dacă sistemul nu necesită activări dese (de exemplu temporizatorul pompei unei piscine care trebuie să acţioneze odată pe zi), implementarea unui control complex nu este utilă.
Există trei registre de interfaţare care controlează registrele interne ale modulului SmaRTClock. Aceasta păstrează la minim numărul de registre necesar pentru funcţii speciale şi oferă de asemenea un nivel de abstracţie astfel încât numărătorul să nu poată fi accidental modificat. Registrul de alarmă poate fi stabilit astfel încât să furnizeze un semnal hardware de întrerupere atunci când valoarea corespunzătoare numărătorului continuu pe 47 de biţi este egală cu valoarea la care trebuie începută o acţiune. Acest tip de funcţionalitate poartă şi denumirea de “ieşire comparată”.
Un MCU poate include şi un mod de consum energetic redus, cunoscut sub numele de mod de “suspendare”. În acest mod, el este capabil de activare (fără resetarea dispozitivului) în cadrul unui singur ciclu a sistemului la apariţia unei întreruperi de alarmă de la modulul smaRTClock.
Compensarea temperaturii
Oscilatoarele cu cristal compensate cu temperatura şi cipurile RTC compensate cu temperatura sunt relativ scumpe prin comparaţie cu dispozitivele fără compensaţie de temperatură. Pentru păstrarea preciziei de cronometrare pe un domeniu larg de temperatură este necesară existenţa câtorva modalităţi de compensare a temperaturii. Schimbările de temperatură ambientală, variaţia tensiunii de alimentare şi vechimea, duc la o tendinţă de derivă a frecvenţei oscilatorului.
Din fericire, C8051F410 MCU (prezentat în figura 2) include un senzor de temperatură on-chip cu o precizie de ±3 %, permiţându-se astfel includerea informaţiei de temperatură în algoritmul compensare al cronometrării. Avantajul este acela că oscilatoarele cu cristal economice, ce nu au compensare de temperatură integrată, pot fi utilizate în sistem.
Pentru implementarea algoritmului de compensare a temperaturii, temperatura ambientală este determinată odată pe minut, prin utilizarea senzorului de temperatură on-chip. În cele mai frecvent utilizate medii de lucru, nu se aşteaptă modificări importante în acest interval de timp. Valoarea este apoi utilizată pentru calcularea deviaţiei (în ppm) şi stocarea acestui rezultat (numărul de microsecunde ce va fi compensat) într-o locaţie de memorie. Valoarea calculată pentru fiecare minut trecut este acumulată pe perioada zilei, iar la sfârşitul acesteia, algoritmul va compensa timpul pierdut.
În figura 2 sunt prezentate şi alte elemente care dau funcţionalitate smaRTClock, precum sursele de alimentare, circuitul de comutare pe baterii, sursele de ceas, memorie RAM pentru back-up şi însuşi blocul RTC. Oricum, avantajul real, este combinarea acestor elemente pe un singur cip, fără necesitatea mai multor cipuri autonome care să trebuiască să comunice date între ele.
Gestionarea căderilor de tensiune
Un stabilizator de tensiune on-chip poate fi conectat la orice tensiune de la 2 V la 5,25 V. Tensiunea actual utilizată pentru alimentarea CPU este de 2,5V, cu toate că ea este decuplată de la sistemul de intrare/ieşire al cipului, astfel încât MCU poate fi utilizat într-un domeniu mare de sisteme (de la 2 la 5,25 V) fără necesitatea unei interfaţări exterioare. Un pin VIO poate fi legat la tensiunea de alimentare a sistemului, astfel încât I/O va opera la acelaşi nivel ca şi celelalte dispozitive ale acestuia. Suplimentar sursei de alimentare principale, intrarea VBAT poate fi legată la o baterie ce operează la minim 1V. Aceasta oferă sursa de “backup” pentru SmaRTClock.
Primul avantaj al smaRTClock este acela că, dacă sursa de alimentare a sistemului cade sub nivelul VBAT, circuitul on-chip de comutare pe baterii comută alimentarea smaRTClock pe bateriile de rezervă. Aceasta înseamnă că, în cazul unei căderi a tensiunii de alimentare, RTC va continua să opereze, iar memoria dedicată RAM din modulul smaRTClock va fi menţinută. Prin implementarea simplă a unui software care periodic stochează starea sistemului în memoria RAM, sistemul poate reveni la o stare cunoscută, iar datele pe care sistemul le-a înregistrat nu vor fi pierdute la revenirea online a sursei de alimentare. Atunci când MCU este resetat, este iniţiată o procedură de verificare a registrului surselor de resetare, pentru a verifica dacă alimentarea sistemului a fost pierdută; apoi, procedura de resetare citeşte conţinutul memoriei RAM pentru backup şi reîncarcă datele importante în CPU şi registrele de lucru. De exemplu, dacă dispozitivul este utilizat într-un echipament de măsurare, el poate cu uşurinţă păstra adresele datelor, momentul pierderii alimentării, cât timp a fost pierdută alimentarea, menţinând informaţiile precise în ciuda lipsei energetice. La revenirea tensiunii de alimentare, circuitul de comutare reconfigurează automat alimentarea MCU, astfel încât sursa de rezervă este oprită. Aceasta asigură optimizarea duratei de viaţă a bateriilor pentru backup.
Gestionarea erorilor de ceas
În cazul sistemelor uzuale ce utilizează componente autonome, erorile de ceas furnizează probleme potenţial mai mari decât căderile de tensiune. Uzual, ceasul sistemului pentru cipul C8051F410 va fi generat de un oscilator on-chip de 24,5 MHz valoare crescută la 49 MHz cu precizie de 2% (cu tensiunea şi temperatura). El poate de asemenea utiliza un oscilator extern, cu toate că nu este necesar, deoarece oscilatorul on-chip este suficient de precis pentru a opera funcţiile interne precum şi comunicaţiile seriale conform specificaţiilor. SmaRTClock ar trebui conectat la un oscilator cu cristal de tip low cost de 32,768 kHz pe pinii XTAL 3 şi XTAL 4. Dispozitivul îşi ia alimentarea de la aceşti pini prin intermediul modulului smaRTClock, atunci când acesta din urmă este alimentat.
Într-un sistem uzual, dacă apare o problemă cu oscilatorul de 32,768 kHz, sursa de RTC este pierdută şi sunt generate probleme nerecuperabile. Pe de altă parte SmaRTClock dispune de un circuit independent de detectare a erorilor de ceas. Erorile vor cauza o resetare a dispozitivului, indicându-se în acelaşi timp înregistrarea unei erori de ceas. La repornirea MCU, ultima informaţie salvată cu privire la starea sistemului poate fi recuperată cu uşurinţă din memoria RAM, încă alimentată de bateriile de backup.
Semnalul de la oscilatorul de 32,768 kHz poate fi de asemenea ghidat pe calea ceasului sistemului principal, astfel încât este posibilă rularea MCU la frecvenţă joasă. Aceasta se poate utiliza în sisteme ce nu pot fi puse periodic în starea “sleep”, dar trebuie să funcţioneze continuu în modul de viteză mică/ consum energetic redus.
Sunt câteva avantaje evidente în integrarea unor funcţii uzuale în MCU. Funcţii ca: activări periodice, agendă, ceas sunt utilizate în multe echipamente de la aparate simple de măsurare la înregistratoare de date. Este de asemenea de mare avantaj încorporarea de caracteristici de autoprotecţie, ce permit recuperarea sistemului în cazul unor căderi de alimentare sau erori de ceas, menţinând ultima informaţie de stare a sistemului. SmaRTClock se poate activa foarte repede, şi anume într-un singur ciclu al ceasului sistemului.
de Ross Bannatyne, Silicon Laboratories Inc.