<!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>