Arduino - 32 bitu promenna ze 4 byte

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


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

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 14:28, Miroslav Mraz wrote:
> Jasně, udělejte si to po svém, já jen chtěl vědět jak pracuje to 
> __builtin...
> Přece jen je rozdíl mezi 32-bit a 8-bit architekturou a jak to bylo 
> řečeno, ten překladač je opravdu dost "kreativní". Pro 32-bit ty 
> vestavěné swapy používají extra instrukce procesoru, pokud je má, 
> jinak sprostě přehazuje byty. Na AVR s přehazováním dělá kouzla, která 
> plně nechápu a ani se o to nebudu snažit. Ale je na tom vidět snaha 
> šetřit RAM.
>
> Mrazík
>
> On 18. 12. 24 14:12, Jirka Mww wrote:
>> Moje data konstantní nejsou, je to obsah MOdbus zprávy ze 
>> Spotprocessoru.  Jediné co je konstantní je poloha těch dat v Modbus 
>> zprávě,  RX[7] až RX[10].
>> Kam se ta data zapíší záleží na jiné části Modbus zprávy.
>> 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



Další informace o konferenci Hw-list