RTC-Real Time Clock是430單片機的實時時鐘模塊,可以配置成實時時鐘模式(萬年歷)或者一般目的的32位計數器模式,其中實時時鐘模式提供了年月日、時分秒,可以選擇BCD碼或者二進制格式,并且具有可編程的鬧鐘。RTC模塊支持中斷。相關寄存器請參閱430系列單片機user's guide(我用的是5438A)。
1.計數器模式
實時時鐘控制器寄存器1 RTCMODE位被重置時,計數器模式被選擇,通過軟件設置可以得到一個32位的計數器。從時鐘模式切換到計數器模式是通過重置計數值:RTCNT1、RTCNT2、RTCNT3、RTCNT4 和 預換算計數器:RT0PS、RT1PS。
計數器的增量計數器來自ACLK、SMCLK或者分頻之后的ACLK、SMCLK。分頻系數來自分頻除法器RT0PS、RT1PS。RT0PS的輸出可以和RT1PS的輸出級聯構成32位計數器的時鐘源。4個獨立的8位計數器級聯成為32位的計數器。這能提供計數時鐘的8位、16位、24位、32位溢出中斷。RTCTEV位選擇各自的觸發,通過設置RTCTEVIE位,一個RTCTEV能夠觸發一個中斷。計數器RTCNT1到RTCNT4都可以單獨訪問,并可能被寫入數值。
2.日歷模式
當RTCMODE被置位時,萬年歷模式被選中。值得一提的是,萬年歷模式有能夠計算能否被4整除的閏年算法,這個算法范圍是1901年到2099年。
2.1預分頻
分頻器自動將RT0PS和RT1PS配置成為實時時鐘提供一秒間隔的時鐘,RT0PS源于ACLK,一般來說ACLK為32768Hz,是為了實時時鐘的運行。從日歷模式切換到計數器模式時,會將年月日、時分秒全部被置位1,RT0PS和RT1PS也會被置位。當RTCBCD=1時,日歷寄存器會被選為BCD碼,必須在時間設置之前選擇好格式,改變RTCBCD的狀態和切換到計數器模式影響一樣。
2.2鬧鐘功能
用戶可編程鬧鐘只有在日歷模式下有效。每一個鬧鐘寄存器都包括都包括一個鬧鐘使能位,AE用來修改每一個鬧鐘寄存器,通過設置鬧鐘寄存器的AE位,可以產生多種鬧鐘。無效的鬧鐘不會通過硬件的檢測,所以用戶有必要檢查所設鬧鐘是否正確。
2.3讀寫實時時鐘寄存器
系統時鐘和實時時鐘的時鐘源異步,因而讀寫實時時鐘寄存器的時候要注意。此時實時時鐘寄存器每秒鐘更新一次,為了防止在更新的時候讀取實時時鐘數據而造成錯誤數據的讀取,應該設置一個禁止進入的窗口,在禁止進入窗口和窗口外期間,只有RTCRDY復位有效才可以讀取。在RTCRDY復位的時候,讀取操作是錯誤的并且讀取的時間數據也無效被忽略。
2.4時鐘中斷
由于我做的部分只涉及實時時鐘顯示,中斷部分沒有過多涉及,就不在討論了。
RTC實時時鐘顯示部分程序結構如下:
-
嵌入式
+關注
關注
5072文章
19026瀏覽量
303515 -
msp430
+關注
關注
180文章
2393瀏覽量
229200 -
RTC
+關注
關注
2文章
530瀏覽量
66332
原文標題:MSP430單片機之RTC-實時時鐘
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論