C kerdes
Fuzesi Arnold
arnold.fuzesi.lista at gmail.com
Thu Mar 22 19:56:30 CET 2007
----- Original Message -----
From: "Andras Tantos" <andras at tantosonline.com>
To: <elektro at tesla.hu>
Sent: Thursday, March 22, 2007 7:20 PM
Subject: Re: C kerdes
> Hali!
>
> Sajnos azt kell mondjam a forditonak van igaza, nem neked. A fugveny
Mindig ez van ;) Viszont ez jo, mert tovabbra sem bugos a fordito....viszont
tovabbra sem ertem.
> (ee_checksum) egy uint-et ad vissza, ami gondolom 16-, vagy 32-bites.
> Magat
> a visszateresi erteket is ezen a tipuson szamolod. Azaz a visszateresi
> ertek
> 8-bites szamok 16-, vagy 32-bites osszege lesz. Ezt hasonlitod egy
> (feltehetoen) 8-bitre csonkolt ellenorzo osszeggel az 'if'-ben. Persze,
> hogy
> a ket dolog nem lesz egyenlo. Ha viszont rakenyszerited a forditot az uint
> uchar-ra csonkolasara, akkor mar egyezni fog a dolog, hiszen eldobtad a
> felso biteket.
Viszont akkor ennek sem kellene mukodnie, nem?
uchar temp= ee_fw.checksum;
if(temp!=EE_CHECKSUM(ee_fw)){blabla}
eredeti ami nem muxik:
typedef struct{
blabla
uchar ee_checksum
} FW;
volatile __eeprom FW ee_fw;
if(ee_fw.checksum!=EE_CHECKSUM(ee_fw))
Arnold
>
> ----- Original Message -----
> From: "Fuzesi Arnold" <arnold.fuzesi.lista at gmail.com>
> To: <elektro at tesla.hu>
> Sent: Wednesday, March 21, 2007 2:12 PM
> Subject: C kerdes
>
>
>> full optimalizacio, eredmenye:
>>
>> #define EE_CHECKSUM(srcstruct) ee_checksum( ((uchar __eeprom*)
>> &srcstruct),
>> sizeof(srcstruct)-1)
>>
>> /******************************************************************************/
>> uint ee_checksum(uchar __eeprom* data, uint length)
>> {
>> uint checksum = 0;
>> do{
>> checksum+=(*data++);
>> }
>> while(--length);
>> return checksum;
>> }
>> /******************************************************************************/
>>
>>
>> typedef struct{
>> blabla
>> uchar ee_checksum
>> } FW;
>>
>> volatile __eeprom FW ee_fw;
>>
>> ez nem mukodik:
>>
>> if(ee_fw.checksum!=EE_CHECKSUM(ee_fw)){
>> blabla
>> }
>>
>>
>> ez mukodik:
>> if(ee_fw.checksum!=(uchar)EE_CHECKSUM(ee_fw)){
>> blabla
>> }
>>
>>
>> Ezt most hirtelen nem ertem....vki erti?
>> Most vagy az ee_fw.checksum-ot kellene castolnia magatol uint-re, vagy az
>> ee_checksumot castolni uchar-ra..
>>
>> A.
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>>
>>
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list