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