eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaCzy WinAVR radzi sobie z kodem dla ATMega128?Re: Czy WinAVR radzi sobie z kodem dla ATMega128?
  • Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.neostrada.pl!n
    emesis.news.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-m
    ail
    From: "T.M.F." <t...@n...mp.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Czy WinAVR radzi sobie z kodem dla ATMega128?
    Date: Tue, 27 Jan 2009 16:36:45 +0100
    Organization: TP - http://www.tp.pl/
    Lines: 43
    Message-ID: <glna6n$k7n$1@nemesis.news.neostrada.pl>
    References: <glg5ms$o4h$1@inews.gazeta.pl>
    <12qqt5spanttr.19nfq2lnf20v8$.dlg@40tude.net>
    <glkfla$pmo$1@inews.gazeta.pl> <gllk40$g58$1@news.wp.pl>
    <glmitr$1s8$1@inews.gazeta.pl>
    NNTP-Posting-Host: dur240.neoplus.adsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: nemesis.news.neostrada.pl 1233071127 20727 83.22.25.240 (27 Jan 2009
    15:45:27 GMT)
    X-Complaints-To: u...@n...neostrada.pl
    NNTP-Posting-Date: Tue, 27 Jan 2009 15:45:27 +0000 (UTC)
    User-Agent: Thunderbird 2.0.0.18 (Windows/20081105)
    In-Reply-To: <glmitr$1s8$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:555158
    [ ukryj nagłówki ]

    Dariusz Zolna pisze:
    > Adam Dybkowski pisze:
    >> No to pozostaje korzystać z pgm_read_byte_far() i podobnych. Uważaj
    >> też na funkcje typu strcpy_P, printf_P, memcpy_P itd - nie zadziałają
    >> bo trzeba im podać wskaźniki 16- a nie 32-bitowe. Podobnie bez
    >> dodatkowego "obejścia" nie zadziałają wskaźniki na funkcje, używane
    >> np. w tablicach skoków. Ot taka "zaleta" dużej pamięci w procku bądź
    >> co bądź 8/16-bitowym. Przerabiałem to ostatnio w zdwojonej formie
    >> walcząc z jeszcze większym ATmega2561.
    >
    > Tak, już napisałem swoje wersje tych wszystkich funkcji (przynajmniej
    > tych, które używam). Szkoda tylko, że kompilator nie przypomina o tym.

    Nie ma jak. Zobacz jak wyglada definicja tych funkcji. Jedyna mozliwosc
    to wywalanie ostrzezenia przez sama biblioteke przy wywolywaniu ich na
    procesorach z >64kB FLASH. Co zreszta ma maly sens, bo gcc domyslnie
    umieszcza stale na poczatku programu, czyli dopoki one nie przekrocza
    64kB korzystanie z wersji near tych funkcji jest zupelnie ok. Z kolei
    wersje far sa bezpieczne (chociaz nie wiem czy dzialaja na procesorach
    do 64kB FLASH), ale czasochlonniejsze i FLASHochlonniejsze.
    Natomiast jesli korzystales z wersji near, a wskaznik miales
    zadeklarowany prawidlowo jako 32-bitowy to kompilator musial wywalic
    ostrzezenie (chyba, ze je blokujesz). Tak czy siak, winny byles ty :)

    > A właśnie, jak zrobić wskaźniki do funkcji w tablicach? Wprawdzie teraz
    > nie korzystam z tego, ale może się przydać na przyszłość. Dla wskaźników
    > w parametrach funkcji mam zrobione makro (choć też troche upierdliwe w
    > użyciu, bo stringi muszę teraz mieć ponazywane, a nie umieszczone jako
    > PSTR("...") bezpośrednio w wywołaniu funkcji).

    Np. tak:
    const FuncPtr FuncPtrTable[] PROGMEM=
    {f1, f2, f3};

    I wywolanie:
    FPtr=(FuncPtr)pgm_read_word(&FuncPtrTable[funcno]);

    *FPtr();

    BTW. A propos twojego bootloadera. Piszesz, ze jest strasznie dlugi.
    Wiesz, ze w tej sekcji musi byc tylko maly fragment wykonujacy SPM,
    raptem pare bajtow, cala reszta moze byc w normalnej pamieci, co
    ogranicza rozmiar bootloadera.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: