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