본문 바로가기

AVR(ATmega128)로 장난하기

AVR(ATmaga128) 기초지식(7)_리셋과 워치돗 타이머


1. Reset Watchdog 타이머

 

(1) 리셋

● 정상적으로 동작하고 있는 마이컴이 리셋되면 모든 I/O레지스터값이 디폴트값으로 초기화되고 프로그램은 리셋벡터에서 시작된다. 리셋은 5가지의 발생원이 존재한다.


[그림1] 리셋 관련 내부 회로 블록선도


파워온 리셋 : 공급전원이 그림 2 정의된 VPOT 이하일 리셋되는 .

외부 리셋 : /RESET핀에 50ns 이상동안 그림 2 정의된 VRST 이하의 신호가 입력되면 리셋되는

Brown-out 리셋 : 공급전원이 2마이크로초 이상동안 그림 2 정의된  VBOT이하로 떨어져 Brown-out 감지기가 작동해 리셋되는 .

워치독 리셋 : 워치독 타이머가 지정한 주기 이상이 경과되어 워치독 기능이 동작할 리셋되는

JTAG AVR 리셋 : JTAG 연결되어 있고 JTAG명령 AVR_RESET 명령에 따라 선택된 JTAG 리셋 레지스터에 논리 1 저장되어 있는 경우 리셋되는

[그림2] 리셋 관련 내부 회로 블록선도


  1) 파워온 리셋(POR)

● 전원 투입후 제대로 리셋이 되지 않으면 PC 레지스터들이 제대로 초기화되지 못하여 마이컴은 임의의 위치에서 명령을 시작하게 되는데 이를 막기 위해 전원 투입후 자동으로 리셋이 되도록 하는 것을 파워온 리셋이라 한다.

● POR회로는 VPOT 보다 공급전원이 작으면 동작이 시작되는데 공급전원이 투입되고 나서 곧바로 정상적인 레벨로 올라가지 못하고 그림 3처럼 VPOT 보다 작으므로 POR회로가 작동되어 파워온 리셋 동작이 시작되고 공급전원이 VPOT  도달하면 시간지연카운터를 동작시켜 일정한 시간 tOUT 동안 리셋을 유지시킨다.

[그림3] 파워온 리셋 동작 타이밍도


   2) 외부 리셋

● /RESET핀에 50ns 이상 동안 그림 24 정의된 VRST 이하의 신호가 입력되면 리셋이 시작되는데 그림 4에서처럼 리셋신호가 저전압을 유지하다가 VRST 이상으로 올라가면 시간지연카운터를 동작시켜 일정한 시간 tOUT 부가적으로 경과될 때까지 리셋을 유지시킨다.

[그림4] 외부리셋 동작 타이밍도


   3) Brown-out 리셋

● 마이컴 내부에 있는 저전압 검출회로(BOD:Brown-Out Detector) 공급전원이 2마이크로초 이상동안 그림2 정의된 VBOT이하로 떨어지면 발생된다.

● 그림 5 동작 타이밍도처럼 발생하는데 전압 스파이크에 의한 오동작을 줄이기 위해 히스테리시스 특성을 갖도록 하여 전압이 감소하여  VBOT= VBOT  - VHYST/2이하로 리셋동작이 시작되고 전압이 증가하여 VBOT= VBOT  - VHYST/2이상으로 시간지연카운터를 동작시켜 일정한 시간 tOUT  부가적으로 경과될 때까지 리셋을 유지시킨다.

[그림5] 저전압 검출 리셋 동작 타이밍도


● BOD 기능은 Fuse Low byte의 BODEN 비트를 1로 하여 활성화시킬 수 있고 BODKEVEL비트에 따라 그림 2처럼 설정할 수 있다.


   4) 워치돗 리셋

 워치독 타이머가 지정한 주기 이상이 경과되면 그림 28처럼 1클럭 사이클의 리셋펄스가 발생하여 리셋동작이 시작되고 리셋펄스가 끝나면 시간지연카운터를 동작시켜 일정한 시간 tOUT이 부가적으로 경과될 때까지 리셋을 유지시킨다.

[그림6] 워치독 리셋 동작 타이밍도


   5) MCUCSR 레지스터

MCUCSR(MCU Control and Status Register)레지스터는 마이컴의 리셋 발생원에 대한 정보를 제공한다.


 BIT4(JTRF:JTAG Reset Flag) : JTAG 리셋이 발생한 경우 1로 세트된다. 파워온 리셋이나 0을 써넣음으로써 클리어된다.

 BIT3(WDRF:Watch Reset Flag) : 워치독 리셋이 발생한 경우 1로 세트된다. 파워온 리셋이나 0을 써넣음으로써 클리어된다.

 BIT2(BORF:Brown-Out Reset Flag) : Brown-out 리셋이 발생한 경우 1로 세트된다. 파워온 리셋이나 0을 써넣음으로써 클리어된다.

 BIT1(EXTRF:EXTernal Reset Flag) : 외부 리셋이 발생한 경우 1로 세트된다. 파워온 리셋이나 0을 써넣음으로써 클리어된다.

 BIT0(PORF:Power-On Reset Flag) : 파워온 리셋이 발생한 경우 1로 세트된다. 파워온 리셋이나 0을 써넣음으로써 클리어된다.


(1)  워치독 타이머


  1) 워치독 타이머의 구성

 역할 : 프로세서가 안정적으로 동작하는지 감시하는 기능을 수행한다. 프로세서에 이상이 생겨 일정 시간마다 워치독 타이머가 리셋되지 않게 되는 경우 시스템을 리셋시켜 마이컴의 안정적인 동작을 보장하도록 한다. 워치독 타이머의 리셋은 WDR 명령을 실행하거나 워치독의 동작을 금지시키거나 마이컴이 리셋된는 경우 리셋된다.

 구성 : 그림 7처럼 구성되어 마이컴 내부의 RC발진기와는 별개로 내장되어 있는 워치독발진기와 그 곳에서 만들어지는 1MHz 클럭을 받아 이를 8가지로 분주하는 워치독 프리스케일러, WDTCR레지스터의 설정값에 따라 마이컴 리셋을 발생시키는 논리회로로 구성된다.

[그림7] 워치독 타이머의 구성


  2) WDTCR 레지스터



 BIT4(WDTOE:WatchDog Turn-Off Enable) : 디폴트 값은 0이다. WDE비트가 0일때 1로 세트되어야 한다. 그렇지 않으면 워치독은 비활성화된다. 1로 세트되면 4 클록이 지난 후에 하드웨어적으로 클리어된다. 안전 레벨 1과 2에서 프리스케일러 비트를 바꾸는 경우 1로 세트되어야 한다.

 BIT3(WDE:WatchDog Enable) : 디폴트 값은 0이다. 1로 세트되면 워치독 타이머가 활성화되고 0으로 클리어되면 비활성화된다. WDE는 WDCE비트가 1로 세트된 경우에만 클리어될 수 있다.

 BIT 2~0(WDP2~0: Watch-Dog timer Prescaler2~0) : 디폴트 값은 0이다. 워치독 타이머가 활성화된 경우 프리스케일러를 그림 8처럼 설정한다.

[그림8]워치독 타이머 프리스케일러의 설정


  2) 워치독의 설정

 워치독 타이머의 안전레벨 설정 : 앞의 카테고리에서 소개된 Etended Fuse Byte의 비트들 값으로 안전레벨0, 1, 2로 그림 31에 보여진 것처럼 설정할 수 있다(퓨즈의 비트값들은 프로그램되면 0이되고 프로그램되지 않으면 1).

[그림9] 워치독 타이머의 설정


 안전레벨0 : ATmega103과 호환모드로 그림 31에 보여진 것처럼 초기에는 워치독이 금지되어 있다. WDE를 1로 세트하면 워치독이 허용된다. WDP2~0를 바꿔 즉 프리스케일러의 값을 바꿔 타임아웃 주기를 변경시키는 것에는 제한이 없으나 워치독 타이머를 비활성화시키려면 다음의 과정을 거쳐야 한다.

①WDTCR레지스터에 동시에 WDCE=1, WDE=1로 세트시킨다.

② 4클록 사이클 이내에 WDE=0으로 클리어시킨다.

 안전레벨1 : 디폴트 상태이다. 그림 9에 보여진 것처럼 초기에는 워치독이 금지되어 있다. WDE를 1로 세트 하면 워치독이 허용된다. WDP2~0를 바꿔 즉 프리스케일러의 값을 바꿔 타임아웃 주기를 변경시키거나 워치독 타이머를 비활성화시키려면 다음의 과정을 거쳐야 한다.

①WDTCR레지스터에 동시에 WDCE=1, WDE=1로 세트시킨다.

② 4클록 사이클 이내에 WDE비트와 WDP2~0 비트에 원하는 값을 쓴다.

 안전레벨2 : 그림 9에 보여진 것처럼 초기에 워치독이 허용되어 있고 WDE가 1로 세트되어 있고 워치독을 비활성화시킬 수 없다. WDP2~0를 바꿔 즉 프리스케일러의 값을 바꿔 타임아웃 주기를 변경시키려면 다음의 과정을 거쳐야 한다.

①WDTCR레지스터에 동시에 WDCE=1, WDE=1로 세트시킨다.

② 4클록 사이클 이내에 WDCE=0으로 클리어시키고 WDP2~0 비트에 원하는 값을 쓴다.