mikrocontroller.net

Forum: Compiler & IDEs Datenaustausch mit ISR


Autor: fambi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im AVR-GCC-Tutorial ist schön beschrieben, dass man beim Lesen von
Variablen > 8 Bit, die durch eine ISR aktualisiert werden, vorher
Interrupts mit cli deaktieren muss, um zu verhindern, dass die ISR
während des Lesens den Variablenwert ändern.

Nun ist die Frage, was man tun kann, wenn man alle Interrupts, z.B.
beim Auswerten bestimmter Ereignisse braucht und sich nicht erlauben
kannn diese zu deaktivieren?

Hat vielleicht jemand eine Idee?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Lesen von Variablen braucht zwar u.U. ein paar Taktzyklen, aber die
einzelnen Interrupt-Flags werden ja trotz globalem Disable gesetzt,
wenn ein Interrupt-Ereignis auftritt. Wenn man dann mit sei() die
Interrupts wieder freigibt, werden alle in der Zwischezeit
aufgelaufenen Interrupts entsprechend ihrer Priorität der Reihe nach
abgearbeitet, sofern man nicht per SW die Flags gelöscht hat. Im
Normalfall reicht das von der Reaktionszeit noch aus. OK, ich weiß ja
nicht, was Du für Verarbeitungsgeschwindigkeiten brauchst...

Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss ich mal noch durchrechnen. Ich arbeite mit 16 Mhz und habe 6000
Ereignisse pro Sekunde zu verarbeiten, d.h. wechselnde Flanken
auzuwerten, bei einem Quadratur Geber müssen 2 Spuren, alle Flanken
erfasst werden. Insgesamt 60 Flanken pro Umdrehung. Wenn ich mit 6000
Umdrehungen pro Minute fahre, sind das 6000 Flanken pro Sekunde.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
macht der avr zwischen mittagsschlaf und kaffee.

Autor: fambi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke

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.