Forum: Compiler & IDEs AVR & int. EEPROM


von Sascha (Gast)


Lesenswert?

Hi,

nutze die Funktionen aus der eeprom.h. Beim schreiben ins EEPROM,
sollen die Interrupts gesperrt werden. Geschieht dies automatisch, oder
muss ich die Interrupts noch selber sperren? Habe dazu nichts gefunden.

Mfg Sascha

von mthomas (Gast)


Lesenswert?

Bei avr-libc-Funktionen findet man die Anwort auf solche Fragen immer im
Quellcode der lib ("klickbrowsebar" im cvs auf savannah) und nein, die
eeprom.h-Funktionen pruefen zwar, ob das/der Eeprom schreibbereit ist,
sperren aber keine Interrupts. (Muesste auch auch im wikki
avr-gcc-Tutorial erwaehnt sein)

von Jörg Wunsch (Gast)


Lesenswert?

Errm, ich widerspreche Dir selten, Martin, aber in diesem Falle hast
Du wohl was übersehen:

_U(eeprom_write_byte):
...
        in      _tmp_reg_, _SFR_IO_ADDR(SREG)
        cli                     ; /* no ints between setting EEMWE and
EEWE */
        sbi     _SFR_IO_ADDR(EECR), EEMWE
        sbi     _SFR_IO_ADDR(EECR), EEWE
        out     _SFR_IO_ADDR(SREG), _tmp_reg_

Da werden also sehr wohl die Interrupts im kritischen Bereich gesperrt.

von mthomas (Gast)


Lesenswert?

Ups. Danke Joerg. Hatte das anderes in er Erinnerung und nicht mehr
extra nachgeschlagen - Schnellschuss - sorry fuer die Desinformation.
wikki/avr-gcc-Tutorial enthaelt somit redundante sicherung des sreg und
cli. Wird baldmoeglichst korrigiert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.