์ด๋ฒ์ ํ ์คํธํด๋ณธ ์ ํ์ ATMEL์ ATXMEGA32D4์ด๋ค. ๊ธฐ์กด์ ์ํ๋ก ๋ฉํ ํ๋ ๋ชจ๋ธ์ธ๋ฐ, ๋ ๋ค๋ฅธ ๊ณณ์ ์ํ๋ก ๋ฉํํ ์ผ์ด ์๊ฒจ์ ๋จ๊ฒจ์ ธ ์๋ ์๋ฃ๋ก ๋ณด๋๋ฅผ ๋ง๋ค๊ณ ํ์จ์ด๋ฅผ ๋ฃ์๋๋, ๋์ํ์ง ์์๋ค.
์๋ฅํ๋ ์ฌ์๋ ์๋ฌด ์ฃผ์๋ ๋ฌ์ ๋์ง ์์ ์ฝ๋์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ์์ฑ๋ ํ๋ก๋๋ง ๋จ๊ฒจ๋๊ณ ๋ ๋ฌ๋ค.
AVR๋๋ค์ ํจ์ฆ๋นํธ ์ธํ ์ด ์ด์ฉ๊ณ ํ๊ธฐ ๋์ ๊ทธ๋ฐ ๋ถ๋ถ์ด ๋ฌธ์ ์ด์ง ์์๊น ์ถ์๋ค. ๋ฌผ๋ก ๋จ๊ฒจ์ ธ ์๋ ํ๋ก๋์ ์ฝ๋๊ฐ ์ ์์ธ์ง๋ ํ๋จํ ์ ์๋ค. ์ ์์ด๊ธธ ๋ฐ๋ ๋ฟ์ด๋ค.
์๋ฌดํผ, ํจ์ฆ๋นํธ ์ธํ ์ ๋ณด๋, ์์น๋ ๊ด๋ จ ๋ด์ฉ์ด ์์ด์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ ์๋์ ๊ฐ์ด ์์๋ค.
void watch_dog(void)
{
CPU_CCP = 0xD8;
WDT_CTRL = 0x1F;
}
์ ์ฝ๋์ ๋ณด๋ฉด 2๊ฐ์ง ๋ ์ง์คํฐ์ ๊ฐ์ ๋ฃ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
/* CPU - CPU registers */
#define CPU_CCP _SFR_MEM8(0x0034)
/* WDT - Watch-Dog Timer */
#define WDT_CTRL _SFR_MEM8(0x0080)
์ ๋ ๋ ์ง์คํฐ๋ฅผ ๋ฐ์ดํฐ์ํธ์์ ์ฐพ์๋ดค๋ค.
CPU_CCP๋ ์๋์ ๋ ์ง์คํฐ๋ก ๋ณด์ธ๋ค. 0xD8๋ก ์ ์ผ๋ฉด "๋ณดํธ๋ I/O ๋ ์ง์คํฐ ๋ณ๊ฒฝ"์ ํ ์ ์๋ค๊ณ ํ๋ค. ์ฆ, ๋ณดํธ ํด์ ๋ผ๋ ์๋ฆฌ๋ค. ์ด๋ ์ธํฐ๋ฝํธ๋ก ๋ฌด์ธ๊ฐ ๋๊ณ ์๋ค๋ฉด ๋ฉ์ถ๋ค๊ณ ํ๋ค. ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋๋ ์ค์ด ์ฌ์ฉํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค๋ ์๋ฆฌ๋ค.
WDT_CTRL์ 0x1F๋ก 0001 1111 ์ด๋๊ฑด๋ฐ, ์๋๋ฅผ ๋ณด๋ฉด PER์ 0111, ENABLE ํ์ฑํ, CEN ํ์ฑํ๋ก ๋ณด์ธ๋ค. PER 0111์ 1KCLK์ผ๋ก ํ์์์ ์ฃผ๊ธฐ๊ฐ 1.0s์ด๋ค. ์ฆ, MCU๊ฐ ๋จนํต์ธ์ง 1์ด์ ํ๋ฒ์ฉ ์ฒดํฌํ๋ค๋ ์๋ฆฌ๋ค. ์ง๊ธ์ 1์ด์ ํ๋ฒ์ฉ ํฑํฑ ๊ฑฐ๋ฆฌ๋ฉฐ ์์น๋ ์ด ์ง์ ธ๋๊ณ ์๋ค.
ENABLE์ ์์น๋ ์ ์ฌ์ฉํ๊ฒ ๋ค๋ ํ์ฑํ ๋นํธ์ธ๋ฐ, ์ด๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ๋์์ CEN ๋นํธ๋ ํ์ฑํ ํด์ผ ํ๋ค๊ณ ํ๋ค. CEN์ ๋ณ๊ฒฝ ํ์ฑํ ๋ผ๋ ๋นํธ์ด๋ค.
์ฆ, ์ฝ๋์์ ์์ ๊ฐ์ด ์์ฑ๋์ด ์์ผ๋, ํจ์ฆ๋นํธ ์ธํ ํ ๋๋ ๋ง์ถฐ์ฃผ๋ฉด ๋๊ฒ ๋ค.
'Embedded HW & FW > ATmel (AVR)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PIC] MPLAB IPE๋ก ํ์จ์ด ๋ค์ด๋ก๋ ๋ฐฉ๋ฒ (0) | 2023.03.21 |
---|
์ต๊ทผ๋๊ธ