mikrocontroller.net

Forum: Compiler & IDEs Problem mit Interrupts, die glob. int´s veraendern


Autor: Friedemann Schlosser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir fiel folgendes Problem auf:

ich definiere eine globale 16bit-Variable per

static volatile unsigned char xy;

Nun wird im z.B. im Timer0-Interrupt eine Messung ausgefuehrt, deren 
Ergebnis in xy landet. Das Hauptprogramm soll diese nun auswerten und 
holt sich das Ergebnis per

wert = xy;

dies wird uebersetzt in

lds r24, xy
lds r25, (xy)+1

Was passiert nun, falls der Interrupt genau zwischen diesen beiden 
Befehlen auftritt und xy veraendert, bekommt das Hauptprogramm dann den 
halben alten und den halben neuen Wert?

Was waere ein moeglicher Workaround, Interrupt waehrend des Werte-holens 
abschalten oder lock bits?

Gruss!

Autor: Friedemann Schlosser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Problem wurde schon beantwortet:

Mit cli und sei die Problemstelle einkapseln.

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, nicht in zwei verschiedenen Foren zugleich posten. ;-)

Autor: Friedemann Schlosser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte nur befuerchtet, mein Englisch versteht keiner ;-)))

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.