Kann man in interrupt routine floating point rechnung durchführen (PIC)

Gast #1658516
Lesenswert?

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..
#1658535
Lesenswert?

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.
Gast #1658546
Lesenswert?

@ 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 ;)
Gast #1658554
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren