C kerdes

Fuzesi Arnold arnold.fuzesi.lista at gmail.com
Thu Mar 22 20:06:15 CET 2007


Fenét, teljesen lenulláztam az agyam...tiszta hülye vagyok :-/

Szal errol van szó, h ez muxik...ez meg teljesen ertheto is.

> uchar temp= EE_CHECKSUM(ee_fw);
> if(temp!=ee_fw.checksum){blabla}

Jó, oké, minden világos... (és mennyire egyértelmu így utolag...és mennyire 
alap...jóég... )

Megyek nyákot tervezni...sw-bol túlcsordultam az elmúlt hetekben...most kell 
abbahagyni :)

A.
----- Original Message ----- 
From: "Fuzesi Arnold" <arnold.fuzesi.lista at gmail.com>
To: <elektro at tesla.hu>
Sent: Thursday, March 22, 2007 7:56 PM
Subject: Re: C kerdes


>
> ----- 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]
>
> -----------------------------------------
>          elektro[-flame|-etc] 



More information about the Elektro mailing list