타이머 1을 표준 모드로 동작시키면서 출력 비교일치 A 인터럽트를 사용. 8개 서보모터 제어.
if(status ==0)
{
RCPORT |= (0x01 << ServoNumber); // PORT pin 0 High
OCR1 += on_count[ServoNumber]; // 타이머1 표준모드 비교일치 레지스터 값 설정.
status = 1;
}
else if(status == 1)
{
RCPORT &= ~(0x01 << ServoNumber++); // PORT pin 0~6 Low
RCPORT |= (0x01 << ServoNumber); //PORT pin 1~7 High
OCR1 += on_count[ServoNumber]; // 타이머1 표준모드 비교일치 레지스터 값 설정
if(ServoNumber >= 7) status = 2;
else status = 1;
}
else (status == 2)
{
RCPORT &= ~(0x01 << ServoNumber); // PORT pin 7 Low
off_count = total_count - (on_count[0] + on_count[1] +.... + on_count[7]); //
OCR1 = off_count;
status = 0;
if(ServoNumber >= 7) ServoNumber = 0;
}
'MCU > AVR' 카테고리의 다른 글
내부 풀업 저항 (I/O 포트) (0) | 2016.04.19 |
---|---|
펌웨어와 임베디드 (0) | 2015.05.29 |
[AVR] 데이터 손실 (0) | 2013.12.12 |
[AVR] 카운트 계산법. TCNTn (0) | 2013.12.12 |
Datasheet 레지스터 보는 방법 (0) | 2013.12.03 |