Parallel geht nicht, es gibt ja nur einen Zeiger auf die Tourdaten..
// Gesetztes Ziel erreicht?
if(copro_target_distance != 0) return(1);
// Tour neu oder fortsetzen
if((tour_ptr == 0) && (tour != 0)){
// neue Tour
tour_ptr = tour;
}
// Tour fortsetzen
Wenn das gesetzte Ziel noch nicht erreicht wurde, ist copro_target_distance != 0 und dann geht's mit return(1) gleich wieder raus
Die neue Tour soll erst starten, wenn tour_ptr 0 ist, und eine neu Adresse != 0 übergeben wurde. Deswegen die beiden Aufrufe in der main: Nur wenn der Frontsensor neu betätigt wurde, wird die Adresse der Tour übergeben, und solange die Tour läuft, wird tour_play mit Adresse = 0 aufgerufen.
Das Prinzip mit der Zykluszeit und dem zyklischen Durchlauf wurde hoffentlich verstanden?! Weil fast jede Source, die ich mir ansehe funktioniert so, dass mit delay oder while solange gewartet wird bis eine Aktion abgearbeitet wurde, bevor die nächste Aktion kommt. Und mitten drin in den Aktionen werden die Pins abgefragt oder gesetzt.
Ich versuche die Programme nach Prinzip EVA (Eingabe - Verarbeitung - Ausgabe) aufzubauen, d.h. in der Mainloop sollten zuerst sämtliche Pins auf Flags oder Variablen abgebildet (eingelesen) werden, dann folgt die Verarbeitung und Aktualisierung der Flags und Variablen, und am Ende werden diese auf die Ausgangspins ausgegeben, usw. E V A.
Am meisten Zeit frisst die Bibliothek bei der LCD Ausgabe ca. 60ms wenn die komplette Grafik als xbm ausgegeben wird. Das Einlesen der Analogwerte Bodensensoren und umrechnen verbraucht bald 40ms. Das gehört meiner Meinung nach noch alles überarbeitet..
aber seit gestern Abend haben wir einen Hundewelpen und noch weniger Zeit für Nibo2.