Atmega128 16 bit varible in interrupt schreiben und in main Lesen

#1605369
Lesenswert?

Nicht ganz ohne Weiteres.  Da der Interrupt zu jeder Zeit kommen kann - 
also auch zwischen dem Lesen des ersten und des zweiten Bytes - sollten 
Interrupts während des Auslesens gesperrt sein (jedenfalls wenn es sich 
um eine CPU handelt, bei der 16-Bit-Operationen nicht atomar sind (also 
nicht in einem Rutsch gehen) wie den 8-Bit-AVRs).
Persönliche Seite #1605825
Lesenswert?

Heiko schrieb:

> was in dem Artikel noch nicht drinsteht

Weil der Artikel Interrupt eigentlich nicht speziell für AVR 
geschrieben ist. Dass die Beispiele dann doch wieder von der 
AVR-Fraktion kommen... :)

Der AVR-spezifische Teil und C und inkl. ATOMIC... steht dann im 
AVR-GCC-Tutorial: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Variablen_gr.C3.B6.C3.9Fer_1_Byte
Persönliche Seite #1605856
Lesenswert?

Pauschal habe ich mit dieser Behauptung Bauchweh. Speziell, wenn nicht 
auf ASM-Ebene sondern in einer Hochsprache gearbeitet wird.

Wenn es darauf ankommt, würde ich immer prüfen, ob der Compiler bei der 
gewählten Optimierungsstufe aus der C-Anweisung mit dieser Variable eine 
nicht unterbrechbare ASM-Anweisung macht oder mehrere unterbrechbare.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren