자료실

뒤로가기
제목

[PIC 프로그래밍] 3. PIC 프로그래밍시 반드시 알아야 할 사항 - watchdog timer, 카운터

작성자 가치창조기술(ip:)

작성일 2011-08-04 15:13:09

조회 1969

평점 0점  

추천 추천하기

내용

타이머/카운터

마이크로컨트롤러 오실레이터는 동작을 위해 quartz crystal을 사용하는데 quartz crystal을 사용하는 많은 이유가 있습니다. 이 오실레이터는 주파수를 정교하게 정의할 수 있으며 매우 안정적입니다. 그래서 생성하는 펄스의 길이가 항상 같고 이는 시간 측정을 위해서는 이상적이죠. 그래서 quartz 시계에서도 사용이 되고 있습니다. 두개의 이벤트간에 시간을 측정하는 것이 필요하다면, 이 오실레이터에 의해 생성된 펄스수를 카운트 하는 것으로 충분합니다. 그리고 이러한 동작은 정확히 타이머가 동작하는 방법과 동일합니다.

 

 

대부분의 프로그램은 위의 그림과 같은 스탑와치를 사용합니다. 보통 8비트나 16비트 SFR은 오실레이터에서 들어오는 각각의 펄스를 인식하고 숫자를 하나씩 증가 시킵니다. 레지스터의 카운트수가 꽉 차게 되면 인터럽트가 발생되는 것이죠.

만약에 타이머가 내부 quartz 오실레이터를 사용한다면, 이 오실레이터는 두개의 이벤트 사이에 시간을 측정할 수 있습니다. 측정이 시작되는 시간을 T1이라고 하고 측정이 종료되는 시간을 T2라고 할때 두 이벤트 사이의 시간은 T2-T1이 됩니다. 만약 레지스터가 외부 소스에서 오는 펄스를 사용한다면, 타이머는 카운터로 동작 됩니다.

 

타이머는 어떻게 동작하는가?

실제 quartz 오실레이터 펄스는 각각의 머신 사이클에 한번씩 생성이 되고 이는 회로로 전달이 되어 타이머 레지스터에 저장된 숫자를 하나씩 증가 시킵니다. 만약에 한개의 인스트럭션(머신 사이클)이 4개의 펄스동안 지속 된다면 또 4Mhz의 quartz가 달려있다고 할때 이 저장된 숫자는 초당 백만배(1Mhz) 정도 증가하게 됩니다.

 

 

타이머 레지스터가 저장가능한 최대의 수는 256이므로, 위에서 설명한 방법으로 256ms 까지의 짧은 시간 구간은 측정하기가 쉽습니다. 256ms 이상의 측정도 느린 오실레이터를 사용한다던가, 좀더 많은 비트수를 가진 레지스터를 사용한다던가, 프리스케일러나 인터럽트등을 이용하여 쉽게 측정할 수 있습니다. 느린 오실레이터나 비트수 많은 레지스터는 몇몇 약점이 있으므로 프리스케일러나 인터럽트를 사용하는 것을 보통 추천합니다.

타이머 연산에서 프리스케일러 사용

프리스케일러는 미리 정해준 값에 의해 주파수를 줄여주는 요소입니다. 한개의 펄스 출력을 내기 위해서는 1, 2, 4개 이상의 펄스 출력을 입력해 주어야 합니다. 대부분의 마이크로컨트롤러는 한두개의 프리스케일러를 가지고 있으며, 주파수 스케일링 값을 변경할 수 있습니다. 프리스케일러는 긴 시간을 측정할 때 사용되며, 한개의 프리스케일러가 타이머나, 와치독타이머 등에 의해 공동으로 사용될 경우, 각각의 타이머 의해 동시에 사용될수는 없습니다.

 

타이머 연산에서 인터럽트 사용

 

타이머 레지스터가 8비트라면 레지스터가 저장할 수 있는 가장 큰 수는 255입니다. 16비트 레지스터라면 65.535가 가장 큰수가 되겠죠. 이 숫자가 넘어가게되면 타이머는 자동적으로 리셋되고 다시 0 부터 카운트를 시작합니다. 이런 조건을 오버플로우라고 하는데요. 이 오버플로우는 인터럽트를 발생시킬 수 있습니다. 타이머 레지스터 인터럽트에 의해 호출된 인터럽트 루틴은 시간을 측정하기 위한 다른 레지스터의 상태를 변경할 수 있습니다.

 

 

위의 그림은 타이머 연산에서의 인터럽트 사용을 보여줍니다. 프리스케일러를 타이머에 할당함으로써 쉽게 딜레이를 얻을 수 있습니다.

카운터

타이머가 MCU 입력 핀으로부터 펄스신호를 받는다면, 타이머는 카운터로 변합니다. 카운터는 들어오는 펄스의 수를 셀수 있지만 펄스의 너비까지는 고려하지 않습니다. 그래서 시간을 측정할 수 없지만 조립라인에서 제품을 세거나 회전수를 세거나 승객수를 세는 등의 용도로는 사용이 될 수 있습니다.

 

와치독 타이머

watchdog timer는 MCU 내부의 별개의 RC 오실레이터에 연결된 타이머 입니다.

만약 와치독 타이머가 활성화 되면, 카운터가 최대값이 되는 매순간마다 MCU 리셋이 발생하고 프로그램 실행은 최초 인스트럭션 위치부터 다시 시작이 됩니다.

프로그램이 길고 짧은 여러 루프 내에서 실행이 될때 특정위치에 와치독 타이머를 초기화하는 명령을 설정합니다. 루프내에서 주기적으로 타이머를 초기화해주기때문에 와치독타이머는 프로그램 실행에 아무런 영향을 미치지 못하지만, 전기적 노이즈 등과 같은 특별한 이유로 프로그램이 멈추어 섰을때 와치독타이머에 의한 리셋이 발생됩니다.

 



가치창조기술

www.ubiquitics.co.kr

www.vctec.co.kr

 

 

MCU 개발용 보드

제품특징

  • PIC, dsPIC, PIC24, PIC32MX, AVR, PSoC, 8051, ARM 마이크로프로세서 지원
  • 프로그래머 및 ICD 디버거가 개발보드에 내장되어 있어 경제적
  • COG/LCD/GLCD 장착
  • MCU의 모든 핀들은 개발보드상의 인터페이스 핀에 연결되어 있음
  • 개발보드상의 DIP스위치를 이용하여 개발보드를 설정
  • MCU 핀에 LED 및 푸시버튼이 보드상에 연결되어 있음
  • 즉시 사용가능한 다양한 예제 지원
  • 마이크로일렉트로니카 컴파일러 지원
  • 다양한 개발용 악세사리를 개발보드상에 연결하여 사용이 가능

제품군:

제품군 설명
Microchip PIC

Microchip PIC용 개발보드 제품군

Microchip dsPIC Microchip dsPIC용 개발보드 제품군
Microchip dsPIC24-33 Microchip dsPIC24-dsPIC33용 개발보드 제품군
Microchip PIC32MX Microchip PIC32MX용 개발보드 제품군
Atmel AVR 및 XMega Atmel AVR 및 XMega용 개발보드 제품군
Cypress PSoC Cypress PSoC용 개발보드 제품군
Atmel 8051 Atmel 8051용 개발보드 제품군
NXP ARM NXP ARM용 개발보드 제품군
GPS 개발보드 GPS 개발보드 제품군
MCU 컴파일러

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원
  • 편리하고 직관적인 IDE환경
  • 500개 이상의 라이브러리 함수지원으로 개발시간 절약
  • 다양한 개발용 툴 지원
  • mikroProg 하드웨어 In-Circuit Debugging 지원
  • 즉시 사용가능한 예제 지원

제품 모델:

제품 설명
PIC용 컴파일러 Microchip PIC용 컴파일러
AVR용 컴파일러 Atmel AVR용 컴파일러
dsPIC30/33 및 PIC24용 컴파일러 Microchip dsPIC30/33 및 PIC24용 컴파일러
PIC32용 컴파일러 Microchip PIC32용 컴파일러
8051용 컴파일러 Atmel 및 Silicon Labs 8051용 컴파일러

개발용 악세사리보드

제품특징

  • 악세사리보드로 다양한 MCU와 주변장치의 기능을 테스트
  • 통신/저장/시간측정/디스플레이/측정/오디오/전원공급/기타 등의 악세사리보드
  • Mikroelektronika 개발보드에 연결하여 사용 가능
  • 즉시 사용 가능한 예제 제공

제품군:

제품군 설명
통신용 보드 통신용 악세사리보드
스토리지 보드 스토리지용 악세사리보드
시간측정용 보드 시간측정용 악세사리보드
디스플레이 보드 디스플레이용 악세사리보드
센서 및 측정보드 센서 및 측정용 악세사리보드
오디오 및 보이스 보드 오디오 및 보이스용 악세사7리보드
전원제어보드 전원제어용 악세사리보드
기타보드 릴레이, RFID, 센서 등의 다양한 악세사리보드

MCU 개발용 키트

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원 개발용 키트
  • 개발에 필요한 개발보드, 컴파일러 및 악세사리보드 포함
  • 개발용 키트 묶은 구매로 개별구매보다 저렴

제품군:

Part Number 모델 설명
PIC 개발용 키트 Microchip PIC 개발용 키트
dsPIC30 개발용 키트 Microchip dsPIC30 개발용 키트
dsPIC33-PIC24 개발용키트 Microchip dsPIC33-PIC24 개발용 키트
AVR 및 XMega 개발용키트 Atmel AVR 및 XMega 개발용 키트
8051 개발용 키트 Atmel 및 Silicon Labs 8051 개발용 키트  

 

첨부파일

비밀번호
수정

비밀번호 입력후 수정 혹은 삭제해주세요.

댓글목록

등록된 댓글이 없습니다.

댓글 수정

이름

비밀번호

내용

/ byte

수정 취소

비밀번호

확인 취소

댓글 입력

이름

비밀번호

내용

/ byte

평점

관리자에게만 댓글 작성 권한이 있습니다.