PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ProgrammCode Reaktion erklären



TrainMen
15.03.2010, 16:02
es geht um das Bsp Programm Move 5, bitte erklärt mir einer folgendes:
im Original sieht es so aus


void behaviour_cruise(void)
{
}

ich habe folgendes getan


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

Dirk
15.03.2010, 18:56
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:

void behaviour_cruise(void)
{
if (getStopwatch6() > 200) {
writeString_P(" Modul Cruise "); writeChar('\n');
setStopwatch6(0);
}
}
Gruß Dirk

TrainMen
16.03.2010, 01:59
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

Dirk
16.03.2010, 14:06
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