<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=12021&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-15T15:10:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12021&amp;mode</id>
<entry>
<author><name><![CDATA[krzyhu0905gmail]]></name></author>
<updated>2015-06-15T15:10:39+01:00</updated>
<published>2015-06-15T15:10:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12021&amp;p=131821#p131821</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12021&amp;p=131821#p131821"/>
<title type="html"><![CDATA[Kominikacja miedzy 2 ATmegami 328P SPI wymiana 2 bajtów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12021&amp;p=131821#p131821"><![CDATA[
[syntax=c]/*<br /> * spi328masterslave.c<br /> *<br /> * Created: 2015-06-04 13:04:35<br /> *  Author: krzychu<br /> */ <br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;math.h&gt;<br /><br />#include &quot;mkuart.h&quot;<br /><br />#define SLAVE_MASTER 1//master 1 slave 0<br /><br /><br />#define MOSI PB3<br />#define MISO PB4<br />#define SCK  PB5<br />#define SS   PB2<br /><br />#define SPI_Port PORTB<br /><br />#define SPI_IO_RegDDRB<br />#define SS_HIGH SPI_Port |=(1&lt;&lt;SS);<br />#define SS_LOW  SPI_Port&amp;=~(1&lt;&lt;SS);<br /><br />uint8_t SpiSend(uint8_t data)<br />{<br /><br />SS_LOW;<br /><br />SPDR=data;<br />while(!(SPSR&amp;(1&lt;&lt;SPIF)));<br />SS_HIGH;<br />return SPDR;<br /><br /><br />}<br /><br />//MASTER<br />#if SLAVE_MASTER== 1<br />void SpiMasterInit()<br />{<br />SPI_IO_Reg|=(1&lt;&lt;MOSI)|(1&lt;&lt;SCK)|(1&lt;&lt;SS);<br />SPCR = ( 1 &lt;&lt; SPE ) | ( 1 &lt;&lt; MSTR ) |/* ( 1 &lt;&lt; SPR1 ) |*/ ( 1 &lt;&lt; SPR0 );<br />SS_HIGH;<br />}<br /><br />#endif<br />//SLAVE<br />#if SLAVE_MASTER== 0<br /><br />void SpiSlaveinit()<br />{<br />SPI_IO_Reg|=(1 &lt;&lt; MISO);          //MISO jako wyjście<br />SPCR = ( 1 &lt;&lt; SPE )|(1&lt;&lt;SPIE);            //Włączamy SPI<br />}<br /><br />volatile uint8_t OdebraneS=0;<br /><br />#endif<br /><br /><br /><br /><br />int main(void)<br />{<br />USART_Init(__UBRR);<br /><br />sei();<br /><br />//SLAVE<br />#if SLAVE_MASTER == 0<br />SpiSlaveinit();<br />_delay_ms(10);<br />#endif<br />//MASTER<br />#if SLAVE_MASTER == 1<br /><br />uint16_t liczba;<br />                uint8_t MsbLsb=0;<br /><br /><br /><br />SpiMasterInit();<br />#endif<br /><br /><br />    while(1)<br />    {<br />       //MASTER<br />       #if SLAVE_MASTER == 1<br />odebrane=SpiSend(MsbLsb);<br /><br />if(MsbLsb==1) LSB=odebrane;<br />else if(MsbLsb==2) <br />{<br />MSB=odebrane;<br />liczba = (MSB&lt;&lt;8)|LSB;<br />}<br /><br /><br />uart_putint(liczba,10);<br />uart_puts(&quot;\r\n&quot;);<br />_delay_ms(500);<br /><br /><br />       #endif <br />   //SLAVE<br />   #if SLAVE_MASTER == 0<br />uart_putint(OdebraneS,10);<br />uart_puts(&quot;\r\n&quot;);<br />   #endif<br /><br />    }<br />}<br /> #if SLAVE_MASTER == 0<br />ISR(SPI_STC_vect)            //Kod wykonywany po zgłoszeniu przerywania SPI_STC<br />{<br />uint16_t liczba =1879;<br />uint8_t MSB,LSB;<br /><br />MSB=liczba&gt;&gt;8;<br />LSB=liczba;<br /><br /><br />OdebraneS = SPDR;        //Pobieramy wartość wysłaną przez Master<br /><br />if(OdebraneS==1) SPDR=MSB;<br />else if(OdebraneS==2) SPDR=LSB;<br />}<br /> #endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3013">krzyhu0905gmail</a> — 15 cze 2015, o 15:10</p><hr />
]]></content>
</entry>
</feed>