AVR-GCC a pointer na funkci

Ondrej leguanolog@seznam.cz
Úterý Leden 1 20:36:04 CET 2008


zkusil bych zmenit inicilaizaci promene na

void (*reply_gen)(void) = rep1; 
z me neznameho duvodu to nekdy pomuze. A to i treba kdyz se zmeni 
int a;
na 
int a = 25; //nebo jine nahodne cislo

OH

PS osobne bych presunul cast smycky rovnou do preruseni - na nejak hrani s ukazately neni AVR delane.



Jan Smrz napsal(a):
> 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.
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

-- 
Jabber: Iguaner@jabber.cz
ICQ: 122712466

---------------------------------------------------
|                                                 |
|       IKORAS - My home-made MP3 player          |
|       http://ikoras.iglu.cz                     |
|                                                 |
---------------------------------------------------




Další informace o konferenci Hw-list