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