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-0004.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-0005.txt
Další informace o konferenci Hw-list