Mikro-ohjainpiiriin integroitu reaaliaikainen kello- ja kalenterilohko tarjoaa suunnittelijoille kätevän tavan vähentää tarvittavien komponenttien lukumäärää ja leikata ohjelmointikuluja älykkäissä mittareissa ja muissa vastaavissa sovelluksissa.
Artikkelin kirjoittaja |
Lähes kaikessa piirisuunnittelussa tärkeä tavoite on vähentää järjestelmään tarvittavien komponenttien lukumäärää ja alentaa käyttäjän ohjelmointikustannuksia. Apua näihin molempiin tuo reaaliaikaisen kellon ja kalenterin sisältävä RTCC-moduuli (real-time clock and calendar). Se tarjoaa järjestelmälle tarkan kellonajan ja päivämäärän erittäin vähäisellä tehonkulutuksella. Tämä tapahtuu suorittimen puuttumatta asiaan lainkaan tai ainoastaan hieman.
Moduuli voi tuoda merkittäviä etuja monenlaisiin sovelluksiin kuten hälyttäviin digitaalikelloihin sekä älykkäisiin energiamittareihin, joiden tärkeys kasvaa jatkuvasti, kun älykkäitä sähköverkkoja otetaan käyttöön yhä useammassa maassa.
Microchipin PIC-mikro-ohjaimiin integroitu RTCC-lohko sisältää tarkan kellon ja sadan vuoden kalenterin, joka huomioi myös karkausvuodet automaattisesti. Aikajakso ulottuu tammikuun ensimmäisestä päivästä vuonna 2000 joulukuun viimeisen päivän loppuun vuonna 2099. Ajanosoitus on 24-tuntinen ja näyttöerottelu on tarkimmillaan puoli sekuntia.
Hälytysajankohdan asetuksessa käytettävissä ovat sekuntitasolla 0,5, 1 ja 10 s, minuuttitasolla 1, 10 ja 60 min sekä kalenteritasolla päivä, viikko ja kuukausi.
Kuva 1 esittää RTCC-moduulin lohkokaaviota. Se käyttää erillistä kellosignaalia, joka tuodaan moduulin ulkopuolisesta SOSC-oskillaattorista, jonka kvartsikide värähtelee 32,768 kilohertsin taajuudella. Tämän ansiosta moduuli voi jatkaa toimintaansa, vaikka CPU-kellosignaali olisi estetty järjestelmän ollessa syvän unen tilassa (deep sleep mode).
Kuva 1. RTCC-moduulin lohkokaavio.
Jakosuhteella 1:16384 toimiva esiskaalain tarjoaa ajannäytölle 0,5 sekunnin erottelukyvyn. Tämän perusteella RTCC-ajastin lisää aikaan sekunteja, minuutteja, tunteja, päiviä, kuukausia ja vuosia, jotka tallennetaan RTCVALx-rekistereihin. Näitä arvoja verrataan käyttäjän asettamiin hälytysarvoihin ja hälytyskeskeytys liipaistaan, kun lukemat täsmäävät.
Hälytysasetukset tallennetaan ALRMVALx-rekistereihin. Jos sovelluksessa tarvitaan useita jaksollisia hälytyksiä, aikavälit eri hälytystapahtumien välille asetetaan hälytysmaskien avulla. RTCC-lähtönastaan saadaan joko sekuntikello tai puolitaajuinen hälytyspulssi käyttäjän asettamasta konfiguraatiosta riippuen.
Kiinteän ohjelmiston yksinkertaistamiseksi RTCC-moduulin aika- ja hälytysarvojen rekisteriliitännät on toteutettu käyttäen binäärikoodattua desimaalimuotoa (BCD).
Oheistoimintojen konfigurointi
Käyttäjä määrittää kellonajan kirjoittamalla halutun vuoden, kuukauden, päivän, tunnin, minuutit ja sekunnit aikarekistereihin. Moduulin sallintabitti RTCEN voidaan kuitenkin asettaa ja rekistereihin RTCVALH ja RETCVALL kirjoittaa vain silloin, kun rekisterien sallintabitti RTCWREN on asetettu ykköseksi. Muussa tapauksessa näihin rekistereihin kirjoittaminen jätetään huomiotta.
RTCC-ajastimen (RTCVALx) ja hälytysajastimen (ALRMVALx) rekistereihin päästään vain vastaavien rekisteriosoittimien kautta. Jokainen RTCVALH-rekisterin kirjoitus- tai lukutapahtuma vähentää RTCC-osoittimen arvoa yhdellä, kunnes lukema saavuttaa arvon 00.
Kun RTCC-lähtö on sallittu, käyttäjä voi valita lähdöksi joko sekuntikellon tai hälytyspulssin, jonka taajuus on puolet hälytystaajuudesta. Tarkempaan ajastukseen pääsemiseksi ja keskeytymättömän toiminnan varmistamiseksi jopa järjestelmän syvän unen aikana suositellaan kellolähteeksi moduulin ulkopuolista SOSC-oskillaattoria.
Kun RTCC on käytössä, ajastin etenee laskennassa alkaen määritellystä aloituskohdasta. RTCC-ajastinrekisteriin vahingossa kirjoittamisen estämiseksi suositellaan myös, että RTWREN-bitti nollataan aina, kun rekisteriin ei kirjoiteta.
Hälytyksen ajankohta voidaan asettaa puolesta sekunnista yhteen vuoteen ja toistovälin voi käyttäjä asettaa haluamakseen. Jokainen ALRMVALH-rekisterin luku- tai kirjoitustapahtuma vähentää hälytysosoittimen arvoa yhdellä.
Paristovarmistus
RTCC-moduuli kykenee jatkamaan toimintaansa varmistuspariston voimin mahdollisten sähkökatkosten sattuessa, jotka muuten vaikuttaisivat ajastuksen tarkkuuteen. Tässä VBAT-toimintamuodossa PIC-mikro-ohjaimen keskusyksikön tehoa alennetaan ja lisäksi RTCC-moduulin keskeytymätön tehonsyöttö varmistetaan. Tässä toimintamuodossa käytetään VBAT-nastaan kytkettyä varmistusparistoa kuvan 2 mukaisesti.
Kuva 2. VBAT-toimintamuodon rakenne.
Sirulle integroitu tehokytkin havaitsee jännitteen häviämisen VDD-syöttölinjasta ja kytkee VBAT-nastan ylläpitoregulaattorille. Syöttöjännite pysyy 1,2 voltissa, mikä riittää sekä regulaattorille että RTCC-moduulin kellolähteelle ja syvän unitilan yleiskäyttöisille rekistereille (DSPGPRx). Näin RTCC-moduuli voi jatkaa toimintaansa aivan kuin sähkökatkosta ei olisi ollutkaan.
Moduuli toipuu VBAT-tilasta heti, kun syöttöjännite VDD palautuu. Toimintatilasta herääminen tunnistetaan tarkistamalla VBAT-bitin tila. Jos bitti on asetettu ykköseksi, kun moduuli on toiminnassa ja aloittamassa nollausvektorin koodinkäsittelyä, tämä kertoo, että poistuminen tapahtui VBAT-tilasta. Tulevien VBAT-toipumistapahtumien tunnistamiseksi bitti pitää nollata ohjelmallisesti.
Yksi VBAT-toimintoa tukevista Microchipin demokorteista on LCD Explorer Demonstration Board. Siinä on valmiiksi pidike CR2032-tyyppistä nappiparistoa varten.
Hälyttävät digitaalikellot
Kuvassa 3 on esimerkki RTCC-toteutuksesta, joka sisältää LCD-ohjaimen ja CCP-lohkon (Capture-Compare-PWN) hälytyksellä varustettua digitaalikelloa varten.
Kuva 3. RTCC-moduulilla toteutettu hälyttävä digitaalikello.
Ulkopuolinen SOSC-oskillaattori tuottaa kellosignaalin RTCC-moduulille. Jos RTCC-lähtönasta on määritelty sekuntikelloksi, ledi D1 vilkkuu sekunnin välein. RTCVALx-rekisterien sisältöä ohjataan laiteohjelmistolla ja lukemat näytetään nestekidepaneelissa LCD-näytönohjaimen kautta.
Hälytyskeskeytys liipaisee CCP-lohkon tuottamaan PWM-muotoisen (pulse-width modulation) lähtösignaalin, joka aktivoi pietsosummerin P1 jokaisesta hälytystapahtumasta. Hälytyksen kestoa ohjataan laiteohjelman avulla.
S1, S2 ja S3 ovat painokytkimiä, joita käytetään asettamaan RTCC-lohkon kellonaika ja päivämäärä sekä hälytysasetukset. Yhtä painikkeista voidaan käyttää myös liipaisemaan RTCC:n laskennan tarkka aloitushetki.
Microchipin valikoimassa on useita demokortteja, joita voidaan hyödyntää tähän sovellukseen. Useissa RTCC-lohkolla varustetuissa PIC-ohjainpiireissä on mukana myös sisäinen LCD-näytönohjain, joka kykenee suoraan ohjaamaan nestekidepohjaista näyttölevyä. Muissa piireissä voidaan hyödyntää MSSP-lohkoa, joka kommunikoi LCD-näytön kanssa ja syöttää sille tiedot kellonajasta ja päivämäärästä.
Energiamittarit
Energiaa mittaaviin laitteisiin RTCC-moduuli voidaan integroida muiden oheislohkojen kanssa. Näitä ovat esimerkiksi AD-muuntimet ja LCD-näytönohjaimet. Mittaussovellukseen käytettävän suorittimen pitää saada tuekseen suureen resoluutioon yltävä AD-muunnin tarkkoja jännite- ja virtamittauksia varten. MCU:n tulee lisäksi kuluttaa niukasti tehoa ja olla käytettävissä pariston voimin RTCC-lohkon keskeytymättömän toiminnan varmistamiseksi. Suorittimeen pitää olla integroituna myös riittävästi EEPROM-muistia tiedonkeruu- ja kalibrointidatan tallentamiseksi. Microchipin valikoimissa on useita 8-bittisiä PIC-mikro-ohjaimia, jotka täyttävät nämä vaatimukset.
RTCC-moduulin määräajoin toistuvaa automaattista säätöä voidaan soveltaa AD-muunninlohkon kanssa muodostamaan ohjelmallinen lämpötilan kompensointi vieläkin tarkemman aikasignaalin tuottamiseksi. Näissä ohjainpiireissä on myös sisäinen LCD-näytönohjain, joka voi suoraan näyttää nestekidepaneelissa reaaliaikaisen energiankulutuksen. Niissä on myös ulkoinen liitäntä varmistusparistolle VBAT-nastan kautta. Tämä varmistaa RTCC-lohkon jatkuvan toiminnan myös mahdollisten sähkökatkosten aikana.
Tehokas kokonaisuus
PIC-mikro-ohjainpiirien RTCC-lohko tarjoaa kaikki tarvittavat ominaisuudet tarkan ajan ja päivämäärän ylläpitoon ja seurantaan monenlaisissa järjestelmissä. Konfigurointi on helppoa ja virheen kalibrointi hoituu automaattisesti. Tehonkulutus on lisäksi erittäin vähäistä.
Koska RTCC-lohkoa ei yleensä käytetä sellaisenaan, sen käyttökelpoisuus pääsee paremmin arvoonsa muihin oheislohkoihin yhdistettynä. PIC-ohjainpiirien valikoima tarjoaa monipuolisen valikoiman sirulle integroituja oheislohkoja, jotka voidaan ottaa käyttöön yhdessä RTCC-lohkon kanssa ja muodostaa näin hälytyksellä varustettuja kellojärjestelmiä, energianmittausjärjestelmiä ja muita vastaavia sovelluksia.