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값을 저장한다.
분주비
// 타이머 카운터를 이용하여 일정 클럭 신호를 만들어서, LED로 확인해 보는 예제이다.
타이머 카운터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....