瑞薩RH850 RTC計時(shí)進(jìn)位異常
RH850 MCU的RTC(實(shí)時(shí)時(shí)鐘)采用BCD(二進(jìn)制編碼的十進(jìn)制)編碼格式,支持閏年自動(dòng)識別,并具有秒、分、時(shí)、日、周、月、年的進(jìn)位功能。其中,秒和分為60進(jìn)位,時(shí)為12或24進(jìn)位,周為7進(jìn)位,日根據月份不同為28、29、30、31進(jìn)位,月為12進(jìn)位,年則為00~99年。
近期,我們在使用瑞薩MCU RH850的RTC時(shí)遇到了一個(gè)計時(shí)進(jìn)位異常問(wèn)題。通過(guò)UART打印時(shí)間變量時(shí),發(fā)現秒和分的進(jìn)位并非預期的60進(jìn)位,而是錯誤地表現為90進(jìn)位。這一現象引起了我們的關(guān)注。
然而,使用仿真器直接監視RTC內部的SEC、MIN等寄存器時(shí),卻發(fā)現它們在達到0x59后正常進(jìn)位,這表明RTC本身的計時(shí)功能并無(wú)問(wèn)題。
仔細觀(guān)察后,我們發(fā)現了一個(gè)關(guān)鍵規律:當秒數超過(guò)09后,顯示值會(huì )直接跳躍到16,然后繼續遞增。這一現象表明,問(wèn)題可能出在數據格式的轉換上。由于RTC內部采用BCD編碼格式,而我們在通過(guò)UART輸出到串口調試助手時(shí)將其當作十進(jìn)制數據處理,導致了顯示上的偏差。
針對這一問(wèn)題,我們對UART的輸出處理格式進(jìn)行了相應修改。經(jīng)過(guò)調整后,串口調試助手上顯示的時(shí)間終于恢復正常,驗證了我們的分析是正確的。
綜上所述,RH850 MCU的RTC內部寄存器采用獨特的BCD編碼格式,這要求我們在處理相關(guān)數據時(shí)必須特別注意格式轉換。否則,很容易引發(fā)類(lèi)似的誤解和問(wèn)題。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。