Hallo,

Ik probeer een pwm te implementeren om een servo aan te sturen met een atmega32. Om te testen zet ik er even een ledje op, met een zichtbare knipper frequentie. Jammer maar helaas blijft de led uit.

Ik zit even vast op volgende, wie helpt me eruit?


#define		F_CPU 				10000000UL

void init_servos(void);



#define		A	0
#define 	B 	1
long int servo_OCR1[2];


int main(int argc, char *argv[]){
	//set ports
	DDRD =  0xFF;
	PORTD = 0X00;
	
	init_servos();
	
	servo_OCR1[A] = 30000;
	servo_OCR1[B] = 30000;
	
	OCR1A = servo_OCR1[A];
	
	asm("sei");
	while(1){;}
}


void init_servos(void){
	//PWM SETUP
	TIMSK |= (1<<OCIE1A) | (1<<OCIE1B); 				//interrupt when compare match
	TCCR1B = 0b00001101;								//prescaler 1024, CTC
	
}



INTERRUPT(SIG_OUTPUT_COMPARE1A){		
	
	if(PIND & (1<<5)){									//ZET PIND.5 HOOG
		PORTD &= ~(1<<5);
		OCR1A = 50000 - servo_OCR1[A];
		
	}
	else {												//ZET PIND.5 LAAG
		PORTD |= (1<<5);
		OCR1A = servo_OCR1[A];
	}
}

Weet iemand of het mogelijk is, mbv van timer1 twee onafhankelijke pwm pulsen te genereren?

Dat is mogewlijk, als je er zelf twee tellers bij maakt.