<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)"><title>Re: mplabX + SPI</title><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
        {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";}
span.StylE-mailovZprvy18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.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 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ý večer, <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>tak smutné zjištění. Jak MPLAB tak ani MPLABX nepodporují simulaci HW SPI. Ale podle mého mínění, coby mladý &#8222;pionýr&#8220; jsem to SPI HW simuloval. To byla verze mplabu 5. Nebo 6.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Je to škoda. míra<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</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-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] <b>On Behalf Of </b>Hfmcons<br><b>Sent:</b> Monday, March 25, 2013 11:28 AM<br><b>To:</b> HW-news<br><b>Subject:</b> Re: mplabX + SPI<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p><span style='font-size:10.0pt'>Simulátor v MplabX někdy zlobí(l), nelíbí se mu neinicializované<br>proměnné např. z ADC, ale jestli je tohle ten případ nevím.<br>Miloš Dašek<br><br>Dne 25. března 2013 10:25 Miroslav Draxal &lt;<a href="mailto:evik@volny.cz">evik@volny.cz</a>&gt; napsal(a):<br>&gt; Asi nepochopeno.<br>&gt;<br>&gt; Nejprve init SPI<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (zde se nastaví priorita přerušení, povolí přerušení od<br>&gt; periferii, povolí globálně prerušení)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nakonec zde skáče na SPIout<br>&gt;<br>&gt; SPIout<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pokud je povolený SPIIE, čekej, protože nedokončil předchozí<br>&gt; relaci SPI<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Povol přerušení od SPI (SPIIE), soft.simulace přerušení od<br>&gt; SPI(SPPIF), následně okamžitě skočí do přerušení od SPI<br>&gt;<br>&gt; SPIint<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No a sem to právě skočí pouze při soft.simulaci přerušení,<br>&gt; čili přerušení je OK.Pokud by odeslal celou SPI, potom by zakázal SPPIE.<br>&gt; jenom to jaksi nic neodesílá (v mplabX), otázka je, jestli MPLAB správně<br>&gt; simuluje, nebo je chyba mezi klávesnicí a židlí.<br>&gt;<br>&gt; Předpokládám že ta klávesnice a židle.<br>&gt;<br>&gt; Včera jsem si to napsal do mplab 8.88 a taky to nechodí. Inicializuju to<br>&gt; podle datasetu, ale nic. Nějak se mi nechce věřit, že by to byla chyba<br>&gt; simulace.<br>&gt;<br>&gt;<br>&gt;<br>&gt; #include &lt;htc.h&gt;<br>&gt;<br>&gt; //#pragma config CONFIG1H = 0x8<br>&gt;<br>&gt; __CONFIG (1, OSC_INTIO67 &amp; FCMEN_OFF &amp; IESO_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG2L = 0x1E<br>&gt;<br>&gt; __CONFIG (2, PWRT_ON &amp; BOREN_SBORDIS &amp; BORV_3);<br>&gt;<br>&gt; //#pragma config CONFIG2H = 0x1E<br>&gt;<br>&gt; __CONFIG (3, WDT_OFF &amp; WDTPS_32768);<br>&gt;<br>&gt; //#pragma config CONFIG3H = 0x81<br>&gt;<br>&gt; __CONFIG (4, CCP2MX_PORTC &amp; PBADEN_OFF &amp; LPT1OSC_OFF &amp; MCLRE_ON);<br>&gt;<br>&gt; //#pragma config CONFIG4L = 0x81<br>&gt;<br>&gt; __CONFIG (5, STVREN_ON &amp; LVP_OFF &amp; XINST_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG5L = 0xF<br>&gt;<br>&gt; __CONFIG (6, CP0_OFF &amp; CP1_OFF &amp; CP2_OFF &amp; CP3_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG5H = 0xC0<br>&gt;<br>&gt; __CONFIG (7, CPB_OFF &amp; CPD_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG6L = 0xF<br>&gt;<br>&gt; __CONFIG (8, WRT0_OFF &amp; WRT1_OFF &amp; WRT2_OFF &amp; WRT3_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG6H = 0xE0<br>&gt;<br>&gt; __CONFIG (9, WRTC_OFF &amp; WRTB_OFF &amp; WRTD_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG7L = 0xF<br>&gt;<br>&gt; __CONFIG (10, EBTR0_OFF &amp; EBTR1_OFF &amp; EBTR2_OFF &amp; EBTR3_OFF);<br>&gt;<br>&gt; //#pragma config CONFIG7H = 0x40<br>&gt;<br>&gt; __CONFIG (11, EBTRB_OFF);<br>&gt;<br>&gt;<br>&gt;<br>&gt; void main(void)<br>&gt;<br>&gt; {<br>&gt;<br>&gt; #define SPI_DATA_OUT LATC5<br>&gt;<br>&gt; #define SPI_DATA_OUT_TRIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRISC5<br>&gt;<br>&gt; #define SPI_CLK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LATC3<br>&gt;<br>&gt; #define SPI_CLK_TRIS&nbsp;&nbsp;&nbsp;&nbsp; TRISC3<br>&gt;<br>&gt; #define SPI_STROBO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LATA4<br>&gt;<br>&gt; #define SPI_STROBO_TRIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRISA4<br>&gt;<br>&gt; #define SPI_DATA_IN&nbsp;&nbsp;&nbsp;&nbsp; PORTCbits.RC4<br>&gt;<br>&gt; #define SPI_DATA_IN_TRIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRISC4<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; OSCCON = 0b01110011;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ADCON1 = 0b00001111; //RA0-RA3 IO (no AD)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; CMCON = 0b00000111; //RA0-RA2 IO (comparators off)<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SPI_STROBO = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SPI_STROBO_TRIS = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_IN_TRIS = 1;<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SMP = 1; //vstupní data jsou snímána po odeslání výstupních dat<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; CKE = 1;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; CKP = 0; //klidový stav LO<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SSPCON1bits.SSPM = 0; //SPI Master mode, clock = FOSC/4<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; PEIE = 1; // enable peripheral interrupts<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; IPEN = 1; // Interrupt priorities enabled<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SSPIP = 0; // low priority interrupt<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; SSPIF = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; SSPIE = 1;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; GIEL = 1; // povol low-level přerušení<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; GIE = 1; // povol všechna přerušení<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_OUT = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_OUT_TRIS = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_CLK = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_CLK_TRIS = 0;<br>&gt;<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPEN = 1; //povol SPI modul<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIE = 1; //povol přerušení od SPI<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIF = 1; //příznak přerušení<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (1);<br>&gt;<br>&gt; }<br>&gt;<br>&gt; void interrupt low_priority interrupt_low (void)<br>&gt;<br>&gt; {<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; if (SSPIE &amp;&amp; SSPIF)<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPBUF = 0xff;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIF = 0;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;<br>&gt;<br>&gt; }<br>&gt;<br>&gt;<br>&gt;<br>&gt; From: <a href="mailto:hw-list-bounces@list.hw.cz">hw-list-bounces@list.hw.cz</a> [<a href="mailto:hw-list-bounces@list.hw.cz">mailto:hw-list-bounces@list.hw.cz</a>] On<br>&gt; Behalf Of Milan Baša<br>&gt; Sent: Monday, March 25, 2013 8:26 AM<br>&gt; To: HW-news<br>&gt; Subject: Re: mplabX + SPI<br>&gt;<br>&gt;<br>&gt;<br>&gt; Dňa 24.03.2013 12:45, Miroslav Draxal&nbsp; wrote / napísal(a):<br>&gt;&gt; Dobrý den,<br>&gt;&gt;<br>&gt;&gt; Od včerejška ladím jeden soft pro 18f2620 v mplabX, fyzicky board ještě<br>&gt;&gt; nemám, nedaří se mi rozběhnout spi v přerušení. Nezkoušel někdo z Vás,<br>&gt;&gt; jestli mplabX 1.70 korektně simuluje SPI? Tváří se mi to, jako by nic<br>&gt;&gt; neodesílal. Prostě naplním SSPBUF a následně mi to neskočí do přerušení<br>&gt;&gt; (nic se neděje). Míra<br>&gt;&gt;<br>&gt;&gt; ps. Trochu jsem to osekal proto tak nelogické nastavování TRIS... atd,<br>&gt;&gt; předělávám z softSPI na hwSPI<br>&gt;&gt;<br>&gt;&gt; void initSPI (void)<br>&gt;&gt;<br>&gt;&gt; {<br>&gt;&gt;<br>&gt;&gt; #ifdef SPI_HW<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_STROBO = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_STROBO_TRIS = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_IN_TRIS = 1;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CKP = 0; //klidový stav LO<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CKE = 1;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMP = 1; //vstupní data jsou snímána po odeslání výstupních dat<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPCON1bits.SSPM = 0; //SPI Master mode, clock = FOSC/4<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PEIE = 1; // enable peripheral interrupts<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPEN = 1; // Interrupt priorities enabled<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIP = 0; // low priority interrupt<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; SSPIF = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; SSPIE = 1;<br>&gt; Tu ste zakazal prerusenie od SPI (defaultne nastavene na 0)<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GIEL = 1; // povol low-level přerušení<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GIE = 1; // povol všechna přerušení<br>&gt;&gt;<br>&gt;&gt; #endif<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout_bity.value[0] = 0xff;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout_bity.value[1] = 0xff;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout_bity.value[2] = 0xff;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout_bity_old.bitOut.PowerLed = 1; //pro inicializaci SPI (musí<br>&gt;&gt; se odeslast do IO samé nuly)<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout ();<br>&gt;&gt;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; //______________________________________________________________________________________________________________________<br>&gt;&gt;<br>&gt;&gt; #ifdef SPI_HW<br>&gt;&gt;<br>&gt;&gt; void SPIint (void)<br>&gt;&gt;<br>&gt;&gt; // u HW SPI se hned zkopírude do SPIout_bity_old, protože se čeká, až se<br>&gt;&gt; odešle info do IO po SPI<br>&gt;&gt;<br>&gt;&gt; // v době odesílání po SPI si již může používat SPIout_bity<br>&gt;&gt;<br>&gt;&gt; {<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (SSPIE &amp;&amp; SSPIF)<br>&gt; Sem proc neskoci lebo mate zakazane prerusenie a este navyse testujete<br>&gt; zakazane prerusenie na 1<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //sem skočí pouze 1 a to po SPIout<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //až odešle vše, zakáže SSPIE<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt; #endif<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; //______________________________________________________________________________________________________________________<br>&gt;&gt;<br>&gt;&gt; char SPIout (void)<br>&gt;&gt;<br>&gt;&gt; #ifdef SPI_HW<br>&gt;&gt;<br>&gt;&gt; //HW_SPI<br>&gt;&gt;<br>&gt;&gt; {<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char SPItmp = SPI_vyslanychBytu;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (SSPIE); //pokud je povolené přerušení od SPI, potom čekej až<br>&gt;&gt; to odešle<br>&gt; Tu by ste mal testovat asi SSPIF - kym sa odosle buffer<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (SPIout_bity.value[SPItmp - 1] !=<br>&gt;&gt; SPIout_bity_old.value[SPItmp - 1])//pokud se změnilo něco v bufru, odešli<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIoutByt = SPI_vyslanychBytu;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIerrorRepeat = SPI_errorRepeat;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPImode = SPIsave;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPIout_bity_old = SPIout_bity; // zkopíruj pole<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_OUT = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_DATA_OUT_TRIS = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_CLK = 0;<br>&gt; Nastavene CLK na nulu a nikde ho nenastavujete na 1 - ak HW tak sa asi<br>&gt; musite postarat aj o CLK<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_CLK_TRIS = 0;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPEN = 1; //povol SPI modul<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIF = 1; //příznak přerušení<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSPIE = 1; //povol přerušení od SPI<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (--SPItmp);<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&gt;&gt;<br>&gt;&gt; }<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; __________ Informace od ESET NOD32 Antivirus, verze databaze 8156<br>&gt;&gt; (20130324) __________<br>&gt;&gt;<br>&gt;&gt; Tuto zpravu proveril ESET NOD32 Antivirus.<br>&gt;&gt;<br>&gt;&gt; <a href="http://www.eset.cz">http://www.eset.cz</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; HW-list mailing list&nbsp; -&nbsp; sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br>&gt;&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>&gt;&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br>&gt;&gt;<br>&gt;<br>&gt; Milan<br>&gt; _______________________________________________<br>&gt; HW-list mailing list&nbsp; -&nbsp; sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br>&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br>&gt;<br>&gt;<br>&gt;<br>&gt; __________ Informace od ESET NOD32 Antivirus, verze databaze 8157 (20130324)<br>&gt; __________<br>&gt;<br>&gt; Tuto zpravu proveril ESET NOD32 Antivirus.<br>&gt;<br>&gt; <a href="http://www.eset.cz">http://www.eset.cz</a><br>&gt;<br>&gt;<br>&gt;<br>&gt; __________ Informace od ESET NOD32 Antivirus, verze databaze 8158 (20130325)<br>&gt; __________<br>&gt;<br>&gt; Tuto zpravu proveril ESET NOD32 Antivirus.<br>&gt;<br>&gt; <a href="http://www.eset.cz">http://www.eset.cz</a><br>&gt;<br>&gt; _______________________________________________<br>&gt; HW-list mailing list&nbsp; -&nbsp; sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br>&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br>&gt;<br>_______________________________________________<br>HW-list mailing list&nbsp; -&nbsp; sponsored by <a href="http://www.HW.cz">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">http://list.hw.cz/mailman/listinfo/hw-list</a></span> <o:p></o:p></p><p class=MsoNormal><br><br>__________ Informace od ESET NOD32 Antivirus, verze databaze 8158 (20130325) __________<br><br>Tuto zpravu proveril ESET NOD32 Antivirus.<br><br><a href="http://www.eset.cz">http://www.eset.cz</a><o:p></o:p></p></div> <BR>
<BR>
__________ Informace od ESET NOD32 Antivirus, verze databaze 8169 (20130327) __________<BR>
<BR>
Tuto zpravu proveril ESET NOD32 Antivirus.<BR>
<BR>
<A HREF="http://www.eset.cz">http://www.eset.cz</A><BR>


 </body></html>