-         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 11 von 11

Thema: Mein Dekoder für RC-5 in C im Interruptbetrieb

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.373
    Anzeige

    Hallo Klebwax, danke für Deine Hinweise:
    Zitat Zitat von Klebwax Beitrag anzeigen
    Nur mal eine Sache: Du bist sehr großzügig mit volatile. Ist das wirklich nötig? Das bremst den Optimizer komplett aus ..
    Puhhh - so. Die unnötigen (unsauberen) Deklarationen "volatile" sind bereinigt. Schon einiges Arbeit (bis man draufkommt wie das schnell geht).
    Dann compiliert mit -Os - wie zuvor. Der Vergleich "vorher" "nachher" gab keine Unterschiede aber selbst wenns so wäre - sauber(er) programmiert ist die Sache den Aufwand dann doch wert.
    Zusätzlich wurden unnötige Definitionen bereinigt/entfernt - War schon längst angedacht . . .

    Zitat Zitat von Klebwax Beitrag anzeigen
    .. Und du gibst Strings im Interrupt-Handler über die serielle aus. Das könnte dir deinen 50µs Interrupt ziemlich aus dem Tritt bringen ..
    Ich hatte (einige, wenige) Stellen die mir kritisch vorkamen getestet und hatte die Zeit für diese Stringausgaben gemessen (Ausgang war low, Testanfang - Ausgang high - Stringausgabe - Ausgang low) und Oskar angeguckt (ok ok, *lls Auswerten wäre direkter). Ich blieb dabei im Zeitrahmen. Übrigens hatte ich manche Programmaufrufe (z.B. Regelung!!) auf Zeitbedarf getestet (Oszi, *.lls) um Störungen im "eigentlichen" Betrieb möglichst auszuschließen. 100%igen Erfolg kann ich natürlich nicht garantieren. Es wäre mir auch nicht klar, wie ich das sicherstellen könnte. UND - wenns möglich ist (z.B. beim PingPong-Display) wird UART auch mit ziemlichem Speed gefahren (PingPong wurde extra auf Quarzbetrieb umgelötet).

    Die Regelung. Es werden ja beide Antriebe voneinander getrennt geregelt - Geradeauslauf z.B. wird durch gleiche Strecken-/Speed-Vorgaben angestrebt (erhofft - leider nicht garantiert aus vielerlei Gründen). Und genau da spielt die Laufzeit ne Rolle und genau deswegen wird die 100/s-Regelfrequenz dadurch erreicht dass mit 200/sec geregelt wird - aber eben jeweils alternierend nur einer der beiden Antriebe. Die Regelfrequenz liegt dann im Bereich der Motorzeitkonstanten von 10 ms .. 12 ms der Antriebe (die "as build" gemessen wurden). Insbes. beim MiniD0 (die 0,15-Liter-Coladose) ist der Gleichlauf ziemlich gut zu sehen [/Selbstlob].

    Bestimmte Ausgaben dauern länger als dieser 50µs Interrupt. Das kommt z.B. vor bei Testfahrten von u.A. Servo von A nach B fahren um Positionen zu testen und Ähnliches. Dabei wurden natürlich auch der Zeitbedarf für bestimmte Gesten erfasst. Aber für das Auge spielen >im "Normalbetriieb"< evtl. Interrupt-Störungen keine Rolle (sprich: ich seh da nix).
    Geändert von oberallgeier (04.11.2020 um 08:46 Uhr) Grund: weitgehend (voneinander) gestrichen
    Ciao sagt der JoeamBerg

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. RC5 Dekoder aus empfängt nur Nullen
    Von martin02 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 14.09.2010, 11:31
  2. SIRCS Dekoder!
    Von stowoda im Forum PIC Controller
    Antworten: 5
    Letzter Beitrag: 20.10.2005, 10:29
  3. Hilfe bei einem Telemetrie-Dekoder
    Von ricoderrichter im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 16.08.2005, 20:53
  4. Antworten: 6
    Letzter Beitrag: 10.08.2004, 13:22
  5. ACS Interruptbetrieb invertieren
    Von mgsimon im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 07.03.2004, 17:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •