<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">Jen jsem to prolitnul ale tenhle
      zdrojak se asi nechci snazit ani pochopit.</div>
    <div class="moz-cite-prefix">Sel jsem na to jinak, 2 stavove
      automaty a jen s cyklicky volanou obsluhou main, pro inspiraci v
      priloze.</div>
    <div class="moz-cite-prefix">Funguje to uz 2 mesice bez selhani nebo
      restartu na tepelnem cerpadlo.</div>
    <div class="moz-cite-prefix">Blokuje to na max 60us preruseni, tomu
      jsem se chtel vyhnout a pouzit SPI pres DMA (STM32L0), ono by to
      skvele a na pozadi i fungovalo ale kdyby to nekdo zkousel, tak je
      potreba dat na MOSI latch - stav vystupu mezi sekvencemi se mi
      nepodarilo dostat pod kontrolu, je tam v klidu nejaky konec
      posuvneho registru a zalezi to na predchozim obsahu. <br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Dne 25.02.2021 v 0:06 Miroslav Draxal
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:001901d70b01$bab97c70$302c7550$@cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Text bubliny Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.StylE-mailovZprvy17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.TextbublinyChar
        {mso-style-name:"Text bubliny Char";
        mso-style-priority:99;
        mso-style-link:"Text bubliny";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Dobrý večer,<o:p></o:p></p>
        <p class="MsoNormal">Jedná se o XC8 pro microchip.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Mějme několik místních procedur, každá
          procedura v jiném kompilovaném modulu (Main.c, CallBack.c,).
          Tyto procedury se navzájem nemohou ovlivňovat, nejsou v ISR,
          proto kompilátor pro vnitřní „svoje potřeby“ může použít
          adresu proměnné, která je ve všech procedurách stejná. (třeba
          adr. 0x00, kam si ukládá data pro  „svoje potřeby“ )<o:p></o:p></p>
        <p class="MsoNormal">Existuje technika, jak přinutit, aby pro
          jeden konkrétní  modul (CallBack.c) použil jedinečné adresy
          pro „svoje potřeby“.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">C nativně neumí CallBack, ale jde to velice
          jednoduše napsat. Proto píši, že se procedury nemohou
          ovlivňovat a nejsou v ISR. Kompilátor neví, že z přerušení
          skáču třeba doprostřed procedury.<o:p></o:p></p>
        <p class="MsoNormal">Proč to? Používám zpětné volání z ISR.
          V „voidProc(void)“  v Main.c, se používá adr. proměnné 0x00
          pro předání parametru(neovlivním jeho adresu), přijde
          přerušení, z něj zpětným voláním volám proceduru v CallBack.c,
          která taky používá adr. proměnné 0x00 ( také to neovlivním),
          kde se obsah změní, a až se dostanu zpátky z přerušení,  obsah
          paměti je změněn.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Asi to je prasárna. Ale v systému, kde mi
          běží na přerušeních všechno, jakoby paralelně, je to zpětné
          volání fakt dobrá věc. Separované to běží jako z praku, pokud
          to zavedu do systému, začnou se mi hádat proměnné.<o:p></o:p></p>
        <p class="MsoNormal">Zasílám k nahlédnutí. Je to zatím
          neučesané.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></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>
    <p><br>
    </p>
  </body>
</html>