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
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 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.