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