2011-08-14 6 views
2

NXP LPC17xx 제품군 마이크로 컨트롤러 (LPC1759 및 LPC1768)를 사용하고 있습니다.LPC17xx : RTC가 실행 중인지 확인하십시오.

RTC가 확실히 실행되고 있는지 어떻게 알 수 있습니까?

나는

LPC_RTC->CCR & RTC_CCR_CLKEN 

에서 테스트를하고있는 중이 야하지만 더 많은 신뢰성 보인다. 내 장치를 켤 때 3197 년경에 값을 보았습니다.

RTC가 실행 중이고 그 값이 손상되지 않았는지 어떻게 알 수 있습니까?


편집 :

내가 RTC 값의 간단한 전성 검사를 추가 결국 :

울부 짖는 제안 그것은, 내 POST 동안 실행
bool  DateTime::validate(const RTC_TIME_Type &time_info) 
{ 
     if (time_info.YEAR > 2100 
       || time_info.DOY > 366 
       || time_info.MONTH > 12 
       || time_info.DOM > 31 
       || time_info.HOUR > 23 
       || time_info.MIN > 59 
       || time_info.SEC > 59) 
       return  false; 

     return  true; 
} 

.

답변

3

나는 약 5 년 전에 그 칩의 할아버지 (LPC2148)에서 RTC와 싸웠다. Yahoo LPC2000 group (LPC1000 칩도 포함)을 보면 RTC &의 문제가 많이 발생합니다.

어쨌든 여기서 기억하겠습니다. 그러나 상태 레지스터를 읽는 것이 충분히 신뢰할 수 없다고 결론을 내 렸습니다. 어쩌면 문제가 전원이 제거 될 때 배터리 백업이 결석하는 경우, 상황이 스크램블받을 것이라고했다 ...

그래서 나는이 부팅 단계에서, 다음 한 한 무엇을 기억 :

(1) RTC 주변 장치 활성화

(2) 모든 RTC 레지스터를 읽습니다. 펌웨어에서 각 필드에 분 & 최대 값 "범위에서"이 (예를 들어, 올해는 적어도 2005이어야하며 더 큰 2,030 이상 없음)

값이 범위를 벗어나면 (3), 날짜를 & 시간을 재설정 하드 코딩 된 값 (예 : 2005 년 1 월 1 일) (제품은 부팅 후 시간/날짜를 조정할 수 있음)

(4) 레지스터의 스냅 샷을 가져옵니다. 적어도 1 초 (타이머 주변 장치를 사용하여 시간 측정)를 기다린 다음 값이 변경되었는지 확인하십시오. 내가 부팅하는 동안 지금까지 1 초의 진드기가 모든 것을 롤오버하도록 (아마 12 월 31 일 자정 전에 1 초) 값을 설정하고, 모든 것이 바뀌 었는지 확인한 다음, 원래 값 + 1 초.(슬립을 피하기 위해 값을 변경하면이 작업을 올바르게 수행 할 수 있습니다.)

코드를 파고 더 많은 것이 있는지 확인하려고합니다. 나는 마침내 내가 망할 것을 가져야한다고 결론 내렸다. & P.O.S.T. 그 주변 장치를 위해.

(필자는이 문제에 대해 언급했으나 전원을 다시 켜면 값이 손상된 것처럼 보이지만 배터리 백업 회로가 견고하다는 것을 확인하십시오. 일반적으로 한 쌍의 다이오드 만 있으면 충분합니다. 제품이 작동 중일 때 시계가 작동하고 있지만 전원이 꺼지면 뇌가 뒤 틀어 질 수 있습니다.)

2

은 또한 .... 변덕 RTC의 현재 직면

내가 정말 신뢰성 테스트, 당신은 비 휘발성 메모리에 어딘가에 마지막으로 기록 된 시간을 저장하고 시계 'hasn 확인 할 수있다 생각하지 않는다

과거 날짜로 이동했으며 두 검사 간의 델타가 너무 크지 않은지 테스트 할 수도 있습니다. 3000 년 같은 것을 잡을 수는 있지만 테스트 된 시간이 1 개월로 줄어들지는 않습니다. 일년에 한 번 해고 당해도 깨어나고 싶을 것입니다.

시작할 때 시간 원본을 참조 할 수 있습니까? 예 : 컨트롤러가 신뢰할 수있는 시간 원본과 동기화 된 것으로 간주 될 수있는 ntp 서버 또는 다른 장치?

+0

나는 시간을 확인할 수있는 신뢰할만한 출처가 없습니다. 내 장치가 불행히도 혼자 서 있습니다 ... – j4x

0

RTC 클록을 외부 핀에 연결하여 볼 수 있습니다 오실로스코프 또는 로직 애널라이저.

IIRC 나는 LPC1766/1768 (다른 프로세서로 채워진 두 개의 동일한 보드가 있습니다)에 대해서만했습니다.