Oto kawałek kodu umieszczonego w sekcji bootloadera (od 0x01e000): .. #define BOOT_VER_ADDR 0x01dd00 //adres , gdzie zapisuje uint32_t pom32; uint16_t pom; .. pom=0x1234; boot_spm_busy_wait(); pom32=BOOT_VER_ADDR; boot_page_erase(pom32); boot_spm_busy_wait(); boot_page_fill(0,pom); //zapis liczby do bufora boot_page_write(pom32); // i zapis strony boot_spm_busy_wait(); pom=pgm_read_word_far((uint32_t)pom32);
.i zmienna pom jest równa 0xffff zamiast 0x1234, innymi słowy zapis pamięci FLASH i odczytanie z niej nie daja tego samego rezultatu. Po odczytaniu pamięci FLASH pod adresem BOOT_VER_ADDR jest poprawna wartość: 0x1234. Co jest nie tak? Używam WinAVR z 20060421
Pozdrowienia.