Forum: Mikrocontroller und Digitale Elektronik Unregelmäßigkeit beim Ablauf eines Programms.


von Haderlump (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.
Ich möchte gleichzeitig 14 Servos ansteuern.
Dazu brauche ich 14 Impulsbreitensteuerungen.
Ich möchte das folgendermaßen realisieren.
über Timer 1-Compare-Interrupt erzeuge ich die positive Flanke bei allen 
Ports.
In der Hauptschleife frage ich dann bei jedem Durchgang den aktuellen 
Timerstand ab. wenn dieser den für den jeweiligen Port zuständigen Wert 
überschreitet, wird dieser auf 0 gesetzt. Das funzt auch gut. Nun mein 
Problem:
Im Simlator klappt alles gut, Die Impuse haben die definierte Länge.
Aber wenn ich das Programm in den Chip lade, Wackelt die Impulsbreite 
unregelmäßig. Die Servos geben ständig Geräusche ab, und Zucken. Das 
wäre für meinen Zweck nicht mal so schlimm, aber sie werden durch die 
ständige Motoraktivierung zu warm.

Gibt es da auf dem Prozessor im Hintergrung irgndwelche Aktivitäten, die 
man explizit abschalten kann und müßte?
Alle Interrupts ausser dem Timer-Compare sind ausser Betrieb.

Gruß Fritz

PS Iim angehängten File habe ich alles auskommentiert, was meiner 
Meinung nach probleme bereiten könnte. Auch habe ich die Impulserzeugung 
auf einen Port beschränkt.

von Haderlump (Gast)


Lesenswert?

Hallo zusammen.
Ich habe dasP roblem mittlerweile gelöst. Das Zucken der Impulse ist 
offensichlich dem Oszilosscop geschuldet. Und dass die Servos gesponnen 
haben lag daran, dass die Impulspause zu kurz war. Ich habe jetzt einen 
völlig anderen Lösungsansatz verwendet, und da löste sich das Problem 
von alleine.

Gruß Fritz

von Stefan F. (Gast)


Lesenswert?

Schau Dir mal an, wie es hier gemacht habe: 
http://stefanfrings.de/servocontroller/index.html

Da benutze ich einen Timer zur Ansteuerung von 10 Servos. Mit zwei 
Timern könnte man 20 Servos ansteuern.

Das Hauptprogramm macht bei mir I2C Kommunikation, was dort passiert, 
beeinflusst das Timing der Servo-Signale nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.