codevision - problem s pointery
GT5
gt5@seznam.cz
Středa Červenec 5 13:45:53 CEST 2006
Diky za odpovedi. Tu prvni variantu s celociselnym delenim bohuzel
zavrhuji, potrebuji to provest behem par instrukci a ne cekat na deleni
:). Je dost mozne ze jazyk CodeVision C plne neodpovida specifikacim C.
Coz mi neprimo potvrdil i autor po mailu.
(zapomnel jsem podotknout ze program byl pro Atmega32 , memory model :
Small )
Vyzkousim jeste "spravnejsi" pretypovani :
ptrL = (unsigned char*)&addr;
Jinak co se tyce dalsich BUG, napriklad problem s integer operacemi.
uvedu priklad
unsigned int cislo;
cislo = 1234;
cislo &= 0b 0000111111111111; //0x0FFF
//cislo by nyni melo byt 1234, jenze neni. je 0x0000
Zajimava zaludnost se taky skryva v adresovani poli. Dle manualu by pole mohlo byt az s 16bit indexem (unsig.int).
Nekdy to funguje, jindy ne. To je ale problem v jinem mem programu.
Opet uvadim jen priklad a jde mi o to zda promenna i jakozto index pole se ma nejak pretypovat nebo ne. Standartni C jazyk nic takoveho nevyzaduje, ani CAVR to v manualu nema.
unsigned char pole[511];
unsigned int i;
for (i=0; i<512; i++) pole[i]=0xFA;
BTW. mate nekdo vyssi verzi nez CAVR 1.23.6a (standart) ?
LP.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20060705/09573bee/attachment.htm
Další informace o konferenci Hw-list