개요 - Real Time Clock | |
EFM8 SB1 의 Real Time Clock 기본 정보 정리. - RTC Timer는 RTC Oscillator 주기마다 증가되는 32bit counter이다. - Alarm, Oscillator fail 이벤트로 칩 리셋 / wake-up / Interrupt 발생 가능. - Alarm auto reset 기능 가능. 즉, Alarm 발생이후 One RTC주기이후 RTC timer가 리셋된다. - RTC 클럭소스 : MCU내장 Self Oscillator(20kHz/40KHz), Low Frequency Oscillator(16.4kHz), 외부크리스탈(32.768kHz) 사용가능. - P0.2 로 RTC출력가능하며 이를 설정하는 레지스터는 PMU0MD의 RTCOE bit (bit 7)이다.
RTC0의 기능블럭도.
참조 EFM8 SB1 레퍼런스 매뉴얼 http://www.silabs.com/Support%20Documents/TechnicalDocs/EFM8SB1-RM.pdf 의 페이지 64~79
| |
|
RTC Timer Settings and Reading | |
레지스터 CAPTUREn 을 이용하여 쓰기 읽기 가능하다. 쓰기 읽기시에 타이머를 멈추지 않아도 됨.
RTC Timer 에 쓰기 방법. 1. 원하는 32비트 값을 CAPTUREn 에 기록한다. 2. RTC0SET 에 1기록한다. 이때 CAPTUREn의 값이 RTC timer로 전달된다. 3. RTC0SET 가 하드웨어적으로 crear된 시점이 전달 완료된것이다.
RTC타이머 읽기 방법. 1. RTC0CAP에 1을 기록한다. 이것에 의해 RTC Timer의 값이 CAPTUREn 레지스터로 전달된다. 2. RTC0CAP 가 하드웨어적으로 clear 된 시점이 전달 완료된 것이다.
| |
|
RTC Alarm Setting. | |
RTC alarm기능이란 ALARMn 레지스터의 값과 RTC timer 의 값을 비교하여 같은 값일때 event 발생하는 것. The RTC alarm event can be configured to reset the MCU, wake it up from a low power mode, or generate an interrupt.
RTC Alarm 셋팅법. 1. Disable RTC Alarm Events (RTC0AEN = 0), 이때, RTC Alarm event flag로 사용되는 ALRM bit은 자동으로 0이된다. 2. Set the ALARMn register to the desired value. 3. Enable RTC Alarm Events (RTC0AEN = 1)
Notes. - ALRM bit (RTC Alarm event flag, RTC0CN0 의 bit 2) 는 RTC0AEN 을 0으로 설정하면 클리어( 0이 기록됨)된다. - Autoreset 을 비활성화 한 경우 , 한번의 RTC 알람이후 ALARMn registers 재설정하지 않고 RTC0AEN=0 -> RTC0AEN=1 로 하면 다음 Alarm 은 2^32 RTC cycle (36시간정도임) 후에 알람 발생함. - ALRM bit (RTC Alarm event flag)는 one RTC cycle 동안 유지된다. RTC가 low power mode 와 같이 사용되는 경우, PMU는 wake event 가 무엇인지 확인할 때 사용되어야만 한다.
| |
|
RTC 관련 레지스터 및 내부레지스터(Indirect Address) 접근법. | |
- RTC0KEY : RTC Lock and Key, EFM8 SB1 에서는 기록해도 무시되며 항상 unlocked 상태임. - RTC0ADR : RTC Address - RTC0DAT : RTC Data - RTC0CN0 : RTC Control 0 - RTC0XCN0 : RTC Oscillator Control 0 - RTC0XCF : RTC Oscillator Configuration - CAPTURE0 : RTC Timer Capture 0 - CAPTURE1 : RTC Timer Capture 1 - CAPTURE2 : RTC Timer Capture 2 - CAPTURE3 : RTC Timer Capture 3 - ALARM0 : RTC Alarm Programmed Value 0 - ALARM1 : RTC Alarm Programmed Value 1 - ALARM2 : RTC Alarm Programmed Value 2 - ALARM3 : RTC Alarm Programmed Value 3 기타: - PMU0MD : Power Management Unit Mode. RTCOUT 설정은 이 레지스터의 비트7( RTCOE )1을 기록하면 출력, 0을 기록하면 비출력으로 됨.
RTC 내부 레지스터 접근법. RTC0KEY, RTC0ADR, RTC0DAT 만 SFR이며, 나머지 것들은 모두 Indirect adress 를 갖고 있어서 RTC0ADR 의 하위 4비트에 Indirect Address 를 기록하여 해당 주소로 접근가능하게 하고 그 주소에서 데이터 읽기/쓰기 하려면 RTC0DAT 에 읽기/쓰기 하는 방식으로 구현해야한다.
RTC 내부 레지스터에 데이터 쓰기 절차.
1. RTC0ADR 의 BUSY 비트 값이 0 될 때까지 대기 (이전의 다른 읽기쓰기가 완료될때까지 기다리는 것임.) 2. RTC0ADR 의 하위 4비트에 내부 레지스터 주소 기록. 3. 내부레지스터에 기록할 데이터를 RTC0DAT 에 기록. (여기에 기록하면 내부적으로 해당 레지스터로 이동시키게된다.) 4. BUSY 비트가 0 될 때까지 대기. (0이 되어야 상기3의 데이터 전송완료임.)
RTC 내부 레지스터의 데이터 읽기 절차.
1. RTC0ADR 의 BUSY 비트 값이 0 될 때까지 대기. 2. RTC0ADR 에 내부 어드레스 기록. 3. BUSY에 1 기록. (1이 기록되면 내부 레지스터의 데이터를 RTC0DAT로 이전처리가 시작된다.) 4. BUSY 가 0 이 될때가지 대기. (RTC0DAT 로 데이터 이전이 완료되었음을 의미) 5. RTC0DAT 의 값 읽기.
Note: The RTC0ADR and RTC0DAT registers will retain their state upon a device reset. | |
|
본 글이 포함된 상위 정리장소 : http://igotit.tistory.com/244 |
///253.
'임베디드.일렉트로닉스 > EFM8' 카테고리의 다른 글
EFM8 플레시 프로그램 안될 때 최후의 조치법. (0) | 2015.04.19 |
---|---|
EFM8 Port I/O, Crossbar, External Interrupts, and Port Match (0) | 2015.04.09 |
EFM8 SB1 Power Mode.- normal, idle, suspend, sleep (0) | 2015.04.09 |
EFM8 SYSCLK 클럭 소스 선택, Divider 설정. 소비전류 (0) | 2015.04.07 |
EFM8 RTC 클럭소스 외부 크리스탈로 설정하기. (0) | 2015.04.06 |
댓글