#include
#include
void main(void)
{
unsigned int i=0;
DDRD=0xff; //PB5,6 입니다.
while(1)
{
for(i=0; i<100; i++)
{
PORTD=0x01; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x02; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x04; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x08; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x10; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x20; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x40; delay_us(600); PORTD=0x00; delay_ms(23);
PORTD=0x80; delay_us(600); PORTD=0x00; delay_ms(23);
}
}
}
#include
#include
#define Servo1 PORTD.0
#define Servo2 PORTD.1
#define Servo3 PORTD.2
#define Servo4 PORTD.3
#define Servo5 PORTD.4
#define Servo6 PORTD.5
#define Servo7 PORTD.6
#define Servo8 PORTD.7
unsigned char PWM[8]={30};
int count=0;
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
interrupt [TIM1_COMPA] void timer1_compa_isr(void){
if(count=1150)count=0; //23ms
}
}
void main(void){
unsigned char i, k;
DDRD=0xFF;
OCR1A=39; TCCR1B=0x0A; TIMSK=0x10; //16000000/8/(1+39)=50000Hz=20usec
#asm("sei")
//delay_ms(1000);
while(1){
for(i=30;i<=120;i++){ // 600usec~2400usec까지 2도 단위로 증가
for(k=0;k<8;k++)PWM[k]=i; // 8개 PWM값 설정
delay_ms(100); }
}
}