AVR-GCC + tablica

Jul 22, 2004 3 Replies

Witam, niedawno przesiadlem sie z asm na c ... i jak to bywa napotykam na male problemy. Kod pisze na mega8515. Program ma za zadanie odebranie roznej dlugosci dancyh (16-254 B) interfejsem szeregowym, obrobka i odeslanie .. W programie zdefiniowalem tablice unsigned char packet[255];



Po odebraniu ramiki zaczynam liczyc sume kontrolna pakietu i odsylam go. Suma jednak sie nie zgadza , poniewaz ramka w czasie liczenia sumy jest modyfikowana(nie przeze mnie) - mam wrazenie ze kompilator w mojej ramce umiescil stos.



Czy jest to mozliwe ? Czy powinienem uzyc innego sposobu zarezerwowania tych 255 bajtow w RAM'ie dla mojej ramki ?



Dodam ze wszystkie przerwania wylaczone, dziala tylko funkcja liczaca sume.


Dzieki za poswiecenie czasu :)


Mariusz


Pode¶lij mo¿e trochê kodu. Bêdzie wtedy mo¿na powiedzieæ co¶ wiêcej. Mi siê nigdy nie zdarzy³o ¿eby kompilator robi³ co¶ takiego o co go podejrzewasz.

U¿ytkownik "Mariusz" snipped-for-privacy@wmc.com.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@newsgate.onet.pl...

Możliwe, ale jednak mało prawdopodobne ramu jest prawie dwa razy więcej niż potrzeba. Zobacz zresztą ile go naprawdę idzie.

Jezeli to jest zmienna globalna (albo statyczna funkcji) to wszystko powinno byc ok. Ale jezeli to jest zmienna lokalna jakiejs funkcji ( umieszczana na stosie)- to po wyjsciu z tej funkcji bedzie tam nie wiadomo co czyli smieci !

jfk

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required