<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: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;}
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";
        color:black;}
span.StylE-mailovZprvy17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.StylE-mailovZprvy18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.StylE-mailovZprvy19
        {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";
        color:black;}
.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'>No a jak řešíte, aby vám překladač neoptimalizoval tu vaší funkci? Udělejme nejjednodušší možnou funkci ve tvaru:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Helvetica","sans-serif"'>static void vectors (void) @ 4 {<br>#asm<br>  goto 0x804 & 0x7FF<br>#endasm<br>}</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>potom, pokud jí někde v kódu nevoláte, tak ji překladač zoptimalizuje a nepřeloží ji.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>XC8 to skutečně schroupe správně 9.80 nikoli.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Tohle Vám skutečně chodilo pod 9.83?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><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">http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en558478.pdf</a><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 [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Hynek Sladky<br><b>Sent:</b> Monday, March 31, 2014 12:10 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></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Helvetica","sans-serif"'>Prekladac 9.83 a ted XC8 1.12.<br>Projekty, ve kterych to pouzivam, mam prekladane s offsetem 0x800 - ladim to bez bootloaderu, proto se musi z reset vektoru i interrupt vektoru skocit do ladeneho kodu, kdyz tam bootloader pri ladeni neni. To je take nejspis duvod, proc jsem s tim zatim nemel problem. Ale kdyz jsem hledal nejake reseni, jak napsat aplikaci s podporou bootloaderu, tak jsem taky musel projit mnoho slepych cest, ale prece jen je to uz docela davno.<br>Instrukce goto akceptuje 11-bitovou hodnotu, proto to maskovani - hlavne kvuli tomu, abych si pri pripadne zmene vzpomnel, ze tam nejde napsat rovnou adresa.<br><br>Napada me akorat napsat si zacatek Flash v assembleru, aplikaci posunout a doplnit skoky z reset vektoru a low_interrupt vektoru.<br>Uplne nejlepsi by dle meho bylo napsat si obsluhu high_interruptu v cistem assembleru a nechat na linkeru, aby to spravne slinkoval, ale to jsem v tomto prekladaci jeste nedelal. Respektive nektere slozitejsi veci me rpesvedcily, abych se do toho nepoustel a vysledkem byl vyse zminovany postup.<br><br><br>Hynek Sladky<br><br></span><o:p></o:p></p><div><p class=MsoNormal>Dne 31.3.2014 10:12, Miroslav Draxal napsal(a):<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span style='color:#1F497D'>Co používáte za překladač?</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>Nějak mi nedochází "</span><span style='font-family:"Helvetica","sans-serif"'> goto 0x804 & 0x7FF</span><span style='color:#1F497D'>“k čemu je to dobré?</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>to je přesně ta konstrukce, kterou bych očekával, jenže hi-tech to vyhodí takhle.</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>:0 warning: segment "_vectors_text" (0-5) overlaps segment "reset_vec" (0-3)</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>l.obj: (1343) hexfile data at address 0x0 (0x56) overwritten with 0x80 (warning)</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>a po disis.. to vypadá takhle</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>1             0000      EF80      vectors GOTO 0x300</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>2             0002      F001                     NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>3             0004      0012                     RETURN 0</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>4             0006      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>5             0008      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>6             000A      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>7             000C      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>8             000E      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>9             0010      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>10          0012      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>11          0014      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>12          0016      FFFF                      NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>13          0018      CFD8     interrupt_low     MOVFF STATUS, 0x6B</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>14          001A      F06B                     NOP</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>15          001C      CFE8                     MOVFF WREG, 0x6C</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>Prostě místo na adresu 0x08 to plácne na RESET vektor.  </span><o:p></o:p></p><p class=MsoNormal><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><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 [<a href="mailto:hw-list-bounces@list.hw.cz">mailto:hw-list-bounces@list.hw.cz</a>] <b>On Behalf Of </b>Hynek Sladky<br><b>Sent:</b> Monday, March 31, 2014 7:24 AM<br><b>To:</b> HW-news<br><b>Subject:</b> Re: c: hi-tech 9,80, interrupt asm</span><o:p></o:p></p></div></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-family:"Helvetica","sans-serif"'>Pro PIC16F182x pouzivam napr. tuto konstrukci:<br>static void vectors (void) @ 4 {<br>#asm<br>  movlp 0x08<br>  goto 0x804 & 0x7FF<br>#endasm<br>}<br><br>Ma to tak pouzite v aplikaci s bootloaderem pro premapovani interruptu. Treba to pujde pouzit i pro PIC18...</span><o:p></o:p></p></blockquote></div></body></html>