<html><body><style> @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}@font-face{font-family:'Cascadia Code SemiBold';panose-1:2 11 6 9 2 0 0 2 0 4}.apply-styles p.-wm-MsoNormal, .apply-styles li.-wm-MsoNormal, .apply-styles div.-wm-MsoNormal{margin:0cm;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles a:link, .apply-styles span.-wm-MsoHyperlink{mso-style-priority:99;color:blue;text-decoration:underline}.apply-styles a:visited, .apply-styles span.-wm-MsoHyperlinkFollowed{mso-style-priority:99;color:purple;text-decoration:underline}.apply-styles p.-wm-MsoAcetate, .apply-styles li.-wm-MsoAcetate, .apply-styles div.-wm-MsoAcetate{mso-style-priority:99;mso-style-link:'Text bubliny Char';margin:0cm;margin-bottom:0.0001pt;font-size:8pt;font-family:'Tahoma','sans-serif'}.apply-styles p.-wm-msonormal, .apply-styles li.-wm-msonormal, .apply-styles div.-wm-msonormal{mso-style-name:-wm-msonormal;mso-margin-top-alt:auto;margin-right:0cm;mso-margin-bottom-alt:auto;margin-left:0cm;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles p.-wm-msoplaintext, .apply-styles li.-wm-msoplaintext, .apply-styles div.-wm-msoplaintext{mso-style-name:-wm-msoplaintext;mso-margin-top-alt:auto;margin-right:0cm;mso-margin-bottom-alt:auto;margin-left:0cm;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles p.-wm-msoacetate, .apply-styles li.-wm-msoacetate, .apply-styles div.-wm-msoacetate{mso-style-name:-wm-msoacetate;mso-margin-top-alt:auto;margin-right:0cm;mso-margin-bottom-alt:auto;margin-left:0cm;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles p.-wm-msochpdefault, .apply-styles li.-wm-msochpdefault, .apply-styles div.-wm-msochpdefault{mso-style-name:-wm-msochpdefault;mso-margin-top-alt:auto;margin-right:0cm;mso-margin-bottom-alt:auto;margin-left:0cm;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles span.-wm-msohyperlink{mso-style-name:-wm-msohyperlink}.apply-styles span.-wm-msohyperlinkfollowed{mso-style-name:-wm-msohyperlinkfollowed}.apply-styles span.-wm-prosttextchar{mso-style-name:-wm-prosttextchar}.apply-styles span.-wm-textbublinychar{mso-style-name:-wm-textbublinychar}.apply-styles span.-wm-style-mailovzprvy21{mso-style-name:-wm-style-mailovzprvy21}.apply-styles p.-wm-msonormal1, .apply-styles li.-wm-msonormal1, .apply-styles div.-wm-msonormal1{mso-style-name:-wm-msonormal1;margin:0cm;margin-bottom:0.0001pt;font-size:11pt;font-family:'Calibri','sans-serif'}.apply-styles span.-wm-msohyperlink1{mso-style-name:-wm-msohyperlink1;mso-style-priority:99;color:blue;text-decoration:underline}.apply-styles span.-wm-msohyperlinkfollowed1{mso-style-name:-wm-msohyperlinkfollowed1;mso-style-priority:99;color:purple;text-decoration:underline}.apply-styles span.-wm-ProsttextChar{mso-style-name:'Prost\fd   text Char';mso-style-priority:99;mso-style-link:'Prost\fd   text';font-family:Consolas}.apply-styles p.-wm-msoplaintext1, .apply-styles li.-wm-msoplaintext1, .apply-styles div.-wm-msoplaintext1{mso-style-name:-wm-msoplaintext1;mso-style-priority:99;mso-style-link:'Prost\fd   text Char';margin:0cm;margin-bottom:0.0001pt;font-size:10.5pt;font-family:Consolas}.apply-styles span.-wm-TextbublinyChar{mso-style-name:'Text bubliny Char';mso-style-priority:99;mso-style-link:'Text bubliny';font-family:'Tahoma','sans-serif'}.apply-styles p.-wm-msoacetate1, .apply-styles li.-wm-msoacetate1, .apply-styles div.-wm-msoacetate1{mso-style-name:-wm-msoacetate1;mso-style-priority:99;mso-style-link:'Text bubliny Char';margin:0cm;margin-bottom:0.0001pt;font-size:8pt;font-family:'Tahoma','sans-serif'}.apply-styles p.-wm-Prosttext, .apply-styles li.-wm-Prosttext, .apply-styles div.-wm-Prosttext{mso-style-name:'Prost\fd   text';mso-style-link:'Prost\fd   text Char';margin:0cm;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman','serif'}.apply-styles span.-wm-TextbublinyChar1{mso-style-name:'Text bubliny Char1';mso-style-priority:99;mso-style-link:'Text bubliny';font-family:'Tahoma','sans-serif'}.apply-styles span.-wm-StylE-mailovZprvy36{mso-style-type:personal;font-family:'Calibri','sans-serif';color:#1F497D}.apply-styles span.-wm-StylE-mailovZprvy37{mso-style-type:personal-reply;font-family:'Calibri','sans-serif';color:#1F497D}.apply-styles .-wm-MsoChpDefault{mso-style-type:export-only;font-size:10pt}@page WordSection1 {size:612pt 792pt;margin:70.85pt 70.85pt 70.85pt 70.85pt}.apply-styles div.-wm-WordSection1{}</style><div>ne ne, tam je důležitý ten komentář na začátku:</div><div><pre>; Add this line in the project properties box, pic-as Global Options -> Additional options: 
;   -Wa,-a -Wl,-pisrVec=4h -Wl,-pSAFVec=1F80h
</pre></div><div><br></div><div>V definici projektu je potřeba přidat linker option, že isrVec=4h Jinak to linker nacpe kam se mu hodí. A kdykoli se neživý předmět může rozhodnout, tak se rozhodne pro nejméně užitečnou variantu.</div><div><br></div><div>To .c vyzkouším večer doma<br></div><div><br></div><aside>---------- Původní e-mail ----------<br>Od: Miroslav Draxal <evik@volny.cz><br>Komu: 'HW-news' <hw-list@list.hw.cz><br>Datum: 3. 4. 2024 15:30:18<br>Předmět: RE: defektní PIC16F18015</aside><br><blockquote data-email="evik@volny.cz"><div class="-wm-WordSection1"><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">Ono není divu, že to nechodí.  Koukněte, jak to přeloží, pokud máte </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">#define KillMe    1</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">#define KillAll     1 V JAKÉKOLI kombinaci</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">Interrupt vektor začíná na adresa 0x004 a on to v tomhle překladu ignoruje. </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">Takže než chyba křemíku chyba překladače. </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D">To </span><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">PSECT….</span><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D"> Je pro mě zlo, jsem rád, že jsem se ho zbavil.</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D"> </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D"> </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  87:    ; --------------- Program Section --------------------------------------</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  88:    </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  89:    </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  90:    PSECT resetVec,class=CODE,delta=2,abs</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  91:    resetVec:</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  92:    PowerUp:</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  93:    </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0000  018B     CLRF INTCON                        94:      clrf     INTCON               ; Disable all interrupts</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0001  018A     CLRF PCLATH                        95:      clrf     PCLATH               ; Tables on page 0</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  96:      ;clrf     STATUS               ; reset flags</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  97:      goto     INIT</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  98:    </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  99:    </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  100:   ;</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  101:   ;**********************************************************************************************************************</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  102:   ; ISR (Interrupt Service Routines)</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  103:   ;**********************************************************************************************************************</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  104:   ;</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  105:   PSECT isrVec,class=CODE,delta=2</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  106:   isr:</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  107:   Interrupt:</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  108:   </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  109:          ;Transmit next bit</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0002  0140     MOVLB 0x0                          110:     movlb 0                ; BANK 0</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0003  1018     BCF LATA, 0x0                      111:     bcf LATA,0</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0004  0000     NOP                                112:     nop</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0005  1418     BSF LATA, 0x0                      113:     bsf LATA,0</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0006  0141     MOVLB 0x1                          114:     BANKSEL           PIR4 ; BANK 14</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0007  128C     BCF PIR0, 0x5                      115:     bcf TMR0IF     ; clear timer overflow?</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">0008  0009     RETFIE                             116:     retfie</span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Cascadia Code SemiBold';color:#1F497D">                                                  117:   </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D"> </span></p><p class="-wm-MsoNormal"><span style="font-size:11pt;font-family:'Calibri','sans-serif';color:#1F497D"> </span></p><div><div style="border:none;border-top:solid #B5C4DF 1pt;padding:3pt 0cm 0cm 0cm"><p class="-wm-MsoNormal"><b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'">From:</span></b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'"> Hw-list [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Jindrich Fucik<br><b>Sent:</b> Wednesday, April 3, 2024 3:00 PM<br><b>To:</b> HW-news<br><b>Subject:</b> RE: defektní PIC16F18015</span></p></div></div><p class="-wm-MsoNormal"> </p><div><p class="-wm-MsoNormal">Ten můj .S - od slova aSsembler</p></div><div><p class="-wm-MsoNormal"> </p></div><div><p class="-wm-MsoNormal">To linkování není úplně přesně. Tím "PSECT resetVec" předepisuji, že se tohle složí na reset vector, což je pro tenhle procesor adresa 0000. Ten program v zásadě nepřipouští dinamické linkování.</p></div><div><p class="-wm-MsoNormal"> </p></div><p class="-wm-MsoNormal">---------- Původní e-mail ----------<br>Od: Miroslav Draxal <evik@volny.cz><br>Komu: 'HW-news' <hw-list@list.hw.cz><br>Datum: 3. 4. 2024 14:57:25<br>Předmět: RE: defektní PIC16F18015<br><br></p><div><p class="-wm-msonormal"><span style="color:#1F497D">Tak teď jsem přeložil ten váš .c</span></p><p class="-wm-msonormal"><span style="color:#1F497D">Koukám na to</span></p><p class="-wm-msonormal"><span style="color:#1F497D">Míra</span></p><p class="-wm-msonormal"><span style="color:#1F497D"> </span></p><div><div style="border:none;border-top:solid #B5C4DF 1pt;padding:3pt 0cm 0cm 0cm"><p class="-wm-msonormal"><b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'">From:</span></b><span style="font-size:10pt;font-family:'Tahoma','sans-serif'"> Hw-list [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Miroslav Draxal<br><b>Sent:</b> Wednesday, April 3, 2024 2:43 PM<br><b>To:</b> 'HW-news'<br><b>Subject:</b> RE: defektní PIC16F18015</span></p></div></div><p class="-wm-msonormal"> </p><p class="-wm-msoplaintext">Je skutečně škoda, že jste neposlal ten projekt, ušetřilo by to dost času. Prostě jsem neviděl jak to přeložilo, do jakých paměťových lokací.</p><p class="-wm-msoplaintext">Překopal jsem si to do C., protože jsem to proste v asm. Nepřeložil.</p><p class="-wm-msoplaintext">Podle všeho je problém v </p><p class="-wm-msoplaintext">PSECT resetVec,class=CODE,delta=2,abs</p><p class="-wm-msoplaintext">resetVec:</p><p class="-wm-msoplaintext">PowerUp:</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">      clrf  INTCON                  ; Disable all interrupts</p><p class="-wm-msoplaintext">TADY  clrf  PCLATH                  ; Tables on page 0</p><p class="-wm-msoplaintext">      ;clrf STATUS                  ; reset flags</p><p class="-wm-msoplaintext">      goto  INIT</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">po přeložení nevíme od jaké adresy startuje program, to je věc překladače, C to přeloží od adresy 0x0807</p><p class="-wm-msoplaintext"><img width="421" height="110" id="-wm-_x0000_i1061" src="cid:image001.png@01DA85DA.597E11D0"></p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Pak projede komplet inicializaci a dojde k adrese 0x0821, kde je GOTO 0x22, ale protože má vynulovaný PCLATH, tak místo aby skočil na adresu 0x0822 tak skočí na nesmyslnou adresu.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"><img width="437" height="65" id="-wm-_x0000_i1062" src="cid:image002.png@01DA85DA.597E11D0"></p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Schválně to zkuste.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Dejte vědět. Míra</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">-----Original Message-----<br>From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Jindrich Fucik<br>Sent: Wednesday, April 3, 2024 1:57 PM<br>To: HW-news<br>Subject: RE: defektní PIC16F18015</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Trochu si myslím, že přeložením to ztratí kouzlo. Spíš pošlu celý projekt, nebo ukázku, jak jej mám vytvořený.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">EQU je direktiva EQUivalent. Tedy jenom říká, že když napíšu TRISA_INI, tak jsem vlastně chtěl napsat 00000000B. Jak tuto hodnotu použiji už se neřeší. Pokud jí přiřadím jako literál, tak zůstane literálem:</p><p class="-wm-msoplaintext">movlw TRISA_INI ; tohle přiřadí do W literál 00000000B</p><p class="-wm-msoplaintext">movwf TRISA ; a tohle pak hodnotu z W do TRISA</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Ano, pokud bych použil TRISA_INI jako referenci, byl by to ukazatel do paměti na pozici 0, ale tak to nedělám.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">V dokumentu "MPLAB_XC8_PIC_Assembler_Users_Guide_50002974.pdf" je popis v kapitole 4.9.16. Případně poznámka v kapitole 4.6.4.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Ono jde o to, že tenhle defekt pozoruji právě na té sadě deseti procesorů co mám doma. Na jiném typu se to neděje a tak mi trvalo strašnou dobu to pochopit. Je to něco, co používám často a pořád to funguje, tak to beru jako fakt. Čili zajímavé by bylo to vyzkoušet na stejném procesoru z jiné série. Třeba na PIC16F15313 žádný problém není.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">---------- Původní e-mail ----------</p><p class="-wm-msoplaintext">Od: Miroslav Draxal <evik@volny.cz></p><p class="-wm-msoplaintext">Komu: 'HW-news' <hw-list@list.hw.cz></p><p class="-wm-msoplaintext">Datum: 3. 4. 2024 11:32:56</p><p class="-wm-msoplaintext">Předmět: RE: defektní PIC16F18015</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Vytvořte úplně nový projekt na C:\</p><p class="-wm-msoplaintext">Hoďte tam ten váš kód a zkompilujte. Pokud to projede, tak to sem hoďte. Bude to mít pár kB. </p><p class="-wm-msoplaintext">Tím eliminujeme nesrovnalosti v nastavení projektu.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Za moment budu mít čas se na to podívat a třeba to nahrát i do jiného PICu.</p><p class="-wm-msoplaintext">ALE!</p><p class="-wm-msoplaintext">Všiml jsem si včera letmo, možná že to má nějaký důvod.</p><p class="-wm-msoplaintext">Pokud používáte </p><p class="-wm-msoplaintext">TRISA_INI equ 00000000B;</p><p class="-wm-msoplaintext">Tak TRISA_INI nemá hodnotu 0x00, ale přiřazujete TRISA_INI  registr v nulté stránce paměti RAM s adresou 0x00</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Takže podle mě </p><p class="-wm-msoplaintext">#define TRISA_INI  00000000B</p><p class="-wm-msoplaintext">Nebo </p><p class="-wm-msoplaintext">TRISA_INI  set d'0'</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">ALE: pokud něco dělám v asm, tak jenom opravuji staré projekty z doby do 2010 a to ještě v MPLAB8.92, možná se pro mplabx něco změnilo.</p><p class="-wm-msoplaintext">Míra</p><p class="-wm-msoplaintext">From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Jindrich Fucik</p><p class="-wm-msoplaintext">Sent: Wednesday, April 3, 2024 10:11 AM</p><p class="-wm-msoplaintext">To: HW-news</p><p class="-wm-msoplaintext">Subject: RE: defektní PIC16F18015</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">používám mplabx verze tuším 6.5. V zásadě jsem nic neměnil proti defaultu, vlastně jen tu definici vektorů, která je napsaná v prvním řádku kódu.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Co píše pic-as? </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Vlastné - není problém se jménem souboru, které obsahuje mezery a mínusko? Pravda je, že v editoru to mám s romantickým náznem default.s</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">---------- Původní e-mail ----------</p><p class="-wm-msoplaintext">Od: Miroslav Draxal <evik@volny.cz></p><p class="-wm-msoplaintext">Komu: 'HW-news' <hw-list@list.hw.cz></p><p class="-wm-msoplaintext">Datum: 2. 4. 2024 21:16:30</p><p class="-wm-msoplaintext">Předmět: RE: defektní PIC16F18015</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Nakopněte mě. V jakém editoru to píšete (MPLABx to defect - config.s otevře) ale nedokážu to asemblovat (pic-as to nějak nebere)</p><p class="-wm-msoplaintext">Míra</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">-----Original Message-----</p><p class="-wm-msoplaintext">From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of Jindrich Fucik</p><p class="-wm-msoplaintext">Sent: Tuesday, April 2, 2024 7:11 PM</p><p class="-wm-msoplaintext">To: hw-list@list.hw.cz</p><p class="-wm-msoplaintext">Subject: Re: defektní PIC16F18015</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Bezva, tak jsem to dotáhl téměř k dokonalosti. Vytvořil jsem kód, který </p><p class="-wm-msoplaintext">je složený převážně z instrukcí "nop" a "#ifdef". Na začátku jsou pak </p><p class="-wm-msoplaintext">dva #define, které umožňují si vybrat, co se stane. Možnosti jsou:</p><p class="-wm-msoplaintext">1) program funguje jak má.</p><p class="-wm-msoplaintext">2) program zamrzne zhruba na 2ms před každým přerušením</p><p class="-wm-msoplaintext">3) program zamrzne úplně</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Ke stažení jako zip i se záznamem z analyzátoru:</p><p class="-wm-msoplaintext">https://www.uschovna.cz/zasilka/OX4JT76LTH6MCBD2-XU7</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Jdu se zeptat na support, co s tím.</p><p class="-wm-msoplaintext"> </p><p class="-wm-msoplaintext">Dne 01.04.2024 v 22:02 Jindrich Fucik napsal(a):</p><p class="-wm-msoplaintext">> Bezva, tohle funguje jak by se dalo očekávat.</p><p class="-wm-msoplaintext">> Jdu hledat, co tohle udělá jinak než já.</p><p class="-wm-msoplaintext">> V příloze pro porovnání výstup ze Saleae. Je hodně podobný tomu ze </p><p class="-wm-msoplaintext">> simulátoru (ne zcela stejný).</p><p class="-wm-msoplaintext">> </p><p class="-wm-msoplaintext">> Jdu hledat, co je tady nastaveno jinak.</p><p class="-wm-msoplaintext">> </p><p class="-wm-msoplaintext">> </p><p class="-wm-msoplaintext">> Dne 01.04.2024 v 21:08 Miroslav Draxal napsal(a):</p><p class="-wm-msoplaintext">>> Zkuste tohle, ověřeno v MPLABx simulátoru a výstup taktéž MPLABx Logic </p><p class="-wm-msoplaintext">>> Analyzer (viz příloha).</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> #include <xc.h></p><p class="-wm-msoplaintext">>> #include <pic16f18015.h></p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> // Configuration bits: selected in the GUI</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //CONFIG1</p><p class="-wm-msoplaintext">>> #pragma config FEXTOSC = ECH // External Oscillator Selection </p><p class="-wm-msoplaintext">>> bits->EC (external clock) above 16 MHz</p><p class="-wm-msoplaintext">>> #pragma config RSTOSC = HFINTOSC_32MHz // Reset Oscillator </p><p class="-wm-msoplaintext">>> Selection bits->HFINTOSC (32 MHz)</p><p class="-wm-msoplaintext">>> #pragma config CLKOUTEN = OFF // Clock Out Enable bit->CLKOUT </p><p class="-wm-msoplaintext">>> function is disabled; i/o or oscillator function on OSC2</p><p class="-wm-msoplaintext">>> #pragma config VDDAR = HI // VDD Range Analog Calibration Selection </p><p class="-wm-msoplaintext">>> bit->Internal analog systems are calibrated for operation between VDD </p><p class="-wm-msoplaintext">>> = 2.3 - 5.5V</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //CONFIG2</p><p class="-wm-msoplaintext">>> #pragma config MCLRE = EXTMCLR // Master Clear Enable bit->If LVP = </p><p class="-wm-msoplaintext">>> 0, MCLR pin is MCLR; If LVP = 1, RA3 pin function is MCLR</p><p class="-wm-msoplaintext">>> #pragma config PWRTS = PWRT_OFF // Power-up Timer Selection </p><p class="-wm-msoplaintext">>> bits->PWRT is disabled</p><p class="-wm-msoplaintext">>> #pragma config WDTE = OFF // WDT Operating Mode bits->WDT disabled; </p><p class="-wm-msoplaintext">>> SEN is ignored</p><p class="-wm-msoplaintext">>> #pragma config BOREN = ON // Brown-out Reset Enable bits->Brown-out </p><p class="-wm-msoplaintext">>> Reset enabled, SBOREN bit is ignored</p><p class="-wm-msoplaintext">>> #pragma config DACAUTOEN = OFF // DAC Buffer Automatic Range Select </p><p class="-wm-msoplaintext">>> Enable bit->DAC Buffer reference range is determined by the REFRNG bit</p><p class="-wm-msoplaintext">>> #pragma config BORV = LO // Brown-out Reset Voltage Selection </p><p class="-wm-msoplaintext">>> bit->Brown-out Reset Voltage (VBOR) set to 1.9V</p><p class="-wm-msoplaintext">>> #pragma config ZCD = OFF // ZCD Disable bit->ZCD module is </p><p class="-wm-msoplaintext">>> disabled; ZCD can be enabled by setting the ZCDSEN bit of ZCDCON</p><p class="-wm-msoplaintext">>> #pragma config PPS1WAY = ON // PPSLOCKED One-Way Set Enable </p><p class="-wm-msoplaintext">>> bit->The PPSLOCKED bit can be cleared and set only once after an </p><p class="-wm-msoplaintext">>> unlocking sequence is executed; once PPSLOCKED is set, all future </p><p class="-wm-msoplaintext">>> changes to PPS registers are prevented</p><p class="-wm-msoplaintext">>> #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable </p><p class="-wm-msoplaintext">>> bit->Stack Overflow or Underflow will cause a reset</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //CONFIG4</p><p class="-wm-msoplaintext">>> #pragma config BBSIZE = BB512 // Boot Block Size Selection </p><p class="-wm-msoplaintext">>> bits->512 words boot block size</p><p class="-wm-msoplaintext">>> #pragma config BBEN = OFF // Boot Block Enable bit->Boot Block </p><p class="-wm-msoplaintext">>> disabled</p><p class="-wm-msoplaintext">>> #pragma config SAFEN = OFF // Storage Area Flash (SAF) Enable </p><p class="-wm-msoplaintext">>> bit->SAF disabled</p><p class="-wm-msoplaintext">>> #pragma config WRTAPP = OFF // Application Block Write Protection </p><p class="-wm-msoplaintext">>> bit->Application Block is NOT write protected</p><p class="-wm-msoplaintext">>> #pragma config WRTB = OFF // Boot Block Write Protection bit->Boot </p><p class="-wm-msoplaintext">>> Block is NOT write protected</p><p class="-wm-msoplaintext">>> #pragma config WRTC = OFF // Configuration Register Write </p><p class="-wm-msoplaintext">>> Protection bit->Configuration Register is NOT write protected</p><p class="-wm-msoplaintext">>> #pragma config WRTD = OFF // Data EEPROM Write Protection bit->Data </p><p class="-wm-msoplaintext">>> EEPROM is NOT write-protected</p><p class="-wm-msoplaintext">>> #pragma config WRTSAF = OFF // Storage Area Flash (SAF) Write </p><p class="-wm-msoplaintext">>> Protection bit->SAF is NOT write protected</p><p class="-wm-msoplaintext">>> #pragma config LVP = ON // Low Voltage Programming Enable bit->Low </p><p class="-wm-msoplaintext">>> Voltage programming enabled. MCLR/Vpp pin function is MCLR. MCLRE </p><p class="-wm-msoplaintext">>> Configuration bit is ignored</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //CONFIG5</p><p class="-wm-msoplaintext">>> #pragma config CP = OFF // Program Flash Memory Code Protection </p><p class="-wm-msoplaintext">>> bit->Program Flash Memory code protection is disabled</p><p class="-wm-msoplaintext">>> #pragma config CPD = OFF // Data EEPROM Code Protection bit->EEPROM </p><p class="-wm-msoplaintext">>> code protection is disabled</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> void main(void) {</p><p class="-wm-msoplaintext">>> // Set the CLOCK CONTROL module to the options selected in the </p><p class="-wm-msoplaintext">>> user interface.</p><p class="-wm-msoplaintext">>> //</p><p class="-wm-msoplaintext">>> OSCCON2 = 0x0;</p><p class="-wm-msoplaintext">>> // SOSCPWR Low power;</p><p class="-wm-msoplaintext">>> OSCCON3 = 0x0;</p><p class="-wm-msoplaintext">>> // HFOEN disabled; MFOEN disabled; LFOEN disabled; SOSCEN </p><p class="-wm-msoplaintext">>> disabled; ADOEN disabled;</p><p class="-wm-msoplaintext">>> OSCEN = 0x0;</p><p class="-wm-msoplaintext">>> // HFFRQ 8_MHz;</p><p class="-wm-msoplaintext">>> OSCFRQ = 0x3;</p><p class="-wm-msoplaintext">>> //</p><p class="-wm-msoplaintext">>> OSCSTAT = 0x0;</p><p class="-wm-msoplaintext">>> // TUN undefined;</p><p class="-wm-msoplaintext">>> OSCTUNE = 0x0;</p><p class="-wm-msoplaintext">>> // ACTEN disabled; ACTUD enabled; ACTLOCK Not locked; ACTORS In </p><p class="-wm-msoplaintext">>> range;</p><p class="-wm-msoplaintext">>> ACTCON = 0x0;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> LATx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> LATA = 0x0;</p><p class="-wm-msoplaintext">>> LATA0 = 1;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> TRISx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> TRISA = 0x34;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> ANSELx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> ANSELA = 0x34;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> WPUx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> WPUA = 0x0;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> ODx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> ODCONA = 0x0;</p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> SLRCONx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> SLRCONA = 0x37;</p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> INLVLx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> INLVLA = 0x37;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> PPS registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> APFCON registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> /**</p><p class="-wm-msoplaintext">>> IOCx registers</p><p class="-wm-msoplaintext">>> */</p><p class="-wm-msoplaintext">>> IOCAP = 0x0;</p><p class="-wm-msoplaintext">>> IOCAN = 0x0;</p><p class="-wm-msoplaintext">>> IOCAF = 0x0;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //TMR0H 119;</p><p class="-wm-msoplaintext">>> TMR0H = 0x77;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //TMR0L 0;</p><p class="-wm-msoplaintext">>> TMR0L = 0x0;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //T0CS FOSC/4; T0CKPS 1:1; T0ASYNC not_synchronised;</p><p class="-wm-msoplaintext">>> T0CON1 = 0x50;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //Clear Interrupt flag before enabling the interrupt</p><p class="-wm-msoplaintext">>> PIR0bits.TMR0IF = 0;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //Enable TMR0 interrupt.</p><p class="-wm-msoplaintext">>> PIE0bits.TMR0IE = 1;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> //T0OUTPS 1:1; T0EN enabled; T016BIT 8-bit;</p><p class="-wm-msoplaintext">>> T0CON0 = 0x80;</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> ei();</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> do {</p><p class="-wm-msoplaintext">>> LATA1 = 1;</p><p class="-wm-msoplaintext">>> NOP();</p><p class="-wm-msoplaintext">>> LATA1 = 0;</p><p class="-wm-msoplaintext">>> } while (1);</p><p class="-wm-msoplaintext">>> return;</p><p class="-wm-msoplaintext">>> }</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> void __interrupt() myHighIsr(void) {</p><p class="-wm-msoplaintext">>> if (TMR0IF == 1) {</p><p class="-wm-msoplaintext">>> TMR0H = 0x77;</p><p class="-wm-msoplaintext">>> TMR0IF = 0;</p><p class="-wm-msoplaintext">>> LATA0 = 0;</p><p class="-wm-msoplaintext">>> NOP();</p><p class="-wm-msoplaintext">>> LATA0 = 1;</p><p class="-wm-msoplaintext">>> }</p><p class="-wm-msoplaintext">>> }</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> -----Original Message-----</p><p class="-wm-msoplaintext">>> From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of </p><p class="-wm-msoplaintext">>> Jindrich Fucik</p><p class="-wm-msoplaintext">>> Sent: Monday, April 1, 2024 7:14 PM</p><p class="-wm-msoplaintext">>> To: hw-list@list.hw.cz</p><p class="-wm-msoplaintext">>> Subject: Re: defektní PIC16F18015</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> Tak to jsem z toho jelen. Vzal jsem nový procesor a chová se stejně.</p><p class="-wm-msoplaintext">>> V příloze je obrázek z analyzátoru.</p><p class="-wm-msoplaintext">>> pochopitelně když program krokuji, tak se chová normálně. Nic </p><p class="-wm-msoplaintext">>> takového, že by přerušení skočilo někam jinam a běžel kus jiného </p><p class="-wm-msoplaintext">>> programu.</p><p class="-wm-msoplaintext">>> </p><p class="-wm-msoplaintext">>> Dne 01.04.2024 v 17:22 Jindrich Fucik napsal(a):</p><p class="-wm-msoplaintext">>>> To není můj případ, start přerušení trvá tuším 3 instrukční cykly,</p><p class="-wm-msoplaintext">>>> procesor jede 8MHz, takže 1,5μs nebo tak něco. Program je velmi</p><p class="-wm-msoplaintext">>>> primitivní, je napsaný v assembleru, abych vyloučil nějakou botu z </p><p class="-wm-msoplaintext">>>> jazyka.</p><p class="-wm-msoplaintext">>>> Nakopíruji sem podstatnou část programu. Nepodstatná nastavuje config:</p><p class="-wm-msoplaintext">>>> vypnutý watchdog, interní oscilátor 8MHz a tak.</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> Program nedělá nic, než že v mainu bliká jedním výstupem a v přerušení</p><p class="-wm-msoplaintext">>>> druhým. přerušení je od časovače (v příkladu Timer 0, ale stejně se</p><p class="-wm-msoplaintext">>>> chová i Timer 2) a je nastaveno na 60 μs.</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> Na analyzátoru je pak velice zřetelné, že proběhne 25 bliknutí RA1,</p><p class="-wm-msoplaintext">>>> pak je těch 350μs mezera a pak jedno bliknutí RA0 a pak hned zase 25x</p><p class="-wm-msoplaintext">>>> RA1 (jasně, ten kód není optimální, je to poslední troska, než jsem to</p><p class="-wm-msoplaintext">>>> zabalil). Podstatné je, že ta díra je větší, než vlastní běh, takže je</p><p class="-wm-msoplaintext">>>> to velmi zřetelné a nemá cenu zjišťovat, jestli je něco ± jednotky</p><p class="-wm-msoplaintext">>>> instrukčních cyklů. Zábavné je, že stejný čas dostanu i při přepnutí</p><p class="-wm-msoplaintext">>>> rychlosti procesoru na 4MHz (tedy díra je asi 350μs, běh se 2x </p><p class="-wm-msoplaintext">>>> prodlouží).</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> -------</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> ; Timer0 management ; used for software serial Tx time ticks -</p><p class="-wm-msoplaintext">>>> 60 micro sec per tick T0CON1_INI equ 0x51 ; T0CS FOSC/4; T0CKPS</p><p class="-wm-msoplaintext">>>> 1:2; T0ASYNC not_synchronised; T0CON0_INI equ 0x80 ; T0OUTPS</p><p class="-wm-msoplaintext">>>> 1:1; T0EN enabled; T016BIT 8-bit; TMR0H_INI equ 0x3B ; in 8 bit</p><p class="-wm-msoplaintext">>>> mode the TMR0H is compared same as</p><p class="-wm-msoplaintext">>>> timer2 0x3B = 59 = LN baud rate</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> PIE0_INI equ 0x20 ; Enable TMR0 interrupt.</p><p class="-wm-msoplaintext">>>> PIE1_INI equ 0x00 ; none used</p><p class="-wm-msoplaintext">>>> PIE2_INI equ 0x00 ; none used</p><p class="-wm-msoplaintext">>>> PIE3_INI equ 0x00 ; none used</p><p class="-wm-msoplaintext">>>> PIE4_INI equ 0x00 ; none used</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> INTC_INI equ 0xC0 ; GIE enable, PIE enable</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> PSECT resetVec,class=CODE,delta=2,abs</p><p class="-wm-msoplaintext">>>> resetVec:</p><p class="-wm-msoplaintext">>>> PowerUp:</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> clrf INTCON ; Disable all interrupts</p><p class="-wm-msoplaintext">>>> clrf PCLATH ; Tables on page 0</p><p class="-wm-msoplaintext">>>> ;clrf STATUS ; reset flags</p><p class="-wm-msoplaintext">>>> goto START</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> PSECT isrVec,class=CODE,delta=2</p><p class="-wm-msoplaintext">>>> isr:</p><p class="-wm-msoplaintext">>>> Interrupt:</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> movlb 0 ; BANK 0</p><p class="-wm-msoplaintext">>>> bsf LATA,0</p><p class="-wm-msoplaintext">>>> nop</p><p class="-wm-msoplaintext">>>> bcf LATA,0</p><p class="-wm-msoplaintext">>>> nop</p><p class="-wm-msoplaintext">>>> bsf LATA,0</p><p class="-wm-msoplaintext">>>> BANKSEL PIR4 ; BANK 14</p><p class="-wm-msoplaintext">>>> bcf TMR0IF ; clear timer overflow</p><p class="-wm-msoplaintext">>>> retfie</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> START:</p><p class="-wm-msoplaintext">>>> (...tady je miliarda přiřazení *_INI do správných registrů ...)</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> movlw INTC_INI ; GIE enable, PEIE enable</p><p class="-wm-msoplaintext">>>> movwf INTCON</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> movlb 0 ; BANK 0</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> testloop:</p><p class="-wm-msoplaintext">>>> bsf LATA,1</p><p class="-wm-msoplaintext">>>> nop</p><p class="-wm-msoplaintext">>>> bcf LATA,1</p><p class="-wm-msoplaintext">>>> goto testloop</p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> </p><p class="-wm-msoplaintext">>>> Dne 01.04.2024 v 13:46 Miroslav Draxal napsal(a):</p><p class="-wm-msoplaintext">>>>> Dobrý den,</p><p class="-wm-msoplaintext">>>>> Pozor na to, PICi si při přerušení ukládají registry soft, ne hw.</p><p class="-wm-msoplaintext">>>>> Kolikrát ta obsluha toho uložení registrů je docela časově náročná.</p><p class="-wm-msoplaintext">>>>> Standardně se ukládá</p><p class="-wm-msoplaintext">>>>> STATUS</p><p class="-wm-msoplaintext">>>>> WREG</p><p class="-wm-msoplaintext">>>>> BSR</p><p class="-wm-msoplaintext">>>>> Pokud se někde v používájí FSRx registry, a v přerušení Se používají</p><p class="-wm-msoplaintext">>>>> také, potom se i ty ukládají</p><p class="-wm-msoplaintext">>>>> FSR1</p><p class="-wm-msoplaintext">>>>> FSR1H</p><p class="-wm-msoplaintext">>>>> FSR2</p><p class="-wm-msoplaintext">>>>> FSR2H</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> A můžou se ukládat i další. Při ukončení přerušení se zase registry</p><p class="-wm-msoplaintext">>>>> obnovují. Tudíž je tam nějaká režie a prodleva, než se přerušení</p><p class="-wm-msoplaintext">>>>> dostane na příslušnou obsluhu. Takže pokud by docházelo k velmi</p><p class="-wm-msoplaintext">>>>> častému přerušení, může se i občas nějaké ztratit.</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> A ještě jedna věc, na kterou se zapomíná.</p><p class="-wm-msoplaintext">>>>> Novější procesory umí ukládat STATUS, WREG, BSR v režimu FAST. Nebudu</p><p class="-wm-msoplaintext">>>>> vypisovat podrobnosti, nakoukněte do *-.pdf konkrétního PICu, jestli</p><p class="-wm-msoplaintext">>>>> umí. Ovšem pozor, pokud odlaďujete program třeba s ICDx, potom tyto</p><p class="-wm-msoplaintext">>>>> FAST rutiny využívá ICDx. Pokud pak natvrdo pustíte program v</p><p class="-wm-msoplaintext">>>>> samotném PICu, tyto rutiny většinou potom používá přerušení s vysokou</p><p class="-wm-msoplaintext">>>>> prioritou. Takže časování je následně o něco rychlejší než při ladění</p><p class="-wm-msoplaintext">>>>> HW prostředky.</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> Nahoďte při jaké příležitosti se seká, jestli je to při periodickém</p><p class="-wm-msoplaintext">>>>> přerušení (např. od TMRx), nebo něčeho externího. Třeba nás něco </p><p class="-wm-msoplaintext">>>>> napadne.</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> Míra</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> -----Original Message-----</p><p class="-wm-msoplaintext">>>>> From: Hw-list [mailto:hw-list-bounces@list.hw.cz] On Behalf Of</p><p class="-wm-msoplaintext">>>>> Jindrich Fucik</p><p class="-wm-msoplaintext">>>>> Sent: Monday, April 1, 2024 12:09 PM</p><p class="-wm-msoplaintext">>>>> To: HW-news</p><p class="-wm-msoplaintext">>>>> Subject: defektní PIC16F18015</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> Ahoj,</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> občas si tu někdo hraje s těmito typy procesorů. Narazil jsem na</p><p class="-wm-msoplaintext">>>>> jeden defektní kus. Bohužel to byl ten, kterej jsem si odvezl na</p><p class="-wm-msoplaintext">>>>> velikonoce a nemám tu náhradu.</p><p class="-wm-msoplaintext">>>>> Projevuje se tak, že při vyvolání přerušení se procesor na cca 350 μs</p><p class="-wm-msoplaintext">>>>> zasekne. jak to tak bývá, tak mi trvalo dva dny zjistit, co se děje a</p><p class="-wm-msoplaintext">>>>> proč se nemohu dopočítat času nějaké události.</p><p class="-wm-msoplaintext">>>>> </p><p class="-wm-msoplaintext">>>>> Tak třeba se někomu tato informace bude hodit. Nebo možná někdo ví o</p><p class="-wm-msoplaintext">>>>> něčem, co jsem špatně nastavil a může mi to říci.</p><p class="-wm-msoplaintext">_______________________________________________</p><p class="-wm-msoplaintext">HW-list mailing list  -  sponsored by www.HW.cz</p><p class="-wm-msoplaintext">Hw-list@list.hw.cz</p><p class="-wm-msoplaintext">http://list.hw.cz/mailman/listinfo/hw-list</p></div><p class="-wm-MsoNormal">_______________________________________________ <br>HW-list mailing list - sponsored by www.HW.cz <br>Hw-list@list.hw.cz <br>http://list.hw.cz/mailman/listinfo/hw-list </p></div>_______________________________________________
<br>HW-list mailing list  -  sponsored by www.HW.cz
<br>Hw-list@list.hw.cz
<br>http://list.hw.cz/mailman/listinfo/hw-list
<br></blockquote></body></html>