IMHO u procesoru, kteryma spolecny vektor preruseni pro defakto vsechny zdroje a je nutne kontrolovat flagy, neni ta rychlost az zas tak to .... :)<br>ja to mam debordelizovane tim zpusobem, co tu byl uz popsan - v ISR fci volani funkce obsluhy preruseni danou periferii. Pak samozrejme jeste vyvstavaji otazky jesli kontrolu flagu dane periferie dat do hlavni ISR nebo schovat do funkci jednotlivych periferii. Opet to bude mit dopad na rychlost vykonani preruseni, zalezi jak moc uhledne to kdo chce a kolik je ochoten obetovat strojoveho casu :)<br>
<br clear="all"><div>Ataman<br><a href="http://www.hysteria-metal.cz" target="_blank">http://www.hysteria-metal.cz</a><span style="padding-right:16px;width:16px;height:16px"></span><br></div>
<br><br><div class="gmail_quote">2013/2/4 Milan B. <span dir="ltr">&lt;<a href="mailto:milan@bastl.sk" target="_blank">milan@bastl.sk</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div text="#000000" bgcolor="#FFFFFF"><div class="im">
    <div>On 2/4/2013 3:15 PM, Miroslav Draxal
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      
      
      <div>
        <p class="MsoNormal">Dobrý den,<u></u><u></u></p>
        <p class="MsoNormal">Snažím se deborelizovat projekt, mám ale
          problém s&nbsp;přerušením. Jak docílit toho, abych všechen kód od
          SPI v&nbsp;jednom souboru včetně přerušení. To stejné např. pro
          TMR2. Pokud to napíši takhle (viz dole) tak to přeloží za
          sebou, ale jako dvě low přerušení, a na to druhé se nedostane.
          RETFIE je již za přerušením od SPI. Koukám do dokumentace, a
          nějak nemohu najít co s&nbsp;tím. Jde to vůbec? Děkuji ve spolek za
          reakce. Míra<u></u><u></u></p>
        <p class="MsoNormal"><u></u>&nbsp;<u></u></p>
      </div>
    </blockquote>
    <br></div>
    Snad som pochopil, o co ide...<br>
    <br>
    Nepoznam dany prekladac, tak naznacim vseobecnu cestu:<br>
    <br>
    Kedze su to dve samostatne funkcie, tak su kompletne aj s prologom,
    a epilogom (vratane navratu), tak jednoduche riesenie nie je,
    kompilator - a uz vobec nie linker - nema ako vediet, ze ma nejaky
    kusok funkcie vynechat.<br>
    <br>
    Taketo &quot;zliepanie&quot; funkcii sa da riesit (ak to prekladac podporuje)&nbsp;
    cez &quot;naked&quot; funkcie. Treba sa pozriet, ci prekladac podporuje
    atribut funkcie &quot;naked&quot; a ake ma obmedzenia. &quot;naked&quot; funkcia nema
    prolog a epilog.<br>
    <br>
    Potom je treba zabezpecit, aby linker vsetky taketo &quot;funkcie&quot;
    zlinkoval do jednej sekcie (atribut &quot;section&quot; alebo tak nejako) v
    definovanom poradi - aby boli funkcie za sebou (a vykonavanie
    prechadzalo z jednej do druhej)<br>
    <br>
    Potom treba na zaciatok takejto sekcie natlacit vstupny bod pre
    prerusenie a prolog - ulozenie registrov a na koniec takejto sekcie
    epilog - obnovenie registrov a navrat z prerusenia - oboje najlepsie
    v ASM (dalsie dve male &quot;naked&quot; funkcie)<br>
    <br>
    Myslim, ze akekolvek riesenie je lepsie ako snaha pozliepat viac
    funkcii do jednej. Napriklad ekvivalentnym riesenim (zlinkuje sa
    samo) moze byt dispecerska tabulka, do ktorej sa pri linkovani
    funkcii prida smernik na funkciu a samotna prerusovacia rutina iba
    prebehne tuto tabulku a zavola vsetky funkcie.<span class="HOEnZb"><font color="#888888"><br>
    <br>
    -m- <br>
    <br>
    </font></span><blockquote type="cite"><div class="im">
      <div>
        <p class="MsoNormal">SPI.c<u></u><u></u></p>
        <p class="MsoNormal">void interrupt low_priority SPIinterrupt
          (void)<u></u><u></u></p>
        <p class="MsoNormal">{<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; if (SSPIE &amp;&amp; SSPIF)<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; {<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; &hellip;&hellip;<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; }<u></u><u></u></p>
        <p class="MsoNormal">}<u></u><u></u></p>
        <p class="MsoNormal"><u></u>&nbsp;<u></u></p>
        <p class="MsoNormal">a<u></u><u></u></p>
        <p class="MsoNormal"><u></u>&nbsp;<u></u></p>
        <p class="MsoNormal">TMR2.c<u></u><u></u></p>
        <p class="MsoNormal">void interrupt low_priority TMR2interrupt
          (void)<u></u><u></u></p>
        <p class="MsoNormal">{<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; if (TMR2IE &amp;&amp; TMR2IF)<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; {<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp; &hellip;.<u></u><u></u></p>
        <p class="MsoNormal">&nbsp;&nbsp;&nbsp; }<u></u><u></u></p>
        <p class="MsoNormal">}<u></u><u></u></p>
        <p class="MsoNormal">--------------------------přeloží to takhle<u></u><u></u></p>
        <p class="MsoNormal">0x0016 &ndash; low interrupt vektor<u></u><u></u></p>
        <p class="MsoNormal">uloží reg<u></u><u></u></p>
        <p class="MsoNormal">SPIinterrupt<u></u><u></u></p>
        <p class="MsoNormal">Načte reg<u></u><u></u></p>
        <p class="MsoNormal">0x0090RETFIE&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<u></u><u></u></p>
        <p class="MsoNormal">0x0091uloží reg<u></u><u></u></p>
        <p class="MsoNormal">TMR2interrupt<u></u><u></u></p>
        <p class="MsoNormal">Načte reg<u></u><u></u></p>
        <p class="MsoNormal">0x0150RETFIE&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<u></u><u></u></p>
        <p class="MsoNormal"><u></u>&nbsp;<u></u></p>
      </div>
      <br>
      <br>
      __________ Informace od ESET NOD32 Antivirus, verze databaze 7968
      (20130204) __________<br>
      <br>
      Tuto zpravu proveril ESET NOD32 Antivirus.<br>
      <br>
      <a href="http://www.eset.cz" target="_blank">http://www.eset.cz</a><br>
      <br>
      <fieldset></fieldset>
      <br>
      </div><div class="im"><pre>_______________________________________________
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </div></blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
HW-list mailing list &nbsp;- &nbsp;sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
<br></blockquote></div><br>