Arduino - 32 bitu promenna ze 4 byte

Slavomir Skopalik skopalik na elektlabs.cz
Středa Prosinec 18 22:51:36 CET 2024


Zapomel jsem zminit, jde o Cortex-M0+ jak pisete.

V uvedenem pripadu to necham uz s tim posunem a pristupem po bytech.

Jen jsem to chtel zkusit udelat korektne.

Slavek

Ing. Slavomir Skopalik
Executive Head
Elekt Labs s.r.o.
MASA - Collection and evaluation of data from machines and laboratories
http://eng.elektlabs.com/products-and-services/masa
-----------------------------------------------------------------
Address:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
---------------------------------------------------------------
Mobile: +420 724 207 851
skype:skopaliks
e-mail:skopalik na elektlabs.com
http://www.elektlabs.com

On 18.12.24 15:29, Miroslav Mraz wrote:
> Patrně narážíte na Cortex-M0. Ze zkušenosti mohu říct, že tyto 
> problémy tam opravdu kdysi byly. Současné překladače by to měly mít už 
> vyřešeno. V newlib ntohs vede na __builtin_bswap16 a to zase na 
> instrukci rev16. Ale nelze vyloučit, že nevhodné přetypování může 
> dělat problémy. Asi je jednodušší data nakopírovat memcpy() na správně 
> zarovnanou adresu už před voláním ntoh.
>
> Mrazík
>
> On 18. 12. 24 14:36, Slavomir Skopalik wrote:
>> Jen jedna zajimavost, zkouseli jsme ntoh, ale u ARMu jsme narazili na 
>> to,
>>
>> ze nedokaze cist/zapisovat 16/32 bit z nezarovnane adresy (CPU spadne 
>> do faultu).
>>
>> Takze tam nakonec zutalo tohle (take ModBus):
>>
>> for(uint i = 0; i < Cnt; i++){
>>          uint16_t v = a->Data[Addr + i];
>>          RxTxBuffer[3 + 2*i] = v >> 8;
>>          RxTxBuffer[3 + 2*i + 1] = v;
>>      }
>>
>> Slavek
>>
>>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list