공부/MSP430 2012. 11. 15. 00:13

 

10. Watchdog Timer

 

10.1    기본사항

 

MSP430은 Watchdog timer 의 주 기능은 프로그램을 잘못 짜 문제가 있을 때 재 기동을 하기 위해 존재 합니다. Watchdog Timer에 설정되었던 시간이 끝나면 시스템이 재기동 되어 집니다.

기능은 8개의 시간 설정가능, Watchdog mode, Interval 타이머 모드, WDT 보호를 위해 암호존재, RST/NMI pin 제어, Clock source 설정, 전원보호를 위해 정지 가능, PUC후에 WDT모듈은 DCOCLK를 사용해 최초 32ms대기를 합니다. 그러므로 32ms 이전에 WDT상태를 다시 설정 해야 합니다.

 

 

그림 10 - 1

 

10.2    Watchdog Timer의 동작

 

WDTCTL레지스터는 Watchdog 타이머의 대기시간을 설정 할 수 있습니다. 더불어 RST/NMI pin을 설정하기 위한 bit를 포함하고 있다. WDTCTL 은 16bit로 상위 8bit는 password 입니다. 그래서 접근하기 위해서는 0x5A를 사용합니다. 읽힌값은 상위 byte는 0x69로 읽혀집니다.

 

WDTCNT는 16bit UP counter 입니다. WDTCTL의 값에 따라 카운터 됩니다. WDTCNT는 ACLK 또는 SMCLK를 기준 클럭으로 사용하여 동작합니다. 기준클럭은 WDTSEL bit로 선택 되어 집니다.

 

PUC후 WDT모듈은 DCOCLK를 사용해 최초 32ms를 대기 하고 있습니다. 32ms 완료전에 WDT를 제거 하거나 다시 WDT 을 Reset 해야 합니다. 안그러면 PUC가 발생 합니다. 또한 부정확한 암호에 의해 WDTCTL을 사용하면 PUC가 발생하고 WDT 는 Reset 되고 RST/NMI pin능 Reset 모드로 변경됩니다.

 

10.3    Interval Timer의 동작

 

WDTTMSEL bit를 1로 설정하면 Interval Timer 모드를 설정 됩니다. 이 모드는 주기를 제공 하기위해 사용 될수 있습니다. 이 모드에서 시간 간격이 만료되면 WDTIFG가 설정되며 이때 PUC는 발생이 안됩니다. 예상외에 PUC 발생을 피하기 위해 WDT의 인터벌 시간의 변경은 WDTCNCTL =1 로 한 후 해야 합니다. WDT 의 Clock source를 변경하기 전에는 WDT를 정지한 후 해야 한다.

 

10.4    Watchdog Timer의 인터럽트 동작

 

Watchdog timer를 인터럽트로 사용하기 위해 IFG1.0 (WDTIFG) 와 IE1.0 (WDTIE)를 사용됩니다. WDT가 Watchdog mode 일때 WDTIFG flag는 Reset Vector 인터럽트 발생을 나타냅니다. WDTIFG는 Reset Vector 인터럽트 서비스 루틴에 의해 사용되어 집니다.

 

10.5    Watchdog Timer의 저출력 모드에서의 동작

 

MSP430은 몇 개의 저출력 모드가 있는 것을 알고 있을것입니다. 저출력모드에서는 Watchdog Timer 의 사용을 주의 해야 합니다. 예를 들어 WDT가 워치도그 모드일 때 SMCLK는 WDT의 소스로 사용되어지면 안됩니다. 만일 LPM3 모드가 되면 SMCLK는 정지합니다. 그래서 WDT도 작동하지 않습니다. 이럴때는 WDTHOLD를 이용해 WDT를 사용안할수 있습니다. 사용안하면 그만큼의 소비전력도 줄일수 있습니다.

 

WDTCTL (Watchdog Timer Register)

BIT 

15 

14 

13 

12 

11 

10 

9 

8 

명칭

읽을 때 무조건 0x69 이 읽힘

쓸 때 0x5A를 사용

초기값

읽고쓰기

 

BIT 

7 

6 

5 

4 

3 

2 

1 

0 

명칭

WDTHOLD 

WDTNMIES 

WDTNMI 

WDTTMSEL 

WDTCNTCL 

WDTSSEL 

WDTISx 

초기값

0 

0 

0 

0 

0 

0 

0 

0 

읽고쓰기

R/W 

R/W 

R/W 

R/W 

R 

R/W 

R/W 

 

WDTHOLD: Watchdog timer 의 정지 또는 동작을 설정합니다.

    ( 0: 동작 , 1: 정지)

WDTNMIES: Watchdog Timer NMI의 edge 선택

이 bit의 변경시 NMI 발생이 가능 변경전에 WDTNMI = 0 으로 설정 해야 한다.

     (0: 상승에지( rising edge) 1:하강 에지( falling edge))

WDTNMI: Watchdog 타이머의 NMI 선택 RST/NMI pin 기능 선택 가능

    (0: Reset 기능 , 1: NMI 기능 )

WDTTMSEL: Watchdog 타이머 모드 변경

    ( 0: Watchdog 모드 , 1:인터벌 타이버 모드)

WDTCNTCL: Watchdog 타이머 Reset, Watchdog 타이머 를 자동 0으로 만들어 준다.

    ( 0: 동작 없음 , 1: 클리어 클리어후 자동으로 0으로 변경된다.)

WDTSSEL: Watchdog timer 클럭 소스 설정

    (0 : SMCLK , 1:ACLK)

WDTISx: Watchdog timer 대기시간 설정

 

WDTISx 

동작

0 

0 

Watchdog timer 클럭 소스/32768

0 

1 

Watchdog timer 클럭 소스/8192

1 

0 

Watchdog timer 클럭 소스/512

1 

1 

Watchdog timer 클럭 소스/64

 

IE1 (Interrupt Enable Register 1)

BIT 

7 

6 

5 

4 

3 

2 

1 

0 

명칭

             

WDTIE 

초기값

             

0 

읽고쓰기

             

R/W 

 

WDTIE: Watchdog 타이머 인터럽트 enable

    이 bit는 인터벌 모드에서 WDTIFG 에 의해 인터럽트 발생이 가능 하게 합니다.

이 bit는 WDT mode에서는 설정할 필요가 없습니다.

     ( 0: 인터럽트 발생 불가 , 1: 인터럽트 발생 가능)

 

IFG1 (Interrupt Flag Register 1)

BIT 

7 

6 

5 

4 

3 

2 

1 

0 

명칭

             

WDTIFG 

초기값

             

0 

읽고쓰기

             

R/W 

 

WDTIFG: Watchdog 타이머 인터럽트 발생 플레그

WDTIFG는 프로그램에 의해 제거될때까지 설정되어 있습니다. 인터벌 모드에서 WDTIFG는 인터럽트 서비스 루틴에서 자동으로 Reset 될수도 있도 프로그램에 의해 리셋 될수도 있습니다.

    

     ( 0: 동작없음 , 1: 인터럽트 발생 인터럽트 서비스루틴 기다림)

 

 

'공부 > MSP430' 카테고리의 다른 글

[MSP430] 회로도  (0) 2012.11.15
[MSP430] MSP430 자료 9  (0) 2012.11.15
[MSP430] MSP430 자료 8  (0) 2012.11.15
[MSP430] MSP430 자료 7  (0) 2012.11.15
[MSP430] MSP430 자료 6  (0) 2012.11.15
[MSP430] MSP430 자료 5  (0) 2012.11.15
posted by 큰파도

댓글을 달아 주세요