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];
}
}
T.Assies
Ik zie dingen die je nooit voor mogelijk hield. Ik maak ze mogelijk. Ik kan je pijn en lijden laten zien. In tegenslag vind ik hoop, in de verhalen die ik hoor inspiratie. Ik kan je veel vertellen. Wat ik doe? Ik ontdek. Mijn wereld is jouw wereld.