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.