Hallo workwind,
warum sind die Variablen pwm_timer_ms und pwm_timer_s nicht als volatile deklariert?
Ich benötige für mein Programmkonzept - ich mag keine delay() - eine feste Zykluszeit, und habe es so probiert:
int main {
while(1==1){
// Mainloop soll alle 10ms einmal durchlaufen werden
uint16t zyklus = pwm_timer_ms + ZYKLUSZEIT;
input_update();
::
Display_Fun();
while(zyklus < pwm_timer_ms) {}
}
return 0;
}
Und das untere while funzt nicht, weil das pwm_timer_ms einmal in ein Register geladen wird, und immer wieder nur der Registerinhalt ohne Aktualisierung verglichen wird.
Meine einzig bekannte Lösung ist, das pwm_timer_ms als volatile zu deklarieren, aber dann würde mein Code nicht mehr hier in roboter.cc funktionieren.
Ich denke mal, das trifft auch für alle anderen Variablen zu, die über Interrupt verändert werden.
Und dann frage ich mich, warum sind die Variablen vom CoPro public. Fast alle anderen sind nur über Methoden änder- und abfragbar (gfx_draw_mode()..).