Transcript RTC
[1121] Lecture 7 Real Time Clock(RTC) 認識MSP430的RTC Module,並學會在 日曆模式下的設定 認識Real Time Clock 在日曆模式下的3 個中斷來源 能夠設定鬧鐘,與定期事件 RTC RTC 模組 MSP430 配有一具RealTimeClock RTC 具有32-bit 計數器和日曆兩種模 式 在日曆模式中,RTC會自動選擇時脈 (32768Hz)並預先除頻(1/215),得到 1Hz的時脈。 RTC RTC 時間暫存器 RTC 工作在日曆模式時,具有4組16bit暫存器作為時間欄位 RTCTIM0,設定分鐘數與秒數,Low 8-bit設定秒數;High 8-bit 設定分鐘 數 RTCTIM1,設定小時數與星期數 (Day Of Week),Low 8-bit 設定小時 數;High 8-bit設定星期數 RTC RTC 時間暫存器 為了提供更直覺的設定,Header file 又mapping了: RTCSEC=RTCTIM0_L 設定秒數 RTCMIN=RTCTIM0_H 設定分鐘數 RTCHOUR = RTCTIM1_L 設定小時 數 RTCDOW = RTCTIM1_H 設定星期 數 RTC RTC 時間暫存器 在計數模式中,RTCTIM0和 RTCTIM1則供做計數暫存器使用 RTCTIM0和RTCTIM1串聯後,RTC 便能夠作為一個32位元的計數器 RTC RTC 時間暫存器 除了時間欄位外,還有日期暫存器和 年份暫存器 RTCDATE RTCYEAR RTC RTC 時間暫存器 同樣為了直覺設定,標頭檔mapping 了: RTCDAY = RTCDATE_L 設定日期 RTCMON = RTCDATE_H 設定月份 RTCYEARL = RTCYEAR_L,設定西 元年的十位和個位數 RTCYEARH = RTCYEAR_H,設定 西元年的千位數和百位數 RTC RTC 時間暫存器 賦值時,依設定共有BCD mode 和 HEX mode兩種模式。 BCD mode時,暫存器會被劃分為十 位和個位數值的bits HEX mode則是可以透過CCS 直接賦 予10進位的數值。 因RTCTIM1H的背景設定問題,星期 數必須 RTC RTC 時間暫存器 因RTCTIM1_H的背景設定問題,星 期數(DOW)必須直接對RTCTIM1設 定,因此需要計算BIT8~BITA的對應 數值再加進RTCTIM1 讀取則仍然能夠採取RTCDOW的數 值。 RTC RTC 時間暫存器 MON= BIT8 TUE = BIT9 WED = BIT8+BIT9 THU = BITA FRI = BIT8+BITA SAT = BIT9+BITA SUN = BIT8+BIT9+BITA RTC RTC 控制暫存器 RTC的控制暫存器有兩組 分別為RTCCTL01 和RTCCTL23 在RTC Calendar Mode的操作下,一 般僅會使用到RTCCTL01 RTCCTL 同樣具有拆成兩組8-bit的 mapping,在選取指令字的時候須謹 慎,不要使用錯誤的指令字。 RTC RTC 控制暫存器 以RTCCTL01為例,可以找到 RTCCTL0 = RTCCTL01_L, 以及, RTCCTL1 = RTCCTL01_H 要設定 RTCMODE = 1 可以是: RTCCTL01 |= RTCMODE; 或是 RTCCTL1 |= RTCMODE_H; 或是 RTCCTL01_H |= RTCMODE_H RTC RTCCTL0 各項設定: RTCCTL0.6 : RTCTEVIE Interval Time Interrupt Enable 指令字: RTCTEVIE RTCCTL0.5 : RTCAIE User Alarm Interrupt Enable 指令字: RTCAIE RTCCTL0.4 : RTCRDYIE Ready Interrupt Enable 指令字: RTCRDYIE RTCCTL0.2 : RTCTEVIFG RTCCTL0.1 : RTCAIFG RTCCTL0.0 : RTCRDYIFG RTC RTCCTL1 各項設定: RTCCTL1.7 : RTCBCD 0=HEX ; 1=BCD 指令字: RTCBCD_H or RTCBCD RTCCTL1.6 : RTCHOLD 0 = Activated 1: Stop 指令字: RTCHOLD_H or RTCHOLD RTCCTL1.5 : RTCMODE 0=32-bit Counter 1=Calendar mode RTC RTCCTL1 各項設定: RTCCTL1.4 : RTCRDY 0=時間運行中 1:可以讀取時間值 RTCCTL1.3, 1.2 : RTCSSEL 00=ACLK ; 01=SMCLK ; 10=RT0PS ; 11=RT1PS RTCCTL1.1, 1.0 : RTCTEV 00 = Minute changed 01 = Hour Changed 10 = Every 00:00 11 = Every 12:00 RTC RTCCTL1 各項設定: RTCCTL1.1, 1.0 : RTCTEV 指令字: RTCTEV1_H 以及 RTCTEV0_H 在RTCCTL01中,可以使用更直覺的 指令字: RTCTEV__MIN RTCTEV__HOUR RTCTEV__1200 RTCTEV__0000 RTC RTC 的中斷來源: RTC的中斷向量為RTC_VECTOR RTC具有五個中斷源分別為 RTCIV IRQ Flag 0x02 Ready RTCRDYIFG 0x04 Interval Time RTCTEVIFG 0x06 User Alarm RTCAIFG 0x08 0PS RT0PSIFG 0x0A 1PS RT1PSIFG RTC RTC 的中斷來源: RTC Ready 固定用做更新顯示訊息, 預設狀態下,每秒鐘產生一次。 RTC interval time event, 依設定有四種 區間: 每分鐘產生、每小時產生、以 及每次23:59→00:00 和11:59→12:00。 RTCCTL01 BIT9 和BIT8 組成的2位 元即負責該設定 RTC RTC 的中斷來源: User Alarm, 提供使用者設定一個鬧鐘 事件。透過RTCAMIN, RTCHOUR, RTCADOW, RTCADAY 四組暫存器 的設定,我們可以配置一個指定時間 點的中斷事件。 RTC RTC 的User Alarm: RTCAMIN RTCAHOUR RTC RTC 的User Alarm: RTCADOW RTCADAY RTC RTC 的User Alarm: 設定方式: 設定欲產生alarm event的 時間點,並將AE 設為1。 有使用到的鬧鈴時間暫存器,其AE 都要設為1 Example 範例1 配置一個RTC,在Calendar Mode下運作, Time Event 為每分鐘觸發。 時間內容為當下近似時刻,並以LCM顯示。 範例程式下載 Exercise 練習1 配置一個RTC,在Calendar Mode下運作, Time Event 為每小時觸發。 時間內容為離線下最接近整點的時刻,並以 LCM顯示。 Lcd.h Exercise 完成後,找到專案裡面的source file,以附 檔形式寄到 [email protected],並在 主旨中註明姓名、系級與學號, source檔名稱請利於辨識。 EX: 主旨: 微處理機實習 LAB3 王大明 電機碩二 7101064123