AVR-GCC a pointer na funkci
Petr Tomasek
tomasek@etf.cuni.cz
Středa Leden 2 06:57:43 CET 2008
On Tue, Jan 01, 2008 at 02:06:53PM -0800, Miroslav Sinko wrote:
> Aha, takze beriem spat. GCC to prelozi spravne aj bez pgm_read.
>
> No a teraz k povodnej otazke: ono sa to sprava presne, ako sa ma.
> Nechajme bokom, preco sa optimalizatoru zda, ze cyklus nie je potrebny,
> hlavne je, ze volatile problem riesi. Ibaze nie je volatile, ako
> volatile! Stavim sa, ze ste zapisali:
>
> volatile void (*reply_gen)(void);
>
> Toto ale nie je volatile smernik! Ale smernik na funkciu, ktora vracia
> volatile void, co je nezmysel. Preto tie warningy.
>
> Skuste spravny zapis:
>
> void (* volatile reply_gen)(void);
>
> miro
>
> PS: http://kcomputing.com/answers.html :-)
>
To porad neresi ten problem, ze avr-gcc v kteresi ze sve 4.x verze
je buggy natolik, ze pri "optimalizaci" se vykasle na klicove
slovo "volatile". Me to napr. kod ve tvaru:
PORTx|=(1<<Pxy);
// neco mezi tim
PORTx&=~(1<<Pxy);
"zoptimalizovalo" tak, ze prvni zapis na PORTx uplne vyhodilo! :(
P.T.
--
Petr Tomasek <http://www.etf.cuni.cz/~tomasek>
Jabber: butrus@jabbim.cz
SIP: butrus@ekiga.net
Další informace o konferenci Hw-list