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
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.
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 :-(
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
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
@ 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
1. Leichenschänder! 2. Such mal hier im Forum nach "Servo". Da wirst du genug Code finden.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.