Hallo an Alle!
da ich ja in letzter Zeit ein bisschen am experimentieren bin habe ich jetzt versucht ein altes Modellbauservo durch einen ATMega16 steuern zu lassen. Leider reagiert das Servo überhauptnicht (ist aber getestet. Mit der RC-Fernbedinung und dem normalen Empfänger funktioniert es).
Zur kurzen Erklärung:
Das Servo hat seine eigene Stromversorgung mittels Batterieblock. Der Controller wird durch den Programmer mit Strom versorgt.
Ich habe das Signalkabel (die Gelbe Leitung) durchgeschnitten und an PD5 (OC1A) verstöpselt.
jetzt habe ich folgenden Code in C geschrieben aber wie gesagt es reagiert nicht:
Wenn ich den Wert für OCR1A = (uint16_t)1000; nun auf OCR1A = (uint16_t)2000; endere sollte eigentlich das Servo zum neuen Ausschlag fahren und dann da auch bleiben... ich finde den Fehler aber nicht.Code:#include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = (1 << DDD5); // OC1A als Ausgang DDRB= (1<<PB0); ICR1 = (uint16_t)19999; // TOP => 50 Hz OCR1A = (uint16_t)1000; // Vergleichswert einstellen (hier quasi minimaler Ausschlag) TCCR1A |= (1 << COM1A1); // non-inverting mode fuer Pin OC1A TCCR1A |= (1 << WGM11) ; // Fast PWM Mode 14 Teil A TCCR1B |= (1 << CS11); // Prescaler: 1/8 while (1) // endlos { PORTB^=(1<<PB0); //Blinkt nur als visualisierung das überhaupt was tut _delay_ms(100); } return 0; }
Vielen Dank schon mal
Gruß
Jeti
Lesezeichen