Arduino - 32 bitu promenna ze 4 byte
Jirka Mww
jirka.mww na gmail.com
Středa Prosinec 18 15:42:18 CET 2024
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
>> 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/20241218/242ea08e/attachment.htm>
Další informace o konferenci Hw-list