<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><font face="Arial">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.</font></p>
<p><font face="Arial">Děkuji<br>
</font></p>
<pre class="moz-signature" cols="72">Martin Záruba</pre>
<div class="moz-cite-prefix">Dne 18.12.2024 v 14:12 Jirka Mww
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:CAGNMtu14eNFu3-SXZj1VDV+idMhb4cVAfhCKUW4ww4m5aGR0+g@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>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]. </div>
<div>Kam se ta data zapíší záleží na jiné části Modbus zprávy. </div>
<div>
<div dir="ltr" class="gmail_signature"
data-smartmail="gmail_signature">Zdravi<br>
Jirka Sloupenský OK1MWW</div>
</div>
<br>
</div>
<br>
<div class="gmail_quote gmail_quote_container">
<div dir="ltr" class="gmail_attr">st 18. 12. 2024 v 14:09
odesílatel Miroslav Mraz <<a href="mailto:mrazik@volny.cz"
moz-do-not-send="true" class="moz-txt-link-freetext">mrazik@volny.cz</a>>
napsal:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Už
dlouho s AVR nedělám, ale pořád mám nástroje, tak jsem trochu
<br>
experimentoval.<br>
Mějme nějaká data v RAM (const je zde nepodstatné) např.<br>
static const uint8_t RX_Data[] = { 0x90, 0xab, 0xcd, 0xef,
0xab, 0xcd, <br>
0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,};<br>
a funkci<br>
static void test_swap () {<br>
const uint32_t PowerIO = __builtin_bswap32 (((uint32_t
*)(RX_Data + <br>
7))[0]);<br>
printf("0x%08lX\n", PowerIO);<br>
}<br>
Funguje to správně, ale na 8-bitu to není příliš efektivní.
Funkce<br>
static void test_shift () {<br>
uint32_t PowerIO = 0ul;<br>
const unsigned b = 7u, e = b + sizeof(PowerIO);<br>
for (unsigned n=b; n<e; n++) {<br>
PowerIO <<= 8;<br>
PowerIO |= RX_Data [n];<br>
}<br>
printf("0x%08lX\n", PowerIO);<br>
}<br>
funguje stejně a při optimalizaci -Os a pokud jsou data
opravdu <br>
konstantní a překladač vidí jejich hodnoty už v době překladu,
je to <br>
daleko efektivnější. Smyčka se rozbalí do jednotlivých kroků,
posun o 8 <br>
bitů chápe překladač jako přechod na jiný byte, takže to
jednotlivé byty <br>
ze vstupu nasype přesně tam, kam je potřeba a nic víc vlastně
nedělá, <br>
není to potřeba. Lokální proměnné b,e,n se vůbec neprojeví
takže na typu <br>
nezáleží.<br>
<br>
Mrazík<br>
<br>
<br>
On 18. 12. 24 13:26, Pavel Hudeček wrote:<br>
> Nedávno jsem potřeboval posílat ven SN procesoru, udělal
jsem to takhle:<br>
> u64=0ULL;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM5;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM4;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM3;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM2;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM1;<br>
> u64 <<= 8; u64 |= SIGROW.SERNUM0;<br>
> <br>
> Ale vlastně nevím jak je to tam s těma indiánama, možná
to má bejt <br>
> obráceně, tady mi to naštěstí nevadí:-)<br>
> <br>
> PH<br>
> <br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a
href="http://www.HW.cz" rel="noreferrer" target="_blank"
moz-do-not-send="true">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank"
moz-do-not-send="true" class="moz-txt-link-freetext">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list"
rel="noreferrer" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
</body>
</html>