AVR-GCC a pointer na funkci

Miroslav Sinko sinkomiro@rocketmail.com
Úterý Leden 1 22:09:36 CET 2008


Funkcie lezia vo flash. Aby bolo priradenie adresy funkcie korektne,
musite minimalne pouzit pgm_read_word.

Skusim sa s tym pohrat, este sa ozvem.

miro


--- Jan Smrz <jan.smrz@volny.cz> wrote:

> Zdravim a preji vseho nejlepsiho.
> 
> Mam tady kousek kodu a potreboval bych poradit s avr-gcc. Prikladam
> silne ocesany fragment kodu. V podstate by se behem preruseni mela
> volat
> rutina rep1 nebo rep2 v zavislosti na portu B ctenem v hlavni smycce.
> Problem je ten, ze pri zapnute optimalizaci se prirazeni do promenne
> rep_gen zcela vynecha a ja vubec nechapu proc.
> 
> Konkretne kod:
> 
>     for (;;)
>     {
>        if (PINB & 0x01)
>          reply_gen = rep1;
>        else
>          reply_gen = rep2;
> 
>     }
> 
> se prelozi takto:
> 
>    c8:    86 b3           in    r24, 0x16    ; 22
>    ca:    fe cf           rjmp    .-4          ; 0xc8 <main+0x1c>
> 
> 
> Nadefinovani reply_gen jako "volatile void (*reply_gen)(void)" 
> vygeneruje spoustu varovani o nekompatibilite typu a stale je v kodu 
> vynecha. Tak nevim.
> 
> Kompletni soubory jsou v priloze.
> 
> Dekuji,
> 
> J.S.
> 
> 


      ____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 



Další informace o konferenci Hw-list