Arduino - 32 bitu promenna ze 4 byte
Jirka Mww
jirka.mww na gmail.com
Neděle Prosinec 15 18:53:33 CET 2024
Díky všem za rady, ona ta řešení mají každé nějakou výhodu a nevýhodu v
celkovém konceptu. Ještě si s ťím pohraju a nějaký způsob vyberu
Dne ne 15. 12. 2024 18:19 uživatel Jaroslav Buchta <
jaroslav.buchta na hascomp.cz> napsal:
> A jak vypada preklad do assembleru, pokud je videt?
> PowerIO = ((uint32_t)RX_Data[7] <<24 ) | ((uint32_t)RX_Data[8] <<16 ) | ((
> uint32_t)RX_Data[9] <<8 ) | ((uint32_t)RX_Data[10] <<0 );
> Ale je mozne, ze se to prelozi uplne stejne. Uz nevim u ceho, ale kdyz
> jsem to kdysi zkoumal, prekladac to pochopil a nahazel byty rovnou na
> prislusna mista. Ted uz takove detaily neresim, at si to prelozi jak chce s
> dnesnimi vykony a velikosti pameti.
>
> Ja bych to spis udelal takhle:
>
> Dne 15.12.2024 v 17:29 Jirka Mww napsal(a):
>
> Vypadá to, že to union by mohlo fungovat, nenapadlo mě to, ještě jsem to
> nikdy nepoužil.
> díky za rady.
>
> Zdravi
> Jirka Sloupenský OK1MWW
>
>
> ne 15. 12. 2024 v 17:23 odesílatel Jirka Mww <jirka.mww na gmail.com> napsal:
>
>> To co funguje je tohle :
>>
>> PowerIO = (((((RX_Data[7] <<8 ) + RX_Data[8]) <<8) + RX_Data[9]) << 8) +
>> RX_Data[10];
>> to od pana Lockera nefunguje, překladačem to projde, ale dává to
>> nesmyslně vysoké číslo.
>> Zdravi
>> Jirka Sloupenský OK1MWW
>>
>>
>> ne 15. 12. 2024 v 17:18 odesílatel Pavel Hudeček <edizon na seznam.cz>
>> napsal:
>>
>>> A pokud je to opačně, tak ten long dát do unionu s polem bajtů a
>>> nakopírovat po jednom ve správném pořadí.
>>>
>>> Přesnější rady by mohly být, kdyby byl k dispozici ten kód co fungoval a
>>> ten co nefungoval. Možná tem jenom někde chyběl &, možná tam indiáni
>>> bojujou.
>>>
>>> PH
>>>
>>>
>>> Dne 15.12.2024 v 16:59 Martin Locker napsal(a):
>>>
>>> Za předpokladu, že je to 8-bitové arduino a data jsou little endian, tak
>>> třeba takto:
>>> long x;
>>> memcpy(&x, &RX[7], 4);
>>> nebo
>>> long x = *((long*)&RX[7]);
>>>
>>> Martin Locker
>>>
>>>
>>> ----- Původní zpráva -----
>>> ------------------------------
>>> Odesilatel: Jirka Mww (jirka.mww na gmail.com)
>>> Datum: 15/12/2024 16:22
>>> Příjemce: HW konference (hw-list na list.hw.cz)
>>> Předmět: Arduino - 32 bitu promenna ze 4 byte
>>>
>>> dobr7 den,
>>>
>>> zase bych potreboval poradit : Mam 4 byte v poli RX[7] az RX[10]
>>> (prijata modbus zprava)
>>> a potrebuji z nich udelat 32 bit proměnnou (log int). Postupne
>>> nacitani a posuny o 8 bitu do leva mi funguje, ale radeji bych to nejak
>>> prekopiroval rovnou, kvuli rychlosti. Zkousel jsem pouzit memcpy , ale asi
>>> to delam blbe, muzete mi dat nejaky tip , jak to udelat ? V assembleru
>>> bych to umel ((::
>>>
>>> Zdravi
>>> Jirka Sloupenský OK1MWW
>>> ------------------------------
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20241215/58038804/attachment.htm>
Další informace o konferenci Hw-list