ARM

타이머 카운터0
AT91SAM7S256에는 동일한 구조와 기능의 16비트 타이머/카운러채널 (TC0~TC2)를 가지고 있다. 이들 3개의 채널은 서로 독립적으로 동작하며 이벤트카운트, 주파수 측정, 시간간격측정,시간지연, 펄스 발생 PWM출력등의 기능을 수행할 수 있다.

실습
TC0를 이용하여 파형발생 모드로 led를 깜박이기

사용레지스터

채널 콘트롤 레지스터 클럭을 인가할때 사용한다.


채널 모드 설정 wave=1로 하면 파형출력 모드를 사용한다.

파형 모드 설정

ACPA  RA 값을 비교하여 TIOA를 설정한다.
ACPC RC 값을 비교하요 TIOA를 설정한다.


TC0_CV 실시간으로 카운터 값을 저장한다.
TC0_RA 실시간을로 RA값을 저장한다.
TC0_RC 실시간을로 RC값을 저장한다.



분주비



#include "MyArm.h"

#define MASTERCLOCK 48000000
#define INTERR    0x00000100
#define LED      0x00000010 

//--------- 전역 변수

void Delayms(unsigned int ms) //딜레이 함 수..

  volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;

  for(count = 0; count < countmax; count++);
}

int main(void)
{  
  // PMC setting
  PMC_PCER = (unsigned int)1 << PID12;  // 장치 PID12번에 클럭 공급
  
  // PIO setting
  PIO_PDR = (1 << P0) | (1 << P1);    // PA0, PA1 Disable
  PIO_BSR = (1 << P0) | (1 << P1);    // PA0, PA1 장치 B Select
  
  // TC setting
  TC0_CCR = (1 << P0) | (1 << P2);    // TC enalbe
  TC0_CMR = (1 << P15) | (1 << P16) | (1 << P19) | (1 << P2);  // RA compare set, RC compare clear, clock=48Mhz/1024
  TC0_RA = 0x000F;
  TC0_RC = 0xF000;
  
  while(1)
  {

  }
  
  return 0;
// End Main....
// 타이머 카운터를 이용하여 일정 클럭 신호를 만들어서, LED로 확인해 보는 예제이다.

+ Recent posts