BASIC4MCU | 모터 | 서보모터 | 6채널 - RC서보 FAST PWM 모드14 구동
페이지 정보
작성자 키트 작성일2017-09-05 17:07 조회970회 댓글0건본문
//=====================================================================//
#include <mega128.h>
#include <delay.h>
//=====================================================================//
void RC_Motor(int angle){ // angle : -90도 ~ +90도int i;
i=angle*18+3000;
switch(ch){case 0: OCR1A=i; break;
case 1: OCR1B=i; break;
case 2: OCR1CH=i>>8; OCR1CL=i&0xFF; break;
case 3: OCR3AH=i>>8; OCR3AL=i&0xFF; break;
case 4: OCR3BH=i>>8; OCR3BL=i&0xFF; break;
case 5: OCR3CH=i>>8; OCR3CL=i&0xFF; break;
}
}
//=====================================================================//
void main(void){int i;
DDRB=0xE0; // PB5,6,7 out
TCCR1A=0xAA; TCCR1B=0x1A; // FAST PWM // 8분주=0.5usecOCR1A=3000; OCR1B=3000;
OCR1CH=3000>>8; OCR1CL=3000&0xFF; // 1500usec=0도
ICR1 =39999; // 0.5usec*40000=20000usec=50Hz
//DC모터
DDRE=0x38; // PE3,4,5 out
TCCR3A=0xAA; TCCR3B=0x1A;
OCR3AH=3000>>8; OCR3AL=3000&0xFF;OCR3BH=3000>>8; OCR3BL=3000&0xFF;
OCR3CH=3000>>8; OCR3CL=3000&0xFF;
ICR3H=39999>>8; ICR3L=39999&0xFF;//
while(1){for(i=0;i<6;i++){
RC_Motor(i,-90); _delay_ms(500);
RC_Motor(i, 0); _delay_ms(500);
RC_Motor(i, 90); _delay_ms(500);
RC_Motor(i, 0); _delay_ms(500);
}
}
}
//=====================================================================//
//=====================================================================//
// AVRstudio//=====================================================================//
#define F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//=====================================================================//
void RC_Motor(char ch,int angle){ // angle : -90도 ~ +90도
int i;
i=angle*18+3000;
switch(ch){case 0: OCR1A=i; break;
case 1: OCR1B=i; break;
case 2: OCR1CH=i>>8; OCR1CL=i&0xFF; break;
case 3: OCR3AH=i>>8; OCR3AL=i&0xFF; break;
case 4: OCR3BH=i>>8; OCR3BL=i&0xFF; break;
case 5: OCR3CH=i>>8; OCR3CL=i&0xFF; break;
}
}
//=====================================================================//
int main(void){int i;
DDRB=0xE0; // PB5,6,7 out
TCCR1A=0xAA; TCCR1B=0x1A; // FAST PWM // 8분주=0.5usecOCR1A=3000; OCR1B=3000;
OCR1CH=3000>>8; OCR1CL=3000&0xFF; // 1500usec=0도
ICR1 =39999; // 0.5usec*40000=20000usec=50Hz
//DC모터
DDRE=0x38; // PE3,4,5 out
TCCR3A=0xAA; TCCR3B=0x1A;
OCR3AH=3000>>8; OCR3AL=3000&0xFF;OCR3BH=3000>>8; OCR3BL=3000&0xFF;
OCR3CH=3000>>8; OCR3CL=3000&0xFF;
ICR3H=39999>>8; ICR3L=39999&0xFF;//
while(1){for(i=0;i<6;i++){
RC_Motor(i,-90); _delay_ms(500);
RC_Motor(i, 0); _delay_ms(500);
RC_Motor(i, 90); _delay_ms(500);
RC_Motor(i, 0); _delay_ms(500);
}
}
}
//=====================================================================//
댓글 0
조회수 970등록된 댓글이 없습니다.