<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-2"><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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
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;}
pre
        {mso-style-priority:99;
        mso-style-link:"Formátovaný v HTML Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.StylE-mailovZprvy17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.FormtovanvHTMLChar
        {mso-style-name:"Formátovaný v HTML Char";
        mso-style-priority:99;
        mso-style-link:"Formátovaný v HTML";
        font-family:Consolas;
        color:black;}
span.StylE-mailovZprvy20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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]--></head><body bgcolor=white lang=CS link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Nějak jsem vnitřně doufal, že přesně tu „naked“ fukci právě umí to přerušení. No nic. Prostě tuto myšlenku musím opustit. Míra<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Milan B.<br><b>Sent:</b> Monday, February 04, 2013 4:17 PM<br><b>To:</b> hw-list@list.hw.cz<br><b>Subject:</b> Re: zase C -Hi-Tech<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On 2/4/2013 3:15 PM, Miroslav Draxal wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal>Dobrý den,<o:p></o:p></p><p class=MsoNormal>Snažím se deborelizovat projekt, mám ale problém s přerušením. Jak docílit toho, abych všechen kód od SPI v 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 tím. Jde to vůbec? Děkuji ve spolek za reakce. Míra<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p></blockquote><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><br>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 "zliepanie" funkcii sa da riesit (ak to prekladac podporuje) cez "naked" funkcie. Treba sa pozriet, ci prekladac podporuje atribut funkcie "naked" a ake ma obmedzenia. "naked" funkcia nema prolog a epilog.<br><br>Potom je treba zabezpecit, aby linker vsetky taketo "funkcie" zlinkoval do jednej sekcie (atribut "section" 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 "naked" 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.<br><br>-m- <br><br><br><o:p></o:p></span></p><p class=MsoNormal>SPI.c<o:p></o:p></p><p class=MsoNormal>void interrupt low_priority SPIinterrupt (void)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal> if (SSPIE && SSPIF)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> ……<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>a<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>TMR2.c<o:p></o:p></p><p class=MsoNormal>void interrupt low_priority TMR2interrupt (void)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal> if (TMR2IE && TMR2IF)<o:p></o:p></p><p class=MsoNormal> {<o:p></o:p></p><p class=MsoNormal> ….<o:p></o:p></p><p class=MsoNormal> }<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal>--------------------------přeloží to takhle<o:p></o:p></p><p class=MsoNormal>0x0016 – low interrupt vektor<o:p></o:p></p><p class=MsoNormal>uloží reg<o:p></o:p></p><p class=MsoNormal>SPIinterrupt<o:p></o:p></p><p class=MsoNormal>Načte reg<o:p></o:p></p><p class=MsoNormal>0x0090RETFIE<<<<<<<<<<<<<<<o:p></o:p></p><p class=MsoNormal>0x0091uloží reg<o:p></o:p></p><p class=MsoNormal>TMR2interrupt<o:p></o:p></p><p class=MsoNormal>Načte reg<o:p></o:p></p><p class=MsoNormal>0x0150RETFIE<<<<<<<<<<<<<<<<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><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">http://www.eset.cz</a><br><br><br><br><o:p></o:p></span></p><pre>_______________________________________________<o:p></o:p></pre><pre>HW-list mailing list - sponsored by <a href="http://www.HW.cz">www.HW.cz</a><o:p></o:p></pre><pre><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><o:p></o:p></pre><pre><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><o:p></o:p></pre><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><br><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">http://www.eset.cz</a><o:p></o:p></span></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">http://www.eset.cz</A><BR>
</body></html>