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