[AVR Mega 8] Servo bewegt sich nur in eine Richtung

OP #1797013
Lesenswert?

Hallo,

ich habe heute mal versucht, einen Servo anzusteuern. Dazu wollte ich
ganz einfach anfangen:
1
#include <avr/io.h>
2
#define F_CPU 8000000UL
3
#include <util/delay.h>
4

5
int main() {
6
 // Alle Pins des Ports B als Ausgang definieren:
7
  DDRD = 0xff; 
8

9
  while(1) {
10
  // 5 auf high
11
  PORTD=(1<<PD5);
12
  _delay_ms(1);
13
  // 5 auf low
14
  PORTD &= ~(1<<PD5);
15
  _delay_ms(9);
16
  _delay_ms(10);
17
 }
18
}

Ich benutze das Pollin Board, bei F_CPU habe ich 16, 8, 4, 1
ausprobiert. Der Takt müsste auf intern gestellt sein.

Doch leider bewegt sich der Servo nur in eine Richtung bis zum Anschlag.

Wo liegt das Problem?

Grüße

[Eine kleine Diskussion gibt es dazu unter 
Beitrag "Re: einfache Servoansteuerung" dieser Thread wurde 
aber leider gesperrt]
#1797017
Lesenswert?

Tilman Stremlau schrieb:

> Doch leider bewegt sich der Servo nur in eine Richtung bis zum Anschlag.
> Wo liegt das Problem?

Da gibt es IMHO kein Problem.
Genau das hast du ja programmiert!

> Der Takt müsste auf intern gestellt sein
Du hast aus dem alten Thread nichts gelernt. Mit 'müsste' kommt man 
nicht weiter. Wie ist denn nun die Einstellung deines internen Taktes?

Im zweifelsfall probierst du es aus:
Häng anstelle deines Servos eine LED an den Ausgang und lass dieses 
Programm laufen:
1
#include <avr/io.h>
2
#define F_CPU 8000000UL
3
#include <util/delay.h>
4

5
int main() {
6
 // Alle Pins des Ports B als Ausgang definieren:
7
  DDRD = 0xff; 
8

9
  while(1) {
10
    PORTD=(1<<PD5);
11
    _delay_ms(1000);
12
    PORTD &= ~(1<<PD5);
13
    _delay_ms(1000);
14
  }
15
}
Wenn dein interner Takt tatsächlich auf 8Mhz steht, dann ist deine LED 1 
Sekunde hell und 1 Sekunde dunkel. Ist die LED 8 Sekunden an und 8 
Sekunden aus, dann steht der interne Takt auf 1Mhz und nicht auf 8.

Damit kommst du erst mal von 'müsste' weg, hin zu: Ich weiß das der 
interne Takt auf so_und_soviel Mhz steht! Etwas zu wissen ist dann schon 
etwas ganz anderes als etwas zu vermuten. Damit kann man dann auch 
arbeiten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren