www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kann man in interrupt routine floating point rechnung durchführen (PIC)


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Interrupt

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.