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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.