Gast
#4136467
Hallo zusammen,
ich habe große Probleme mit meinen Servo :/
Leider läuft es nicht und ich bin schon fast am verzweifeln.
Ich hab mich am Tutorial gehalten aber leider bewegt sich das Ding kein
bisschen.
Servo sollte nicht defekt sein. Per Soft PMW gehts.
Danke schon mal für euro Hilfe.
Julian
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
ISR( TIMER1_COMPA_vect ) // Interruptbehandlungsroutine
{
OCR1A = 2500-OCR1A; // Das Servosignal wird aus der Differenz von
// Periodenlänge (2500*0,008ms=20ms) und letztem
// Vergleichswert (OCR1A) gebildet
}
int main (void)
{
DDRD = 0b11111100;
PORTD = (1<<PD1) | (1<<PD0); // Pullup für PD0 und PD1
TCCR1A = (1<<COM1A0); // Togglen bei Compare Match
TCCR1B = (1<<WGM12) | (1<<CS11); // CTC-Mode; Prescaler 8
TIMSK = (1<<OCIE1A); // Timer-Compare Interrupt an
OCR1A = 2312; // Neutralposition
((2500-2312)*0.008ms)=1,5ms)
sei(); // Interrupts global an
while( 1 ) {
if ( !(PIND & (1<<PIND0)) ) { // Impuls-Zeit verlängern
cli();
OCR1A = OCR1A + 3;
sei();
_delay_ms(50);
}
if ( !(PIND & (1<<PIND1)) ) { // Impuls-Zeit verkürzen
cli();
OCR1A = OCR1A - 3;
sei();
_delay_ms(50);
}
}
return 0;
}