Hallo,
kann man grob ausrechnen wie lange der Controller in der Schleife hängt?
Will nicht die delay Funktion nehmen, weil ich aus der include Datei
nicht schlau werde.
void warten (uint16_t zeit)
{
uint16_t counter=0;
while(counter<(zeit*10))
{
counter++;
}
}
aber wenn du es wissen willst schau einfach im Asembler Fenster im CylceCoutner wie lange er braucht.
Die Wartezeit ist etwa 3 Stunden. Du wirst ja wohl vermutlich mit einer Zuse Z10 rechnen.
Kann denn das Hauptprogramm zu jeder Zeit auf den Timer zugreifen? Also eine Variable zum gewünschten Zeitpunkt auf 0 setzen und mit dem timer hochzählen lassen, bis der wert dann erricht ist?
Nicht vergessen, die Optimierung abzuschalten, dann ruft er bei jedem Vergleich die Lib für die Multiplikation (zeit*10) auf und das kostet schön Zeit. Aber das ist dann auch ne Lib, die Du nicht verstehst. Die Compiler-Libs sind nicht dazu gedacht, daß man sie versteht, sondern daß man sie benutzt. Sie sind in der Regel auch ausreichend evaluiert.
Je nachdem wie sehr man den Compiler optimieren lässt fällt die Wartezeit auch ganz weg. Weil es gar nicht so einfach ist die Laufzeit einer solchen Warteschleife zu berechnen gibt es dafür die Lib mit Delay usw. Selbst wenn man die Lib nicht versteht, weiß man dann wenigstens was die Funktion delay_us oder ähnliches macht. Für eine variabel Wartezeit kann aber auch eine kombination aus dem Code oben und der Funktion aus der Lib nötig sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.