摘要:隨著使用正確的設備初始化和代碼序列的精確計時和時鐘鬧鐘操作變得更易于管理的任務。
介紹當我們讀到一個時鐘,因為我們都從小做,我們的眼睛“拍攝快照”目前的顯示值。有人已經通過重新調整該顯示器為您可讀性的努力了。當微處理器需要訪問實時時鐘,最新的寄存器值的“快照”,必須重新定位成一個時間序列計算,我們都比較熟悉。
通過使用合適的設備初始化和代碼序列的精確計時和時鐘鬧鐘操作變得更易于管理的任務。
設備初始化在第一功率應用到一個新的時鐘分量,需要我的序列/ O指令可基于該特定的成分而改變。請參考寄存器結構的設備規范。作為一般準則,并假定電源穩定和I / O端口是可操作的,則建議:
- 允許寫入芯片(如果一個軟件寫保護選項存在)
- 啟用32kHz的RTC振蕩器(如果沒有自動啟動)
- 定義硬件中斷輸出配置(多個)(如適用)
- 加載初始計數器值
使書寫到RTC:這種獨特的功能加入到某些組件設計(例如,DS1305),以防止意外的時鐘變化。請參考寫保護(WP)位解釋產品說明書。
啟用RTC振蕩器:在一些傳統設計(如DS12887,DS1307),RTC振蕩器不會自動啟動在第一次開機。此操作功能是為了防止運輸/儲存期間電池的消耗,以及必須通過I / O被啟用。與外觀設計EOSC在控制寄存器位包括一個內置振蕩器自動啟動功能,在第一動力應用程序執行。在一些其它設計像DS1685,它也可能是必要的,以確定該晶體的負載電容設定為適當的振蕩器的操作。
檢查'OSF“:有些RTC組件包含一個振蕩器停止標志(OSF),允許用戶通過定期I / O監控振蕩器工作。在初次上電,OSF將被設置。使振蕩器,清晰OSF,然后定期驗證OSF位保持邏輯0后。
OSF可以成為基于任何這些條件邏輯1:
- 功率的初始應用
- 在VCC和VBAT電壓不足以維持振蕩器運行
- EOSC位被設置為1,在停止振
- 在晶體的外部影響(泄漏,耦合等)
定義中斷輸出(多個):取決于特定成分和期望的應用,輸出功能的定義,現在應該執行,以防止從被發送到微處理器意外信號。實時報警(S),看門狗中斷,方波輸出頻率等組件編程選項,應選擇以建立所需引腳/信號調理。
在具有實時報警裝置,每個鬧鐘寄存器應首先被寫入00H(如果二進制編碼的十進制(BCD))或FFH(如二進制),以防止任何意外的匹配/中斷產生。報警寄存器不出廠初始化,以及相關的報警標志可以在任何時間報警寄存器內容匹配實時計數出現。
加載初始計數器(時間)值:再次參照該產品的說明書和寄存器映射,計數器加載或讀的順序應執行從至少顯著計數到最顯著計數。圖1示出了計數器取向并進行功能的典型的BCD格式的實時時鐘分量。
圖1. RTC計數器鏈。每當寫入RTC,至少可以顯著計數器字節任何寫復位內部1Hz的鏈條,允許任何計時計數器位之前,用戶一秒鐘之后遞增。此1Hz的復位動作,以及同步技術,在時間同步部將進一步詳細說明。
為了方便使用,寄存器定向在提升重量和地址,以便您的編程方便。
BCD格式 百分之一秒(如果是這樣配置) 秒 分鐘 小時 天周的 日期 月份 年 世紀(如果配備) | 二進制(秒) 00H - > FFH = 0 - > 255 00H - > FFH = 256 - > 65535 00H - > FFH = 65536 - > 16777215 00H - > FFH = 16777216 - > 4294967295。 |
時間同步對于一些用戶來說,設置時鐘(寫入RTC)的簡單的動作可以完成在該應用程序的實時時鐘的計時精度的目標。取決于初始化我們的設備時,所采取的照顧,當針對由該應用程序所控制的其他任務的執行重達幾秒鐘的初始時鐘設定錯誤可以被認為是可接受的。
在其它應用中,可能期望的實時時鐘與一個已知的時間標準同步,像WWV 1。如前所述,寫入至少顯著計數器字節復位1Hz的計時鏈。圖2說明了如何使用我重置1Hz的倒計時鏈2 C寫的順序秒注冊的DS1340。從機地址字節(D0H),注冊地址(00H),以及“最新秒鐘值'(03H),被傳輸到組件。異步1Hz的方波輸出的兩個有代表性的例子示來說明得到調整。
圖2. I / O啟動時鐘同步(我2所示的C格式)。在數據字節(SCL 27日上升沿)的從機的應答,從同時1)拉SDA低到ACK接收數據字節,2)1Hz的倒計時鏈復位,3)新秒鐘值(03H在圖2的例子)被插入秒寄存器傳送。
在第一個1Hz的SQW波形時,1Hz的信號是邏輯1的ACK時有發生。SQW被立即拉低。在ACK之后正是0.5秒時,SQW輸出轉換為高。正是ACK后1.0秒SQW被拉低,表示1秒已過因為寫完成。讀秒立即注冊導致04H的內容。
在第二1Hz的SQW圖,1Hz的信號是邏輯0時發生ACK,這樣SQW信號保持低電平,直到該ACK,那里的1Hz的輸出將變為高電平后,正是0.5秒。正是ACK后1.0秒SQW被再次拉低,表明1秒已過因為寫完成。讀秒立即注冊導致04H的內容。
對于產品3線或SPI I / O,等效觸發圖2中的第27 SCL上升沿或者是SCLK或芯片使能的下一個存在的過渡(CE或CS,使用輸入管腳命名約定為準) 。
對于產品幻影的I / O,等效觸發到圖2中的第27 SCL上升沿是第72次寫周期的串行數據包(包括64周期模式識別)的終止。
對于產品的字節寬I / O,相當于觸發圖2中的第27 SCL的上升沿將向秒寄存器是寫周期的結束。
使用時間日歷鬧鐘上被一個或多個實時報警電路裝置中,用戶可以請求或者周期性或非周期性的中斷事件在一些預定的時間發生。警報可以提前所需的事件的被設置為30天。
報警的編程建議使用一些簡單的規則:
- 初始化所有報警寄存器到已知狀態一次(報警不POR復位)
- 當啟用報警電路不會改變實時時鐘寄存器設置
- 啟用了報警電路時,切勿更改報警寄存器設置
- 清除相關的報警標志之前使該報警器(或者你可以創建一個過早中斷)
最常見的周期性的中斷是“每日鬧鐘”,定在上午5:30,完全獨立日歷內容的激活。要忽略DAY /數據寄存器,我們將利用報警面具。
控制= 04H;上定義振蕩器INT / SQW輸出功能,報警關閉
報警1秒= 00H;0秒
報警1分鐘= 30小時;30分鐘
報警1小時= 45小時;凌晨5點在12小時模式
報警1日/日期= 80H;報警掩碼設置成匹配“小時,分鐘和秒”
狀態= 00H;清除這兩個報警標志
控制= 05H;立即啟用報警1(A1IE = 1)
上午5:30下一次出現時,INT / SQW引腳將斷言。
要清除中斷,留在同一時間為第二天上午啟用報警,清除相關的報警標志(A1F)。
要清除中斷,并禁止任何未來的警報,清除相關警報啟用(A1IE)。
當相關的報警被禁止,那些報警寄存器可以用于通用數據的存儲。
結論組件初始化程序,正確排序,應包括所有的RTC的硬件功能,對系統穩定運行所需的定義。如果需要的話,實時時鐘也可以同步到外部時間的基礎上,并且該同步的一個過程已經概述。另外,選擇使用實時時鐘的報警已被列入,重點對的I / O指令執行順序。
參考- WWV是標準的美國國家與技術研究所(NIST)HF波段收音機在Fort Collins站,科羅拉多州的呼號。