AVR-GCC a pointer na funkci

Jan Smrz jan.smrz@volny.cz
Úterý Leden 1 19:11:06 CET 2008


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.



------------- další část ---------------
An embedded and charset-unspecified text was scrubbed...
Name: main.c
Url: http://list.hw.cz/pipermail/hw-list/attachments/20080101/94b45d5b/attachment.txt 
------------- další část ---------------
An embedded and charset-unspecified text was scrubbed...
Name: main.lss
Url: http://list.hw.cz/pipermail/hw-list/attachments/20080101/94b45d5b/attachment-0001.txt 


Další informace o konferenci Hw-list