<?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=2872&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-05-06T20:35:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2872&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-05-06T20:35:48+01:00</updated>
<published>2018-05-06T20:35:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207471#p207471</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207471#p207471"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207471#p207471"><![CDATA[
<div class="quotetitle">tonygryps napisał(a):</div><div class="quotecontent"><br />Kolega to powinien złotą łopatę dostać<br /></div><br />No kolega przesadził <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> złotą ? .... fuuuuj<br /><br />raczej platynową i to wysadzaną diamentami i szafirami <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />i dlatego wątek blokuję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 maja 2018, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tonygryps]]></name></author>
<updated>2018-05-06T18:28:01+01:00</updated>
<published>2018-05-06T18:28:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207466#p207466</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207466#p207466"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207466#p207466"><![CDATA[
Kolega to powinien złotą łopatę dostać, a co do komunikacji  to nie można wziąć np atmegę 8 z komputerem  komunikować się po uarcie przez przejściówkę usb rs232 a urządzenie z atmegą 8 po spi ? czy kolega nie wie jak to zrobić a czas goni ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12014">tonygryps</a> — 6 maja 2018, o 18:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[eveo]]></name></author>
<updated>2018-05-06T17:50:21+01:00</updated>
<published>2018-05-06T17:50:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207465#p207465</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207465#p207465"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=207465#p207465"><![CDATA[
Pilnie poszukuję doświadczonej osoby do nawiązania komunikacji po SPI między  moim komputerem a urządzeniem nadającym (mam inne urządzenie poprawnie odczytujące komunikaty). Należy po stronie Linuxa za pomocą programu w c/c++ odczytać liczby nadawane przez urządzenie. Udało mi się nawiązać komunikację ale nie umiem odczytać pożądanych wartości. Nagroda za skuteczną pomoc: 4 tysiące złotych. <br /><br />W przypadku zainteresowania proszę o kontakt<br /><br /><!-- e --><a href="mailto:clone147@hotmail.com">clone147@hotmail.com</a><!-- e --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19426">eveo</a> — 6 maja 2018, o 17:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-07-13T07:33:36+01:00</updated>
<published>2013-07-13T07:33:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41583#p41583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41583#p41583"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41583#p41583"><![CDATA[
Tak jak piszesz. Temat został już opanowany dziękuję za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 13 lip 2013, o 07:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kazzik87]]></name></author>
<updated>2013-07-12T06:16:20+01:00</updated>
<published>2013-07-12T06:16:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41430#p41430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41430#p41430"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=41430#p41430"><![CDATA[
W pętli <em>while(1) {}</em> Mastera i Slave masz to samo! Po co?<br /><br />Jak dobrze rozumiem to chcesz Masterem odczytać wartości wysyłane przez Slave'y?<br /><br />Tak jak pisałem wcześniej aby aktywować Slave używasz linii SS (Select Slave). Czyli podpinasz nogi SS Slave'ów do dwóch pinów w Masterze. I ustawienie 0 (lub 1 - trzeba doczytać w nocie) na wyjściu aktywuje konkretnego Slave'a! Wtedy możesz odczytywać. Trzeba pamiętać że jak chcesz odczytać coś ze Slave'a to jednocześnie musisz coś do niego wysłać!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=476">kazzik87</a> — 12 lip 2013, o 06:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-06-13T21:15:47+01:00</updated>
<published>2013-06-13T21:15:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39243#p39243</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39243#p39243"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39243#p39243"><![CDATA[
Doczytałem jeszcze informacje by odebrać dane ze slave, master musi coś wysłać. Więc przerobiłem trochę kod do tej informacji i wygląda on tak:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lcd.h&quot;<br /><br />#define MASTER 0//jeżeli master to 1, jeżeli slave to 0<br /><br />#if MASTER ==1<br /><br />#define MOSI PB5<br />#define SCK PB7<br />#define CS1 PB4<br />#define CS2 PB3<br />#define CS1_0 PORTB &amp;= ~(1&lt;&lt;CS1)<br />#define CS1_1 PORTB |= (1&lt;&lt;CS1)<br />#define CS2_0 PORTB &amp;= ~(1&lt;&lt;CS2)<br />#define CS2_1 PORTB |= (1&lt;&lt;CS2)<br /><br />void InitSpiMaster(void);<br />uint8_t TransferSpi(uint8_t byte);<br /><br />int main(void) {<br />DDRC |= (1 &lt;&lt; PC1);<br />PORTC |= (1 &lt;&lt; PC1);<br />lcd_init(); //inicjalizacja wyświetlacza<br />InitSpiMaster();//inicjalizacja SPI<br />TransferSpi(0);<br />lcd_locate(1, 0);<br />lcd_str(&quot;master&quot;);<br />uint8_t cnt = 0;//deklaracja zmiennej licznika<br />while (1) {<br />_delay_ms(400);<br />//wysyłanie:<br />cnt++; //Dodanie wartości licznika<br />if (cnt == 99)<br />cnt = 0; //jeżeli licznik ==99 zeruje zmienną cnt<br />TransferSpi(cnt); //Wysłanie wartości zmiennej cnt<br />lcd_locate(0, 0);<br />lcd_str(&quot;W:&quot;);<br />lcd_int(cnt); //Wyświetlenie wartości cnt na LCD<br /><br />//odbieranie:<br /><br />uint8_t bajt_oo;<br />bajt_oo = TransferSpi(0);<br />lcd_locate(10, 0);<br />lcd_str(&quot;O:&quot;);<br />lcd_int(bajt_oo);<br /><br /><br />}<br /><br />}<br /><br />void InitSpiMaster(void) {<br />//ustawienie kierunku wyjściowego dla linii MOSI, SCK i CS<br />DDRB |= (1 &lt;&lt; MOSI) | (1 &lt;&lt; SCK) | (1 &lt;&lt; CS1) | (1 &lt;&lt; CS2);<br />// aktywacja  SPI, tryb pracy Master, prędkość zegara Fosc/64<br />SPCR |= (1 &lt;&lt; SPE) | (1 &lt;&lt; MSTR) | (1 &lt;&lt; SPR1);<br />CS1_1;<br />}<br />// definicja funkcji odbioru bajy<br /><br />uint8_t TransferSpi(uint8_t byte) {<br />CS1_0;<br />SPDR = byte;<br />while (!(SPSR &amp; (1 &lt;&lt; SPIF)))<br />;<br />return SPDR;<br />CS1_1;<br />}<br /><br />#endif<br /><br />//-----------------------------SLAVE<br /><br />#if MASTER == 0<br /><br />#define MISO PB6<br />//#define CS1 PB4<br />//#define CS1_0 PORTB &amp;= ~(1&lt;&lt;CS1)<br />//#define CS1_1 PORTB |= (1&lt;&lt;CS1)<br /><br /><br />void InitSpiSlave(void);<br />uint8_t TransferSpi( uint8_t byte );<br /><br />int main(void) {<br /><br />DDRC |= (1&lt;&lt;PC1); //Podświetlenie LCD<br />PORTC |= (1&lt;&lt;PC1);<br />lcd_init(); //inicjalizacja wyświetlacza<br />InitSpiSlave(); // inicjalizacja SPI dla slave<br />TransferSpi( 0 );<br />lcd_locate(1, 0);<br />lcd_str(&quot;Slave 1&quot;); //wyświetlenie napisu<br />uint8_t cnt =0;<br /><br />while(1) {<br /><br />//wysyłanie:<br />cnt=cnt+2; //Dodanie wartości licznika<br />if (cnt&gt;=99) cnt=0; //jeżeli licznik ==99 zeruje zmienną cnt<br />TransferSpi( cnt ); //Wysłanie wartości zmiennej cnt<br />lcd_locate(0,0);<br />lcd_str(&quot;W:&quot;);<br />lcd_int( cnt ); //Wyświetlenie wartości cnt na LCD<br /><br />//odbieranie:<br /><br />uint8_t bajt_o;<br />bajt_o = TransferSpi(0);<br />lcd_locate(10,0);<br />lcd_str(&quot;O:&quot;);<br />lcd_int(bajt_o);<br /><br />}<br /><br />}<br /><br />void InitSpiSlave(void) {<br />// ustawienie kierunku wyjściowego dla linii MOSI<br />DDRB |= (1&lt;&lt;MISO);<br />// aktywacja  SPI, tryb pracy SLAVE,<br />SPCR |= (1&lt;&lt;SPE);<br />}<br /><br />// definicja  funkcji wysyłającej bajt<br />uint8_t TransferSpi(uint8_t byte) {<br /><br />SPDR = byte;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />return SPDR;<br /><br />}<br /><br />#endif[/syntax]<br /><br />I teraz Slave odczytuje dane z master ale master odczytuje jakieś dziwne wartości. Jak mam licznik który liczy co 2, to na wyświetlaczu w układzie master cyfry pojawiają się losowo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 13 cze 2013, o 21:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-06-13T12:25:35+01:00</updated>
<published>2013-06-13T12:25:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39199#p39199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39199#p39199"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=39199#p39199"><![CDATA[
Po długiej przerwie zabrałem się za ten problem który pozostawiłem i coś nie mogę sobie poradzić. <br />Mam taki kod wgrany w układzie slave 1 który ma wysłać wartość ze zmiennej cnt do układu master<br />kod:<br />[syntax=c]#if MASTER == 0<br /><br />#define MISO PB6<br />//#define CS1 PB4<br />//#define CS1_0 PORTB &amp;= ~(1&lt;&lt;CS1)<br />//#define CS1_1 PORTB |= (1&lt;&lt;CS1)<br /><br /><br />void InitSpiSlave(void);<br />void SendSpi( uint8_t bajt );<br />uint8_t cnt =0;// Zmienna licznika<br /><br /><br />int main(void) {<br /><br />DDRC  |= (1&lt;&lt;PC1);//Podświetlenie LCD<br />PORTC |= (1&lt;&lt;PC1);<br />lcd_init(); //inicjalizacja wyświetlacza<br />InitSpiSlave();// inicjalizacja SPI dla master<br />//SendSpi( 0 );<br />lcd_locate(1, 0);<br />lcd_str(&quot;Slave 1&quot;);//wyświetlenie napisu<br /><br /><br />while(1) {<br />cnt++;//Dodanie wartości licznika<br />if (cnt==99) cnt=0;//jeżeli licznik ==99 zeruje zmienną cnt<br />SendSpi( cnt );//Wysłanie wartości zmiennej cnt<br />_delay_ms(400);<br />lcd_locate(0,0);<br />lcd_int(cnt);//Wyświetlenie wartości cnt na LCD<br />}<br /><br />}<br /><br />void InitSpiSlave(void) {<br />// ustawienie kierunku wyjściowego dla linii MOSI<br />DDRB |= (1&lt;&lt;MISO);<br />// aktywacja  SPI, tryb pracy SLAVE,<br />SPCR |= (1&lt;&lt;SPE) | (1&lt;&lt;SPIE);<br />sei();<br />}<br /><br />// definicja  funkcji wysyłającej bajt<br />void SendSpi( uint8_t bajt ) {<br /><br />SPDR = bajt;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br /><br />}<br /><br />#endif[/syntax]<br /><br />I problem już pojawia się w momencie : //SendSpi( 0 ); Gdy nie jest za komentowany to kolejna część kodu (wyświetlenie napisu master) nie zostanie zrealizowana. To samo działo się w głównej pętli, gdy wywołuje funkcję SendSpi( cnt ); dalsza część programu nie działa. idąc dalej doszedłem że jak usunę linię while( !(SPSR &amp; (1&lt;&lt;SPIF)) ); to licznik działa. <br />doczytałem w PDF mojego atmegi16 żeby flaga przerwania działała muszę mieć ustawiony bit SPIE w SPCR i globalne przerwanie. Lecz to nic mi nie dało. Teraz to już nie bardzo wiem gdzie robię błąd <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 13 cze 2013, o 12:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kazzik87]]></name></author>
<updated>2013-04-17T08:04:32+01:00</updated>
<published>2013-04-17T08:04:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34519#p34519</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34519#p34519"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34519#p34519"><![CDATA[
<div class="quotetitle">Jeżyk-1 napisał(a):</div><div class="quotecontent"><br />W tym przypadku chyba nie mogę zastosować takiej funkcji :<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />uint8_t PickSpi(void) {<br />        while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />        return SPDR;<br />}<br />GeSHi<br /></div><br /><br />No nie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Musisz dopisać sobie obsługę - sterowanie przy pomocy SS resztą procków.<br />Rozumiem że masz jednego Mastera i dwa Slave.<br />W takim razie musisz te dwa Slave, a dokładnie ich piny SS podpiąć do różnych pinów Mastera. Nie będziesz wtedy sterował jednym pinem SS z Mastera lecz dwoma. I odpowiednie ustawienie 0 powoduje zmianę (aktywację) między Slave'ami.<br /><br />Nie jestem pewien czy w takiej sytuacji nie trzeba będzie obsługiwać SPI programowo a nie sprzętowo.<br /><br />Niech się wypowiedzą bardziej doświadczeni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=476">kazzik87</a> — 17 kwi 2013, o 08:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-15T16:02:21+01:00</updated>
<published>2013-04-15T16:02:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34376#p34376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34376#p34376"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34376#p34376"><![CDATA[
Witam. <br />Doszedłem do momentu że mam podłączone 3 uP i połączone ze sobą interfejsem SPI.<br />I gdy mam jeden uP jako master który wysyła do dwóch pozostałych (slave) informację i mają one odczytywać to samo to wiem jak zrobić dzięki niebieskiej książce. <br />A jak zrobić jak dwa slavey wysyłają 2 różne informacje do master? <br />W tym przypadku chyba nie mogę zastosować takiej funkcji :<br />[syntax=c]uint8_t PickSpi(void) {<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}[/syntax]<br /><br />Ktoś podpowie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 15 kwi 2013, o 16:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-14T22:05:00+01:00</updated>
<published>2013-04-14T22:05:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34333#p34333</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34333#p34333"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34333#p34333"><![CDATA[
No najprościej ale czytałem że jest taka możliwość tylko trzeba zastosować rezystor R20 - 10k tak jak zrobiłem na schemacie ale to nie działa mi <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Jak nikt nie będzie miał pomysłu, co mógłbym zrobić, to będę musiał takie zworki dorobić <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Znalazłem takie oto rozwiązanie problemu:<br /><img src="http://www.kanda.com/images/atmel_isp_circuit.jpg" alt="Obrazek" /><br /><br />W tej chwili mam połączone 2 uP i rezystory 4k7. Można programować i jeden i drugi układ. Jutro postaram się jeszcze trzeci podłączyć i zobaczymy czy będzie można wszystkie 3 niezależnie programować <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 14 kwi 2013, o 22:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[IUVOit]]></name></author>
<updated>2013-04-14T21:59:16+01:00</updated>
<published>2013-04-14T21:59:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34331#p34331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34331#p34331"/>
<title type="html"><![CDATA[Re: Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34331#p34331"><![CDATA[
Najprostszym rozwiązaniem było by zrobienie 4 zworek na liniach (MISO,MISO, MOSI , SCK)<br />które były by zdejmowane na czas programowania. Wówczas programator zawsze by widział, jedno urządzenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=94">IUVOit</a> — 14 kwi 2013, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-14T19:53:32+01:00</updated>
<published>2013-04-14T19:53:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34311#p34311</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34311#p34311"/>
<title type="html"><![CDATA[Komunikacja SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2872&amp;p=34311#p34311"><![CDATA[
Witam. Zabrałem się za komunikację SPI i mam mały problem.<br />Mam 2 układy które podłączone są ze sobą:<br />MISO &gt; MISO<br />MOSI &gt; MOSI<br />SCK &gt; SCK<br />SS &gt; SS + rezystor do Vcc.<br /><br />I każdy z nich ma gniazdo ISP do programowania. Nie rozłączam procesorów i próbuję wgrać program.<br />I do jednego bez problemu się wgrywa a do drugiego nie i pojawia się błąd.<br />W załączniku schemat i błąd :<br /><a href="http://forum.atnel.pl/_obrazki/o/493/752662277e8656a6960f59450bc1501a.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/493/752662277e8656a6960f59450bc1501a.png" alt="Obrazek" /></a><br /><br />Wygląda na błąd połączeniowy, Ale szukam i coś nie mogę znaleźne.<br />Gdy rozłączę procesory to do 2 procesora można wgrać program. jak są połączone to nie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Dodatkowo powiem że jak wgrałem program testowy i wgrałem na oba procesory to komunikacja działa. :<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lcd.h&quot;<br /><br /><br /><br /><br />#define MASTER 0<br /><br />#if MASTER ==1<br />#define MOSI PB5<br />#define SCK PB7<br />#define CS PB4<br />#else<br />#define MISO PB6<br />#endif<br /><br />#if MASTER ==1<br />void InitSpiSend(void);<br /><br />void SendSpi( uint8_t bajt );<br /><br />#else<br />void InitSpiPick(void);<br />uint8_t PickSpi(void);<br />#endif<br /><br /><br /><br /><br />int main(void) {<br />// inicjalizacja SPI dla master<br />#if MASTER ==1<br />InitSpiSend();<br />SendSpi( 0 );<br /><br />// inicjalizacja SPI dla slave<br />#else<br />InitSpiPick();<br />PickSpi();<br />#endif<br /><br /><br />while(1) {<br />#if MASTER ==1<br />uint8_t cnt;<br />for(cnt=0; cnt&lt;100; cnt++){<br /><br />SendSpi( cnt );<br />lcd_init();<br />lcd_locate(0,0);<br />if (cnt)<br />lcd_int(cnt);<br />else lcd_str(&quot;err&quot;);<br />_delay_ms(100);<br />}<br />#else<br />uint8_t bajt;<br />bajt = PickSpi();<br />lcd_init();<br />lcd_locate(0,0);<br />if (bajt)<br />lcd_int(bajt);<br />else lcd_str(&quot;err&quot;);<br />#endif<br /><br />}<br />}<br /><br />#if MASTER == 1<br /><br />void InitSpiSend(void) {<br />//ustawienie kierunku wyjściowego dla linii MOSI, SCK i CS<br />DDRB |= (1&lt;&lt;MOSI)|(1&lt;&lt;SCK)|(1&lt;&lt;CS);<br />// aktywacja  SPI, tryb pracy Master, prędkość zegara Fosc/64<br />SPCR |= (1&lt;&lt;SPE)|(1&lt;&lt;MSTR)|(1&lt;&lt;SPR1);<br />}<br />#else<br /><br />void InitSpiPick(void) {<br />// ustawienie kierunku wyjściowego dla linii MOSI<br />DDRB |= (1&lt;&lt;MISO);<br />// aktywacja  SPI, tryb pracy SLAVE,<br />SPCR |= (1&lt;&lt;SPE);<br />}<br />#endif<br /><br />#if MASTER == 1<br />// definicja  funkcji wysyłającej bajt<br />void SendSpi( uint8_t bajt ) {<br />SPDR = bajt;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />}<br /><br />#else<br />// definicja funkcji odbioru bajy<br />uint8_t PickSpi(void) {<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br />#endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 14 kwi 2013, o 19:53</p><hr />
]]></content>
</entry>
</feed>