<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=utf-8"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
/* 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.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-mailovZprvy17
{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;
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="2050" />
</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'>Dobrý den,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Já si to naklikám v CodeConfigurátoru a pak si to nastavení zkopírovat k sobě do projektu. U nových projektů už používám ten formát mnoha souborů, je to docela přehledné a je tam v poznámkách každý řádek dě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'><img width=921 height=506 id="obrázek_x0020_1" src="cid:image003.jpg@01DAC949.A1936D00"></span><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'><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"'>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>Jan Waclawek<br><b>Sent:</b> Friday, June 28, 2024 9:48 AM<br><b>To:</b> HW-news<br><b>Subject:</b> Re: Nove PIC16 a PIC18 - Porty<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal style='margin-bottom:12.0pt'>[preposielam]<br><br>Ahoj,<br><br>ten kod je inicializacia portu D, teda jej fragment s nastavenim portu D v tej funkcii Init_IO_Ports_RA_RE_RB_RC_RD(). Je to vlastne inicializacia portu D podla datasheetu kapitola IO-ports. Toto je v poriadku. Ja som vcera este precital TB3130 - Peripheral Pin Select in 8-bit Microcontrollers Technical Brief. Po jeho prestudovani som zacal aspon tusit, ze okrem tych nastaveni portu D v inicializacnej rutine, je potrebne este nastavit aj registre PPS. Pointa je v tom, ze kazdy IO-pin ma este multiplexer na alternativne fukcie hardwaru, ktory treba nastavit tiez. To samozrejme v datasheete napisane priamo nie je, to sa musi clovek dovtipit sam... To bolo na tom dost tazke, na to prist. Dalsi problem, ktory treba vyriesit, je tabulka, ktora popisuje prepinanie prislusneho hardware na pin. Tuna som nasiel ako periferiu LATxy, to je dalsie sklicko do mozaiky nastavenia. Ked som si potom v include file pre io-registre pic18f47k42 nasiel RD0PPS, tak to uz bola brnkacka. Takze ku povodnej inicializacii portu D, treba este pridat fragment kodu:<br> <br> // Nastavenie PPS-registrov<br> // - odomknutie<br> INTCON0bits.GIE = 0;<br> PPSLOCK = 0x55;<br> PPSLOCK = 0xAA;<br> PPSLOCKbits.PPSLOCKED = 0;<br> <br> // code<br> // RxyPPS - vystupy z LAT_RDx<br> RD0PPS = 0b00000000; // LATD0 -> RD0<br> RD1PPS = 0b000000;<br> <br> // - zamknutie<br> PPSLOCK = 0x55;<br> PPSLOCK = 0xAA;<br> PPSLOCKbits.PPSLOCKED = 1;<br> INTCON0bits.GIE = 1;<br> <br>Potialto je to vsetko v poriadku. No pin mi stale nekmital, ale vystup OSC2 daval pekny obdlznik na 1MHz.. Cely zufaly som zapol zo zufalstva ICD-debuger v PicKit-3. A ukazalo sa, ze chyba bola niekde inde. Konkretne vo funkcii nastavenia oscilatora, je tam takyto fragment kodu:<br><br> OSCFRQ = 0b00000010; // HFINTOSC = 4MHz<br> OSCTUNE = 0b00000000; // no tune<br> <br> OSCCON1 = 0b01100000; // HFINTOSC; divide by 1<br> <br> while(!OSCCON3bits.NOSCR) // wait for New OSC Ready<br> ;<br><br>No a samozrejme na tom while, to cele zastavilo. Tento fragment mam tiez odpisany z nejakeho TBxxxx. Takze som tuto funkciu vypol a bezal na defaultnych 64MHz clocku, kvoli rychlemu testu. A ajhla, soft sa zrazu rozbehol podla ocakavania... Este za zmienku stoji to, ze ICD-debuger vypol watchdog. Ktora z tychto dvoch veci rozbehla soft, som uz rano po prebdelej noci nemal chut zistovat. Ale vratim sa k tomu.<br><br>Dalsia poznamka sa tyka toho, ako je napisana cela dokumentacia ku konkretne tychto dvoch kapitol. Najprv som lustil datasheet, potom TB3130, ktora je napisana na starsie typy PIC18 a samozrejme potom zase datasheet a nakoniec som skoncil pri include file pic18f47k42.h, ktory ma vyse 3MB. Ten je samozrejme napisany v novom formate a ma inu strukturu popisu periferii nez je v datasheete a tom TB3130. Takze princip a detaily treba hladat v tom TB3130, konkretne pikosky potom v datasheete a finalny zapis do kodu v tom include file pic18f47k42.<br><br>Takze toto som zvladol. Teraz pride dalsi krok a to konfiguracia pinu portu D na input. A tuna by som rad poprosil tych skusenejsich o pomoc s tym, ako nastavit pin na vstup digitalny a vstup analogovy. Az by mal niekto hotovy fragment kodu nastavenia, budem velmi rad. Ako ja na to casom pridem aj sam, ale usetrilo by mi to dost casu a lustenia neprehladnej dokumentacie. Vopred dakujem za pomoc.<br><br>A.<o:p></o:p></p></div></div></body></html>