mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ISR() und Interruptflag


Autor: zanzana (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

seit kurzer Zeit beschäftige ich mich mit dem MSP430F????, irgendwie 
stelle ich immerwieder fest, dass die IRS Flags nicht sauber 
abgearbeitet werden.
soweit ich weiß, werden diese Flags von uC verwaltet, dh. ich muss nicht 
bei jedem Intrrupt den Flag manuel zurück setzten.

mache ich irgendwas falsch?
taucht dieses Phenomäne bei euch auch?
gibt s Tipps oder Ticks?

MFG

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  zanzana (Gast)

>mache ich irgendwas falsch?

Wahrscheinlich fehlt volatile bei der Variablendefinition, siehe 
Interrupt.

MFG
Falk

Autor: zanzana (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch volatile  ist da,

aber was ändert das genau wen es nicht da wäre?
An volatile-Variablen werden keine Optimierungen ausgeführt!
 bei mir scheint es irgendwie ein altes Flag zusein, dass bei Disabelen 
der ISR nicht gelöcht wird...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zanzana schrieb:
> bei mir scheint es irgendwie ein altes Flag zusein, dass bei Disabelen
> der ISR nicht gelöcht wird

Das Löschen wäre auch schlimm.
Flags dürfen nie ohne Grund gelöscht werden, sonst gehen Dir Interrupts 
verloren!

Sie dürfen nur gelöscht werden bei Interrupteintritt oder wenn der 
Programmierer es ausdrücklich so hinschreibt.

Außerdem gibt es oft Situationen, daß eine Interrutpquelle garnicht per 
Interrupt behandelt wird sondern mit Polling.
Z.B. ein einfaches putchar() wartet, bis das vorherige Byte gesendet 
wurde.


Peter

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht bekommst du mehr Interrupts als du erwartest, d.h. während 
der Abarbeitung einer ISR kommen bereits neue Interrupts gleicher Sorte 
rein. Die lösen beim Verlassen der ISR den nächsten Aufruf der ISR aus 
und das mag so aussehen als ob das Interruptflag nicht gelöscht wurde. 
Der Klassiker ist hier eine prellende Taste an einer externen 
Interruptleitung (Entprellung).

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.