www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic 18F46J50 exp() beinflusst timer


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Folgendes Problem:

- Task Betriebssystem alle 10ms, Timer0-gesteuert.

- Timer3 löst mittels Überlauf alle 300µs ein Interrupt aus.

Im Interrupt timer3 wird nur ein Pin-Zustand abgefragt.

Aktiviere ich nun in der 10ms task eine

exp() Funktion aus math.h

wird der timer3 nicht mehr alle 300µs ausgelöst, sondern

minimal nur noch ca. alle 350µs.

Die e-funktion wird noch nicht einmal ausgeführt sondern
nur mit-compiliert (andere Vorbedingung fehlt)

(selbe habe ich mit timer0 getestet, gleiches Verhalten)

Woran kann das liegen? Stack Falsch eingestellt?
Dauert restore nach Interrupt so lange? (float werte).


Compiler mcc18.exe von microchip free version 3.22

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich befürchte, Du spielst mit dem Gedanken, innerhalb der 
Interrupt-Routine eine EXP-Funktion einzusetzen.

6 - setzen !

Das kann das langsame zeitunkritische Hauptprogramm machen. Die 
INT-Routinen müssen fix verlassen werden um Platz für andere zu 
schaffen!
Die INT-Routine kann ein Flag setzen, das das Hauptprogramm abfragt und 
dann die Berechnungen anstellt...

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Die exp() läuft in der 10ms Task die ausserhalb der Interruptvektoren
liegt.

Wie gesagt ich compiliere die Funktion nur mit. Innerhalb der Task
wird diese nicht ausgeführt da Sie innerhalb einer if() Abfrage liegt.

Das Ergebnis ist halt das der Interrupt scheinbar später ausslöst als 
wenn ich die Funktion nicht mit compiliere.

Gruß Dirk

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.