2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
RH850 MCU:n RTC (reaaliaikainen kello) ottaa käyttöön BCD (binary coded decimal) -koodausmuodon, tukee karkausvuosien automaattista tunnistamista ja sisältää siirtotoiminnot sekunneille, minuuteille, tunneille, päiville, viikoille, kuukausille ja vuosille. Niistä toinen on jaettu 60 kantoon, tunti kannetaan 12 tai 24, viikko 7, päivä 28, 29, 30, 31 kuukauden mukaan, kuukausi kannetaan 12 ja vuosi on 00-99.
Viime aikoina meillä on käytössä RenesasMCU RH850:n RTC kohtasi ajoitussiirtopoikkeusongelman. Kun tulostettiin aikamuuttuja UART:n kautta, havaittiin, että sekuntien ja minuuttien siirto ei ollut odotettu 60 siirto, vaan se esiintyi virheellisesti 90:n siirtona. Tämä ilmiö herätti huomiomme.
Käytä kuitenkin emulaattoria valvomaan suoraanRTCTarkasteltaessa sisäisiä SEC-, MIN- ja muita rekistereitä havaittiin, että ne kulkivat normaalisti 0x59:n saavuttamisen jälkeen, mikä osoittaa, että itse RTC:n ajoitustoiminnossa ei ole ongelmia.
Huolellisen tarkkailun jälkeen havaitsimme keskeisen säännön: kun sekunnit ylittävät 09:n, näytetty arvo hyppää suoraan arvoon 16 ja jatkaa sitten kasvuaan. Tämä ilmiö osoittaa, että ongelma saattaa olla tietomuodon muuntamisessa. Koska RTC käyttää sisäisesti BCD-koodausmuotoa, käsittelemme sen desimaalitietoina, kun lähetämme sen sarjaportin virheenkorjausavustajalle UART:n kautta, mikä johtaa näyttöön poikkeamiin.
Vastauksena tähän ongelmaan olemme muokanneet UART-lähtökäsittelymuotoa vastaavasti. Säädön jälkeen sarjaportin virheenkorjausapurin näyttämä aika palasi lopulta normaaliksi, mikä vahvisti, että analyysimme oli oikea.
Yhteenvetona voidaan todeta, että RH850 MCU:n RTC:n sisäinen rekisteri ottaa käyttöön ainutlaatuisen BCD-koodausmuodon, mikä edellyttää, että kiinnitämme erityistä huomiota muodon muuntamiseen asiaan liittyviä tietoja käsiteltäessä. Muuten on helppo aiheuttaa samanlaisia väärinkäsityksiä ja ongelmia.