<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-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;}
span.StylE-mailovZprvy17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.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>Dobrý den,<o:p></o:p></p><p class=MsoNormal> Od včerejška ladím jeden soft pro 18f2620 v&nbsp;mplabX, fyzicky board ještě nemám, nedaří se mi rozběhnout spi v&nbsp;přerušení. Nezkoušel někdo z&nbsp;Vás, jestli mplabX 1.70 korektně simuluje SPI? Tváří se mi to, jako by nic neodesílal. Prostě naplním SSPBUF a následně mi to neskočí do přerušení (nic se neděje). Míra<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>ps. Trochu jsem to osekal proto tak nelogické nastavování TRIS&#8230; atd, předělávám z&nbsp;softSPI na hwSPI<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>void initSPI (void)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>#ifdef SPI_HW<o:p></o:p></p><p class=MsoNormal>    SPI_STROBO = 0;<o:p></o:p></p><p class=MsoNormal>    SPI_STROBO_TRIS = 0;<o:p></o:p></p><p class=MsoNormal>    SPI_DATA_IN_TRIS = 1;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>    CKP = 0; //klidový stav LO<o:p></o:p></p><p class=MsoNormal>    CKE = 1;<o:p></o:p></p><p class=MsoNormal>    SMP = 1; //vstupní data jsou snímána po odeslání výstupních dat<o:p></o:p></p><p class=MsoNormal>    SSPCON1bits.SSPM = 0; //SPI Master mode, clock = FOSC/4<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>    PEIE = 1; // enable peripheral interrupts<o:p></o:p></p><p class=MsoNormal>    IPEN = 1; // Interrupt priorities enabled<o:p></o:p></p><p class=MsoNormal>    SSPIP = 0; // low priority interrupt<o:p></o:p></p><p class=MsoNormal>    //    SSPIF = 0;<o:p></o:p></p><p class=MsoNormal>    //    SSPIE = 1;<o:p></o:p></p><p class=MsoNormal>    GIEL = 1; // povol low-level přerušení<o:p></o:p></p><p class=MsoNormal>    GIE = 1; // povol všechna přerušení<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>#endif<o:p></o:p></p><p class=MsoNormal>    SPIout_bity.value[0] = 0xff;<o:p></o:p></p><p class=MsoNormal>    SPIout_bity.value[1] = 0xff;<o:p></o:p></p><p class=MsoNormal>    SPIout_bity.value[2] = 0xff;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>    SPIout_bity_old.bitOut.PowerLed = 1; //pro inicializaci SPI (musí se odeslast do IO samé nuly)<o:p></o:p></p><p class=MsoNormal>    SPIout ();<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal>//______________________________________________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal>#ifdef SPI_HW<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>void SPIint (void)<o:p></o:p></p><p class=MsoNormal>// u HW SPI se hned zkopírude do SPIout_bity_old, protože se čeká, až se odešle info do IO po SPI<o:p></o:p></p><p class=MsoNormal>// v době odesílání po SPI si již může používat SPIout_bity<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    if (SSPIE &amp;&amp; SSPIF)<o:p></o:p></p><p class=MsoNormal>    {<o:p></o:p></p><p class=MsoNormal>               //sem skočí pouze 1 a to po SPIout<o:p></o:p></p><p class=MsoNormal>               //až odešle vše, zakáže SSPIE<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>&nbsp;</o:p></p><p class=MsoNormal>#endif<o:p></o:p></p><p class=MsoNormal>//______________________________________________________________________________________________________________________<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>char SPIout (void)<o:p></o:p></p><p class=MsoNormal>#ifdef SPI_HW<o:p></o:p></p><p class=MsoNormal>//HW_SPI<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    char SPItmp = SPI_vyslanychBytu;<o:p></o:p></p><p class=MsoNormal>    while (SSPIE); //pokud je povolené přerušení od SPI, potom čekej až to odešle<o:p></o:p></p><p class=MsoNormal>    do<o:p></o:p></p><p class=MsoNormal>    {<o:p></o:p></p><p class=MsoNormal>               if (SPIout_bity.value[SPItmp - 1] != SPIout_bity_old.value[SPItmp - 1])//pokud se změnilo něco v bufru, odešli<o:p></o:p></p><p class=MsoNormal>               {<o:p></o:p></p><p class=MsoNormal>                   SPIoutByt = SPI_vyslanychBytu;<o:p></o:p></p><p class=MsoNormal>                   SPIerrorRepeat = SPI_errorRepeat;<o:p></o:p></p><p class=MsoNormal>                   SPImode = SPIsave;<o:p></o:p></p><p class=MsoNormal>                   SPIout_bity_old = SPIout_bity; // zkopíruj pole<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>                   SPI_DATA_OUT = 0;<o:p></o:p></p><p class=MsoNormal>                   SPI_DATA_OUT_TRIS = 0;<o:p></o:p></p><p class=MsoNormal>                   SPI_CLK = 0;<o:p></o:p></p><p class=MsoNormal>                   SPI_CLK_TRIS = 0;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>                   SSPEN = 1; //povol SPI modul<o:p></o:p></p><p class=MsoNormal>                   SSPIF = 1; //příznak přerušení<o:p></o:p></p><p class=MsoNormal>                   SSPIE = 1; //povol přerušení od SPI<o:p></o:p></p><p class=MsoNormal>                   break;<o:p></o:p></p><p class=MsoNormal>               }<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal>    while (--SPItmp);<o:p></o:p></p><p class=MsoNormal>    return 0;<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p></div> <BR>
<BR>
__________ Informace od ESET NOD32 Antivirus, verze databaze 8156 (20130324) __________<BR>
<BR>
Tuto zpravu proveril ESET NOD32 Antivirus.<BR>
<BR>
<A HREF="http://www.eset.cz">http://www.eset.cz</A><BR>


 </body></html>