임베디드랜드

와치독 타이머

 

 

개괄

 

S3C2800 와치독 타이머는, 콘트롤러의 동작이 노이즈나 시스템 에러 등의 오동작으로 방해를 받았을 때, 콘트롤러를 재가동하는 데 사용된다. 와치독 타이머의 리셋 신호는 128 PCLK 싸이클 동안 발생한다.

 

 

디버깅 환경에 대한 고려

 

S3C2800 Embedded ICE를 사용하는 디버그 모드일 때, 와치독 타이머는 반드시 동작되지 않아야 한다. 와치독 타이머는 CPU 코어 신호(DBGACK 신호)로부터 현재 모드가 디버그 모드인지 아닌지를 결정할 수 있다. 일단 DBGACK 신호가 ASSERT되면, 와치독 타이머가 종료되어도 와치독 타이머의 리셋 신호 출력이 활성화 되지 않는다.

 

 

 

 

 


와치독 타이머 동작

 

와치독 타이머의 기능 블록별 구성도가 그림 15-1에 나타나 있다. 와치독 타이머는 유일한 클럭 소스로서 내부의 APB 버스 클럭 (PCLK) 을 사용한다. 원하는 와치독 타이머 클럭을 생성하기 위해서, PCLK 주파수는 우선 프리스케일러를 거친 후, 다시 분주되어 진다.

 

그림 15-1. 와치독 타이머 블록 구성도

 

 

프리스케일러 값과 주파수 분주 요소는 와치독 타이머 제어 레지스터, WTCON에 명시되어있다. 유효한 프리스케일러 값의 범위는 1 ~ (28 - 1) 이다. 주파수 분주 요소는 8, 16, 32, 64 중에서 선택할 수 있다. 다음의 수식을 이용하여 와치독 타이머 리셋 간격 시간을 계산한다.

t_watchdog = (1/ (PCLK/(프리스케일러값+1)/분주요소))* 216 (16비트 카운터)

 

테이블 15-1. 와치독 간격 시간의 예

 

분주기 설정

최소 해상도

(프리스케일러 = 1)

최대 해상도

(프리스케일러 = 255)

최대 간격

(WTCNT = 65535)

1/8 (PCLK = 50 MHz)

0.32 us (3.125 MHz)

40.96 us (24.42 KHz)

2.684 sec

1/16 (PCLK = 50 MHz)

0.64 us (1.563 MHz)

81.92 us (12.21 KHz)

5.368 sec

1/32 (PCLK = 50 MHz)

1.28 us (0.782 MHz)

163.84 us (6.11 KHz)

10.736 sec

1/64 (PCLK = 50 MHz)

2.56 us (0.391 MHz)

327.68 us (3.06 KHz)

21.472 sec

1/8 (PCLK = 37.5 MHz)

0.42 us (2.344 MHz)

54.61 us (18.31 KHz)

3.579 sec

1/16 (PCLK = 37.5 MHz)

0.84 us (1.172 MHz)

109.22 us (9.16 KHz)

7.158 sec

1/32 (PCLK = 37.5 MHz)

1.71 us (0.586 MHz)

218.44 us (4.58 KHz)

14.316 sec

1/64 (PCLK = 37.5 MHz)

3.41 us (0.293 MHz)

436.9 us (2.28 KHz)

28.63 sec

 

 

 


와치독 타이머 특수 기능 레지스터

 

 

와치독 타이머 프리스케일러 값 레지스터 (WTPSCLR)

 

유효한 프리스케일러 값의 영역은 1 ~ 281 이다.

 

레지스터

주소

읽기/쓰기

설명

리셋값

WTPSCLR

0x1012 0000

읽기/쓰기

와치독 타이머 프리스케일러 값 레지스터

0x0000 0080

 

WTPSCLR

비트

설명

초기상태

프리스케일러

[7:0]

8비트 프리스케일러 값 ( 1 ~ 255 )

0 = 지원 안 함

0x80

 

주의: 와치독 타이머는 프리스케일러 값을 변경하기 전에 반드시 동작 불가능으로 설정되어야 한다. 프리스케일러 값이 설정된 후에, 와치독 타이머는 동작가능으로 설정될 수 있다.

 

 

 

와치독 타이머 제어 레지스터 (WTCON)

 

와치독 타이머 제어 레지스터, WTCON을 사용하면 와치독 타이머를 동작 가능/불가능으로 설정하고, 와치독 타이머 카운터를 클리어(0으로 설정)할 수 있고, 그리고, 4개의 다른 클럭 신호를 입력으로 선택할 수 있다.

S3C2800 와치독 타이머는, 콘트롤러의 동작이 파워 온 이후에 오동작시 S3C2800를 재 시작하는데 사용된다. 콘트롤러 재시작을 원하지 않는다면, 와치독 타이머는 동작 불가능으로 설정되어야 한다.

 

레지스터

주소

읽기/쓰기

설명

리셋값

WTCON

0x1012 0004

읽기/쓰기

와치독 타이머 제어 레지스터

0x0000 0000

 

WTCON

비트

설명

초기상태

클럭 선택

[11:10]

2비트가 클럭 분주 요소를 결정한다.

00 = 1/8          01 = 1/16

10 = 1/32         11 = 1/64

00

사용 안 함

[9]

사용 안 함

0

와치독

타이머

카운터

초기화

[8]

와치독 타이머 카운트 값 초기화

0 = 영향 없음

1 = 카운트 값을 초기화

이 비트가 1이 되면, 와치독 타이머 카운터(WTCNT)를 초기화하고 자신도 0이 된다.

0

와치독

타이머

동작 설정

[7:0]

이 비트는 와치독 타이머 리셋 신호의 출력을 가능/불가능하게 한다.

1010 0101b = 와치독 타이머의 리셋 기능을 불가능하게 한다. 16비트 카운터는 0x0이 되고, 카운터가 정지한다.

다른 값  = 와치독 타임이 종료되면 S3C2800의 리셋 신호가 동작한다. 16비트 카운터는 프리스케일러 값이 재설정된 후 0x0부터 카운트를 시작한다.

0x00

 


와치독 타이머 카운터 레지스터 (WTCNT)

 

 

와치독 타이머 카운터 레지스터 WTCNT, 정상 동작시 와치독 타이머의 현재 카운트 값을 가지고 있다.

 

레지스터

주소

읽기/쓰기

설명

리셋값

WTCNT

0x1012 0008

읽기

와치독 타이머 카운터 레지스터

0x0000 0000

 

WTCNT

비트

설명

초기상태

카운트 값

[15:0]

와치독 타이머 카운터의 현재 카운트 값

0x0000

 
2007/11/02 - [임베디드/ARM] - S3C2800번역본 리모트 제어
2007/11/02 - [임베디드/ARM] - S3C2800번역본 UART
2007/11/02 - [임베디드/ARM] - S3C2800번역본 IIC

Posted by suvisor