Arduino - 32 bitu promenna ze 4 byte

Martin Záruba swz na volny.cz
Středa Prosinec 18 17:18:45 CET 2024


Dík. Mimo spotových cen a kurzu, umí to ještě něco? Pořád váhám, zda to 
koupit nebo si to napsat sám. Jen toto je docela málo, to by nebylo tak 
těžké napsat v Lazarusu (Pascal).

Martin Záruba

Dne 18.12.2024 v 15:42 Jirka Mww napsal(a):
> Umím že Spotprocesoru dostat okamžitě spotove ceny v euru, platny kurz 
> euro/ czk, umím napsat nějaká ta jejich makra a umím vyčítat data z 
> mého měniče goodwe. Psát do měniče jsem si zatím netroufl, ale popis 
> registru měniče i pro zápis mám.  Asi to ale nebude potřeba, měnič 
> nastavím mobilní aplikaci. Od 1 1 2025 přecházíme na spot, tak během 
> Vanoc všechny ty dílčí poznatky zkombinuju a uvidíme
>
> Dne st 18. 12. 2024 14:28 uživatel Martin Záruba <swz na volny.cz> napsal:
>
>     Jak jste dopadl pokud jde o data ze SpotProcessoru. Původně jsem
>     něco takového chtěl napsat jako podprogram do našeho serveru, ale
>     je to fuška a pokud to dává rozumné výsledky, nemá cenu to
>     programovat.
>
>     Děkuji
>
>     Martin Záruba
>
>     Dne 18.12.2024 v 14:12 Jirka Mww napsal(a):
>>     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
>>
>>
>>     st 18. 12. 2024 v 14:09 odesílatel Miroslav Mraz
>>     <mrazik na volny.cz> napsal:
>>
>>         Už dlouho s AVR nedělám, ale pořád mám nástroje, tak jsem trochu
>>         experimentoval.
>>         Mějme nějaká data v RAM (const je zde nepodstatné) např.
>>         static const uint8_t RX_Data[] = { 0x90, 0xab, 0xcd, 0xef,
>>         0xab, 0xcd,
>>         0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,};
>>         a funkci
>>         static void test_swap () {
>>            const uint32_t PowerIO = __builtin_bswap32 (((uint32_t
>>         *)(RX_Data +
>>         7))[0]);
>>            printf("0x%08lX\n", PowerIO);
>>         }
>>         Funguje to správně, ale na 8-bitu to není příliš efektivní.
>>         Funkce
>>         static void test_shift () {
>>            uint32_t PowerIO = 0ul;
>>            const unsigned b = 7u, e = b + sizeof(PowerIO);
>>            for (unsigned n=b; n<e; n++) {
>>              PowerIO <<= 8;
>>              PowerIO  |= RX_Data [n];
>>            }
>>            printf("0x%08lX\n", PowerIO);
>>         }
>>         funguje stejně a při optimalizaci -Os a pokud jsou data opravdu
>>         konstantní a překladač vidí jejich hodnoty už v době
>>         překladu, je to
>>         daleko efektivnější. Smyčka se rozbalí do jednotlivých kroků,
>>         posun o 8
>>         bitů chápe překladač jako přechod na jiný byte, takže to
>>         jednotlivé byty
>>         ze vstupu nasype přesně tam, kam je potřeba a nic víc vlastně
>>         nedělá,
>>         není to potřeba. Lokální proměnné b,e,n se vůbec neprojeví
>>         takže na typu
>>         nezáleží.
>>
>>         Mrazík
>>
>>
>>         On 18. 12. 24 13:26, Pavel Hudeček wrote:
>>         > Nedávno jsem potřeboval posílat ven SN procesoru, udělal
>>         jsem to takhle:
>>         >                  u64=0ULL;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM5;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM4;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM3;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM2;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM1;
>>         >                  u64 <<= 8; u64 |= SIGROW.SERNUM0;
>>         >
>>         > Ale vlastně nevím jak je to tam s těma indiánama, možná to
>>         má bejt
>>         > obráceně, tady mi to naštěstí nevadí:-)
>>         >
>>         > PH
>>         >
>>         _______________________________________________
>>         HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         Hw-list na list.hw.cz
>>         http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>>     _______________________________________________
>>     HW-list mailing list  -  sponsored bywww.HW.cz  <http://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.cz <http://www.HW.cz>
>     Hw-list na list.hw.cz
>     http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored bywww.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/20241218/8cc55128/attachment.htm>


Další informace o konferenci Hw-list