-         

Ergebnis 1 bis 4 von 4

Thema: ProgrammCode Reaktion erklären

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450

    ProgrammCode Reaktion erklären

    Anzeige

    es geht um das Bsp Programm Move 5, bitte erklärt mir einer folgendes:
    im Original sieht es so aus
    Code:
    void behaviour_cruise(void)
    {
    }
    ich habe folgendes getan
    Code:
    void behaviour_cruise(void)
    {
    writeString_P("  Modul Cruise "); writeChar('\n'); 
    }
    Eine Anzeige bekomme ich nun, nur jetzt funktioniert das ACS nicht mehr.
    Warum ? Welcher Zusammenhang ?
    Trainmen

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo TrainMen,

    wenn du in der Hauptschleife eine UART Textausgabe bei jedem Durchlauf machst, verzögert das die Hauptschleife jeweils um einige ms.
    Damit wird auch die task_RP6System() nur noch verlangsamt ausgeführt.

    Die Hauptschleife sollte aber so schnell wie möglich ablaufen.

    Was kann man machen:
    1. Du brauchst die Textausgabe gar nicht, weil sie sowieso ständig ausgegeben wird. Du wirst dadurch also nicht schlauer.
    2. Wenn du sie doch machen willst, würde ich sie mit einer Stopwatch zumindest nur alle 200ms oder so ausgeben lassen:
    Code:
    void behaviour_cruise(void) 
    { 
    if (getStopwatch6() > 200) {
    writeString_P("  Modul Cruise "); writeChar('\n');
    setStopwatch6(0);
    } 
    }
    Gruß Dirk

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    ja eigentlich sollte da auch keine Textausgabe hin.
    Ich wollte da eigentlich die Lichtsensoren einlesen und je nach Bedingung meine Scheinwerfer an oder ausschalten. Das Programm alleine läuft wunderbar, nur wenn ich es in Move5 einfüge, passieren die tollsten sachen. Motorüberlastung und fehlerhafte Encoder bekomme ich da angezeigt. Die Textausgabe ist das letzte was übrig geblieben ist und trotzdem lief Move5 nicht mehr.

    Das mit der Hauptschleife ist nicht richtig angekommen. Wie gesagt habe ich an Move5 nichts verändert ausser Cruise und Cruise wird vom Controller aufgerufen und der aus der Hauptschleife, also rufe ich nichts direkt auf sondern die einzelnen Module, aber irgendwie HÄÄÄ...............
    Das wird eine schlaflose Nacht..................
    Trainmen

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo TrainMen,
    Das mit der Hauptschleife ist nicht richtig angekommen.
    Doch, doch. Das ist schon angekommen.

    Du verlängerst behaviour_cruise durch eine Textausgabe ...
    ... dadurch verlängert sich die Laufzeit von behaviourController() ...
    ... dadurch die Hauptschleife.

    Und das passiert bei jedem Durchlauf der Hauptschleife, denn immer wird behaviourController() aufgerufen und der ruft immer behaviour_cruise() auf.

    Gruß Dirk

Berechtigungen

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