WinAVR, boot_page_write, pgm_read_word_far

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.

Reply to
lufcadio.WYTNIJ
Loading thread data ...

snipped-for-privacy@gazeta.pl pisze:

Polecam dodanie garści spacji bo ciężko się czyta tak ściśnięty kod. To nie IOCCC!

formatting link
drugiej strony, łatwo też przesadzić w drugą stronę:
formatting link

Reply to
Adam Dybkowski

Użytkownik Adam Dybkowski napisał:

Oj Kolego Adamie bez przesady ;-) Przecież to tylko kilka linii na krzyż. Miałem podobny problem z bootloaderem na ATmega128. Pisałem własne funkcje do obsługi flasza, bo te w WinAVR miały błąd (a w każdym razie zachowywały się dziwnie. O ile się nie mylę to boot_page_fill robiło mi jakieś psikusy. Postaram sie dzisiaj sprawdzić i dam znać.

Pozdrawiam Grzegorz

Reply to
Grzegorz Kurczyk

Ja właśnie używam ATmega128.

Pozdrowienia, Jack

Grzegorz Kurczyk snipped-for-privacy@control.slupsk.pl> napisał(a):

Reply to
lufcadio

Problem się rozwiązał, należało na koniec dodać: boot_rww_enable();

Pozdrowienia.

snipped-for-privacy@gazeta.pl napisał(a):

Reply to
lufcadio

W artykule <fem5b2$ks9$ snipped-for-privacy@atlantis.news.tpi.pl> Adam Dybkowski napisal(a):

W przypadkach niepatologicznych pomaga indent.

Jest w WINAVR; dokumentacja np. tutaj:

formatting link
Przykładowe formatowanie (nie ukrywam, że dobrane zgodnie z updobaniami): indent -kr -i3 -bl -bli0 -npcs -nsaf -nsai -nsaw -prs -nce -nut -sob

Groza ;)

Reply to
JS

JS pisze:

O jak brzydko przy takich ustawieniach dodaje spacje w prototypach funkcji, ble! Oto kawałki testu na moim kodzie: void delayus( uint16_t t ) Zdecydowanie wolę taką formę: void delayus (uint16_t t)

Podobnie zresztą traktuje nawiasy w innych miejscach: if( t < 50 ) A ja piszę raczej tak: if (t < 50)

Największą przesadą tych ustawień jest jednak wg mnie dodawanie spacji w pustej liście argumentów wywołania funkcji oraz wsadzanie spacji robiących wcięcia na początku linii: idlenow( );

Idę dopracować zestaw opcji dla indenta aby "lubił" mój styl pisania. :) W każdym razie fajne narzędzie, przyda się.

Reply to
Adam Dybkowski

W artykule <fep0nq$rgm$ snipped-for-privacy@nemesis.news.tpi.pl> Adam Dybkowski napisal(a):

^^ To faktycznie przykre i chyba nie ma stosownej opcji na wyłączenie spacji akurat w tym kontekście :(

Reply to
JS

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.