<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:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@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:12.0pt;
        font-family:"Times New Roman","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
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
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-mailovZprvy18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
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]--></head><body lang=CS link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ne neuzavřeli. Jenom pátrám dál. O tom bootloaderovi v examles vím, koukal jsem. Problém je v tom, že tohle přesouvání je všechno „systémové“. Já chci nesystémově podstrčit kompilátoru mnou napsanou obsluhu přerušení.  Kompiler si udělá „systémově“ začátek rutiny přerušení tj, uklidí registry, pak předá řízení do<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> void interrupt low_priority interrupt_low (void)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>a po návratu z funkce přerušení zase systémově obnoví registry. Těch registrů ukládá a obnovuje cca 13, což je pro mě moc. V přerušení používám jenom W reg a potřebuji „fofr“. Nemusím ukládat registry.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Takže řešení je:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>1/ buďto nějak systémově přesvědčit kompilátor, aby místo své obsluhy přerušení použil mou<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>2/ nebo nesystémově použít <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Void MeInterrupt(void)@0x08<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Pokud použuji 2/ v hi-tech 9,80 tak to místo na adresu 0x08 přeloží na 0x00, což je chyba<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Pokud použiji 2/ v xc8, tak se to přeloží OK<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Problém je, že 9,80 mám legálně ve verzi PRO, a pokud použiji XC8, tak tam jedu ve verzi Lite a už se do pice nevejdu. Ten projekt musí být i nadále živý, čili nemohu ho jednorázově přeložit ve zkušební verzi XC8  PRO.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Dnes mě napadlo, že bych využil toho, že funguje <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Void MeReset (void)@0x00<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>#asm<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Goto _picInit<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Nop<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Nop<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Goto _MeHigInterrupt<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>#endasm<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Což funguje, vše se uloží jak má, ale problém je, že zas nevím jak zapsat to _picInit. Je to inicializační rutina procesoru, kde se nuluje RAM atd. To zase dodá kompiler. Adresa počátku rutiny se mění po rekompilaci (přidání dalšího kódu). Nevím jak se na ten pic Init odkázat, aby tomu kompiler rozuměl.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>M.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>  <o:p></o:p></span></p><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"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Hw-list [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Andrej Jancura<br><b>Sent:</b> Monday, March 31, 2014 8:12 PM<br><b>To:</b> HW-news<br><b>Subject:</b> Re: c: hi-tech 9,80, interrupt asm<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><div><div><p class=MsoNormal style='margin-bottom:12.0pt'>Dobry vecer,<o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'>vidim, ze ste uz temu uzavreli, takze to mozem pomaly zbalit aj tu. Ale este by som rad dve poznamky k tejto problematike. Nie je to sice k tomu ako donutit kompilator, aby Vam dal na adresu interruptu Vasu rutinu, ale o tom ako to robil HiTech cisto v C.<o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'>Neviem aku verziu kompilatora mate Vy, ale ja som mal v tej svojej adresar examples, kde bol hotovy bootloader vratane zdrojaku a suboru s pouzitymi prepinacmi pre kompilator, aby relokoval aj interrupt vektor. Mozno Vas to inspiruje.<br><br>Druha moznost ako na to, je pozriet sa na prepinac kompilatora tusim ICD alebo taky nejaky podobny. Ked si ich nechate vypisat, tak Vam vypise vsetky a z tych si vybrat tie, ktore potrebujete. Ja si ich uz nepamatam. Ale bolo to uz v casoch 16F877. Teda peknych par rokov dozadu.<o:p></o:p></p></div><p class=MsoNormal>A.<br> <o:p></o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>2014-03-31 13:13 GMT+02:00 Miroslav Draxal <<a href="mailto:evik@volny.cz" target="_blank">evik@volny.cz</a>>:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Já to pro vyzkoušení udělal podobne , jenom mě zajímalo, jestli není nějaké“volatile“ pro funkce..</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Hw-list [mailto:<a href="mailto:hw-list-bounces@list.hw.cz" target="_blank">hw-list-bounces@list.hw.cz</a>] <b>On Behalf Of </b>Hynek Sladky<br><b>Sent:</b> Monday, March 31, 2014 12:53 PM</span><o:p></o:p></p><div><p class=MsoNormal><br><b>To:</b> HW-news<br><b>Subject:</b> Re: c: hi-tech 9,80, interrupt asm<o:p></o:p></p></div></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span style='font-family:"Helvetica","sans-serif"'>No vidite, uz je to dlouho a mnoho detailu jsem si nevzpomnel... Tohle jsem nasel na konci kodu:-)</span><o:p></o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><br>  do {<br>    ....<br>  } while (1);<br>  // dummy call to prevent removing vectors function by optimizer<br>  vectors ();<br>Samozrejme se to misto nikdy neprojde, takze se funkce nezavola, ale zustane v kodu zachovana.<br><br>Diky za odkaz na PDF. Kdyz jsem psal prvni bootloader, tak zrejme jeste prezentace nebyla k dispozici, nicmene to mam resene dost podobne. Pak to uz fungovalo, tak uz jsem to nemenil :-)<br><br>Hynek Sladky<br><br><o:p></o:p></p></div></div><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dne 31.3.2014 12:30, Miroslav Draxal napsal(a):<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>No a jak řešíte, aby vám překladač neoptimalizoval tu vaší funkci? Udělejme nejjednodušší možnou funkci ve tvaru:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-family:"Helvetica","sans-serif"'>static void vectors (void) @ 4 {<br>#asm<br>  goto 0x804 & 0x7FF<br>#endasm<br>}</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>potom, pokud jí někde v kódu nevoláte, tak ji překladač zoptimalizuje a nepřeloží ji.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>XC8 to skutečně schroupe správně 9.80 nikoli.</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Tohle Vám skutečně chodilo pod 9.83?</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#1F497D'>Jak to dělat správně s bootloaderem po XC8 je tady <a href="http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en558478.pdf" target="_blank">http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en558478.pdf</a></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></blockquote><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><br>_______________________________________________<br>HW-list mailing list  -  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><o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>