Forum: Mikrocontroller und Digitale Elektronik frage zu avr-lib eeprom_write_byte


von Vlad T. (vlad_tepesch)


Lesenswert?

Hi,
Ich hab schon gesucht, aber das nicht gefunden.
weder im Tutorial noch in der Doku der avr-lib

Die Frage:

Arbeitet die eeprom_write_byte synchron oder asynchron.
sprich: wartet sie am Ende solange der Eeprom beschrieben wurde oder 
oder beendet sie sich nach Start des Schreibvorgangs.

MfG,
vlad

von Simon K. (simon) Benutzerseite


Lesenswert?

Siehe eeprom.h
1
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
2
{
3
    do {} while (!eeprom_is_ready ());
4
5
#if  defined(EEPM0) && defined(EEPM1)
6
    EECR = 0;    /* Set programming mode: erase and write.  */
7
#elif  defined(EEPM0) || defined(EEPM1)
8
# warning "Unknown EECR register, eeprom_write_byte() has become outdated."
9
#endif
10
11
#if  E2END <= 0xFF
12
    EEARL = (size_t)__p;
13
#else
14
    EEAR = (size_t)__p;
15
#endif
16
    EEDR = __value;
17
18
    __asm__ __volatile__ (
19
        "/* START EEPROM WRITE CRITICAL SECTION */\n\t"
20
        "in  r0, %[__sreg]    \n\t"
21
        "cli        \n\t"
22
        "sbi  %[__eecr], %[__eemwe]  \n\t"
23
        "sbi  %[__eecr], %[__eewe]  \n\t"
24
        "out  %[__sreg], r0    \n\t"
25
        "/* END EEPROM WRITE CRITICAL SECTION */"
26
        :
27
        : [__eecr]  "i" (_SFR_IO_ADDR(EECR)),
28
          [__sreg]  "i" (_SFR_IO_ADDR(SREG)),
29
          [__eemwe] "i" (EEMWE),
30
          [__eewe]  "i" (EEWE)
31
        : "r0"
32
    );
33
}

von Vlad T. (vlad_tepesch)


Lesenswert?

oh, ok.

danke, da hätt' ich auch drauf kommen können ;)

von Simon K. (simon) Benutzerseite


Lesenswert?

Bitte Bitte! ;)

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.