'lm3s rtc'에 해당되는 글 1건

  1. 2012.04.04 ti lm3s 시리즈 하이버네이트 모드 + RTC 사용하기 (2)
embeded/ARM2012.04.04 10:04
stellarisware를 설치하면 기본적으로 추가되는 예제를 추려내서 테스트 해보면 되는데,
대부분의 장비들이 굳이 하이버네이트 모드로 들어가는 행동을 취할수 없을때가 있다.
항상 켜져있어야 하는 장비인데, 언제꺼질지 모르지만 시간은 유지해야 한다면
하이버네이트 모드를 들어갈수 있는 시점을 정할수 없기 때문에 항상 하이버네이트 모드를 켜주면 된다.

C:\StellarisWare\boards\ek-lm3s1968\hibernate\hibernate.c
파일을 참고해서 추려내자면
static void SetRTCFucntion(void)
{
//	time_t current_time;
//	struct tm struct_time = { 0, 0, 10, 26,2,2012 - 1900,0,0,0};
//	current_time = mktime(&struct_time);
	
	SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
		HibernateEnableExpClk(SysCtlClockGet());
		HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128);
		HibernateRTCEnable();
//		HibernateRTCSet(current_time);
		HibernateWakeSet(HIBERNATE_WAKE_PIN);
		HibernateRequest();
}

일단 RTC를 사용하려면 무조건 하이버네이트 장치를 사용하도록 해야한다.
    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);

하이버네이트 모듈에 들어갈 클럭을 지정해주는데, 32.768Khz가 들어가거나 4.194304Mhz를 /128 해서 넣어주도록 한다.
    HibernateEnableExpClk(SysCtlClockGet());
    HibernateClockSelect(HIBERNATE_CLOCK_SEL_DIV128); // 4.194304 Mhz input divider to 32.768kHz

 하이버네이트 모듈에 내장된 RTC 를 사용하도록 설정하고
    HibernateRTCEnable(); 

원인은 알수 없지만 wakeup 조건을 반드시 설정해 주어야 하이버네이트 모드가 작동한다.
WAKE 핀은 NC 처리해도 작동에 이상은 없는듯 하다.
    HibernateWakeSet(HIBERNATE_WAKE_PIN); 

마지막으로 하이버네이트 모드를 들어가도록 요청한다.
    HibernateRequest(); 


RTC 시간은 배터리가 소진된 시점의 마지막 시간이 다음 부팅시까지 유지된다.
신고
Posted by 구차니

댓글을 달아 주세요

  1. 왔다 간 흔적을 남김니다...^^

    2012.04.04 13:31 신고 [ ADDR : EDIT/ DEL : REPLY ]