hallo! ist es sinnvoll in interrupt routine floating point rechnung durchführen, wenn nicht warum? oder muss man solchen rechnungen in der hauptroutine erledigen? danke thomas
He, ISR sollten so kurz wie möglich sein, für deine Anwendung würde ich in der ISR ein Flag setzen, im Hauptprogramm abfragen und dort die Berechnung durchführen. Kommt aber darauf an wie schnell der Interrupt kommt, welche Berechnung(en) durchgeführt werden sollen etc..
Wenn Du sonst keine Interrupts hast die zeitkritisch sind, dann kannst Du darin floats berechnen solange Du willst. Kommt halt immer auf das "Gesamtdesign" Deiner Firmware an. Aber... Dass alle sagen, man soll möglichst wenig Zeit in Interrupts verbringen kommt daher, dass manche Firmware sehr lange (meist länger als man denkt) gepflegt und erweitert wird. Hat man dann nicht von Anfang an solche Dinge berücksichtigt, kommt man früher oder später immer wieder zum Punkt an dem nichts mehr richtig funktioniert und man mühsam die Ursachen finden muss. Beachtet man es von Anfang an und programmiert "sauber", dann lässt sich eine Firmware meist ohne grosse Probleme erweitern und anpassen, ohne jedes mal alles auf den Kopf stellen zu müssen.
@ Ber danke für schnelle antwort, es muss einen wert für timer0 ausgerechnet werden, der dann später wiederum interrupt auslöst u.s.w, bis dann eine abbruch bedienug kommt, also das ganze quasi rekursiv ruft sich selbst auf. ich weiss nicht wo ich die berechnung platzieren soll (in ISR oder in Hauptroutine) damit das ganze funktioniert? mache ich das in hauptroutine, kann sein, dass interrupt diese an einer stelle unterbricht wo noch kein neuen wert für timer0 ausgerechnet wurde und timer0 wird dann noch mal mit dem altem wert geladen, aber dein tipp mit dem flag in ISR und der abfrage in der hauptroutine finde ich gut, muss gleich ausprobieren ;)
Wenn du so programmierst, wie schreibst, wird das sowieso nichts. Tip: Sortiere erst mal deine Gedanken. Dann schreibe sauber und nachvollziehbar auf, was du machen willst. Und dann mach dich an die Realisierung.
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.