2013-04-17 5 views
0

PIC18F6622 및 PICC 컴파일러를 사용합니다.PIC18F 재설정 원인 WDT_FROM_SLEEP

워치 독 타이머를 정기적으로 사용하여 절전 모드에서 깨우십시오. 데이터 시트에는 전원 관리 모드에서 감시견의 화재가 모드를 빠져 나오고 보통 정상적으로 작동한다고 나와 있습니다.

그러나 때로는 예기치 않은 초기화가 발생합니다. PICC의 reset_cause() 사용 이유는 WDT_FROM_SLEEP입니다. 그게 무슨 뜻 이죠? 왜 깨우기 대신 초기화가 발생합니까 ??

고마워,

Lkanab.

답변

1

인터럽트 이벤트로 인해 PIC가 깨어 나면 실행 모드에서 WDT가 오버플로되어 워치 독 재설정이 발생할 수 있습니다.

0

MCPU를 절전 모드로 전환하고 있습니다. 이 모드에서 MCPU는 절전 모드를 깨우기 위해 이벤트를 대기합니다. 프로그램이 절전 모드로 들어가기 전에 어떤 종류의 이벤트/인터럽트를 사용할 수 있는지 설명하지 않았습니다. OnPinChange (EEPROM 쓰기, ADC 변환 ...) 이벤트를 기다리고 있고 절대로 헤펜 드 (또는 늦은 시간) 적이 아니므로 Watch Dog 시간이 만료되어 MCPU가 재설정됩니다.

하나의 해결책 : 워치 독 타이머 시간 간격을 늘리십시오.

+0

몇 가지 인터럽트가 발생할 때까지 기다리고 있습니다. 동시에, 일부 작업은 정기적으로 (즉, 매초마다) 수행되어야하므로 감시견이 발사되고 잠에서 깨어나 기 때문에 PIC를 재설정하면 안됩니다. 또한 감시 장치가 전원 관리 모드를 종료한다는 데이터 시트를 인용했습니다 ("RUN"전원 모드에서 작동하는 경우 제외). WDT가 99.9 %에서 PIC를 절전 모드에서 "깨우지"않습니다. WDT_FROM_SLEEP 재설정 원인은 데이터 시트와 모순됩니다. 그렇지 않니 ?? – lkanab

+0

@lkanab : DS39646B-312 페이지를 확인하십시오 (그림 25-1 :). WDT는 항상 Wake-up되어야하며 오버플로 후에 MCPU를 재설정해야합니다! –

+0

죄송합니다.하지만이 경우에는 당신이 틀렸다고 생각합니다. 숫자는 리셋을 나타내지 만 잠 들어 있지 않은 경우에만 나타납니다. 이를 지우려면 - 섹션 3.5.2 (47 페이지)를 확인하십시오 : "WDT 타임 아웃은 타임 아웃이 발생했을 때 장치가있는 전원 관리 모드에 따라 다른 동작을합니다. 장치가 코드를 실행하지 않는 경우 (모든 유휴 모드 및 슬립 모드)에서 타임 아웃하면 전원 관리 모드 이 종료되고, 장치가 코드 (모든 실행 모드)를 실행하면 타임 아웃은 WDT 재설정 " – lkanab