mikrocontroller.net

Forum: Compiler & IDEs PWM (servo) signal messen


Autor: Christian Funck (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich möchte ein Servo-Signal vom Modellbau-Empänger mit meinem mega8
messen. dazu habe ich Programm gemacht (Anhang), welches das Signal mit
Interrupts an INT0 und INT1 und dem Timer0 messen soll. Den
wert(signallänge) sende ich dann mal als Test (mit Uart) an den PC.
Doch leider kommt nur Unsinn raus: 86,32,61,67,40,97,40...... u.s.w.
dabei müsste das signal(1-2ms) bei 8MHz/256 höchstens etwa 70-20 Takte
lang sein. Wo ist der Fehler? rauscht ein Servosignal stark?


Zum Programm:
INT1 hat eine steigende Flanke, soll also bei beginn des PWM-high
signals den start der messung übernehmen. in diesem interrupt setzte
ich den 8bit timer auf null; nachher schalte ich den Interrupt für den
INT1 aus, den für INT0 ein. Interupt1 fertig.
INT0 hat eine fallene Flanke, soll bei Ende des High-Signals loslegen:
Schaltet den Interrupt für INT0 aus, für INT1 ein und liest den wert
von des Timers aus, sendet ihn per Uart an den PC.Interupt0 fertig.

bitte hilfe, bin für alles dankbar, auch Vorschläge wie ich das sonst
realisieren könnte.
Grüsse
Christian

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss nicht warum du INT0 und INT1 verwendest. Einer würde es doch
auch tun.
Mein vorschlag wäre so:
INT0 auf steigende Flanke stellen
Timer auf 0 stellen
Bei Interrupt Timer starten
INT0 auf fallende Flanke stellen
Bei Interrupt Timer stoppen, auslesen,
INT0 auf steigende Flanke stellen usw.

Eine weitere Möglichkeit wäre wenn vorhanden den ICP zu verwenden.
Ob dir die Auflösung mit dem 8bit Timer fein genug ist musst du selbst
entscheiden.

Autor: Christian Funck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke :-),
habe mir auch schon gedacht dass ein Pin reichen würde, aber würde das
etwas an der Sache ändern?.
Allerdings finde ich es doch ziemlich komisch, dass so willkürliche
werte dabei rauskommen. irgendetwas kann da ja nicht stimmen :-(

Autor: Christian Funck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aslo: ich habe jetzt mal meinen 2ten mega8, der ein servo signal
erzeugt, als "empfänger-ersatz" am INT1 angeschlossen und siehe da,
es funktioniert; die Signallägen werden ordnungsgemäss gemessen und
ausgegeben. Das Programm funktioniert also.
Folglich liegt das Problem beim empfänger. der gibt doch ein PWM-signal
1-2ms high, 20ms low aus, oder?
Habt ihr irgendwelche Ideen weshalb der empfänger solchen schwachsinn
produziert? Habe leider kein Oszi um das signal zu messen, aber die
Servos funktionieren gut damit.
Grüsse
Christian

PS: habe jetzt das Programm wie Hubert.G vorgeschlagen hat geändert,
dass nur noch 1pin benötigt wir. Danke :-D

Autor: Christian Funck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UHHHHHH ARGGGHHHHH :!:::::!!!!!!
MIST !!!!
Da habe ich trottel doch tatsächlich übersehen dass die empfänger
spannung höher war als die vom mega8. jetzt funktioniert alles:-P

Autor: DL4MCV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
is der MEGA8 jetzt hin?

Autor: Christian Funck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nene,funzt noch. habe glück gehabt :-D

Autor: Michael Fleisch (Firma: HTL Rankweil) (mik2412)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Christian Funck

ich muss eine ähnliche anwendung realisieren und bin aber ein neuling 
auf dem Mikrcontrollergebiet.

kannst du deshalb den kompletten code veröffentlichen? würde mir sicher 
weiterhelfen.

mfg Michael Fleisch

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Leichenschänder!
2. Such mal hier im Forum nach "Servo". Da wirst du genug Code finden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.