본문 바로가기
임베디드.일렉트로닉스/EFM8

EFM8 SB1 Real Time Clock

by i.got.it 2015. 4. 9.

 

 

개요 - 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.

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5