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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-02T12:35:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2469&amp;mode</id>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2013-03-02T12:35:34+01:00</updated>
<published>2013-03-02T12:35:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29607#p29607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29607#p29607"/>
<title type="html"><![CDATA[Re: SPI ATmega8 --&gt; ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29607#p29607"><![CDATA[
Ok, zmodyfikowałem program dla mastera tak żeby w głównej pętli wysyłał co chwile bajt i zwiększał go o jeden i znowu wysyłał. <br />[syntax=c]/*<br />/* ATmega8 pracująca jako MASTER */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define MOSI PB3<br />#define SCK PB5<br />#define SS PB2<br /><br />void SPI_MASTER_init(void);<br />void SPI_send (uint8_t bajt);<br />uint8_t SPI_receive(void);<br /><br />int main(void)<br />{<br />SPI_MASTER_init();<br />uint8_t wysylany_bajt = 5;<br /><br />while(1)<br />{<br />SPI_send(wysylany_bajt);<br />wysylany_bajt++;<br />_delay_ms(500);<br />}<br />}<br /><br />void SPI_MASTER_init(void){<br />DDRB |= (1&lt;&lt;MOSI)|(1&lt;&lt;SCK)|(1&lt;&lt;SS);// MISO przy ustawianiu bitu SPE jest automatycznie ust. jako wejscie<br />SPCR |= (1&lt;&lt;SPE);// SPI Enable<br />SPCR |= (1&lt;&lt;MSTR);// Tryb nadrzędny - MASTER<br />SPCR |= (1&lt;&lt;SPR1)|(1&lt;&lt;SPR0);// czestotliwosc zegara = Fosc / 128<br />}<br /><br />uint8_t SPI_receive(void){<br />while( !(SPSR |= (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br /><br /><br /><br /><br />[/syntax]<br /><br />Ale dalej głupoty wyświetla<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=508">The River</a> — 2 mar 2013, o 12:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2013-03-01T20:38:45+01:00</updated>
<published>2013-03-01T20:38:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29578#p29578</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29578#p29578"/>
<title type="html"><![CDATA[Re: SPI ATmega8 --&gt; ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29578#p29578"><![CDATA[
Według mnie to zmień obsługę klawiszy bo wydaje mi się że one mieszają a najlepiej to zrobić według opisu jaki mirekk zamieścił u siebie na blogu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 1 mar 2013, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[The River]]></name></author>
<updated>2013-03-01T20:26:51+01:00</updated>
<published>2013-03-01T20:26:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29574#p29574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29574#p29574"/>
<title type="html"><![CDATA[SPI ATmega8 --&gt; ATmega32]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2469&amp;p=29574#p29574"><![CDATA[
Witam<br /><br />Bawie się sprzętowym SPI i napotkałem mały problem z którym męczę się już drugi dzień. Mianowicie założenie jest takie, ATmega8 pracująca jako master ma przesyłać jeden bajt do ATmegi32 pracującej jako SLAVE i ten bajt ląduje na wyświetlaczu LCD. Schematu nie ma co pokazywać bo to kwestia połączenia ze spobą 3 lini i wyświetlacza do A32. Wszystko zrobiłem zgodnie z dokumentacją i książką <strong>Mirka</strong> ale efekt jest taki że na wyświetlaczu co chwile wyświetlają się jakieś losowe liczby z zakresu 0 do 255, zamiast jednej konkretnej, tej którą przesłałem. <br /><br />Kod dla MASTER:<br />[syntax=c]*<br /> * main.c<br /> *<br /> *  Created on: 25-02-2013<br /> *      Author: Karol<br /> */<br /><br />/* ATmega8 pracująca jako MASTER */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define MOSI PB3<br />#define SCK PB5<br />#define SS PB2<br /><br />void SPI_MASTER_init(void);<br />void SPI_send (uint8_t bajt);<br />uint8_t SPI_receive(void);<br />uint8_t klawisz_wcisniety(int numer);<br /><br />int main(void)<br />{<br />DDRD &amp;= ~(1&lt;&lt;PD7);// przycisk<br />PORTD |= (1&lt;&lt;PD7);<br /><br />DDRC |= (1&lt;&lt;PC2);// dioda<br />PORTC |= (1&lt;&lt;PC2);<br /><br />SPI_MASTER_init();<br />SPI_send(0);<br />//uint8_t wysylany_bajt = 55;<br /><br />while(1)<br />{<br />if( klawisz_wcisniety(7))<br />{<br />PORTC &amp;= ~(1&lt;&lt;PC2);<br />SPI_send(55);<br />}<br />else<br />{<br />PORTC |= (1&lt;&lt;PC2);<br />SPI_send(0);<br />}<br />}<br />}<br /><br />void SPI_MASTER_init(void){<br />DDRB |= (1&lt;&lt;MOSI)|(1&lt;&lt;SCK)|(1&lt;&lt;SS);// MISO przy ustawianiu bitu SPE jest automatycznie ust. jako wejscie<br />SPCR |= (1&lt;&lt;SPE);// SPI Enable<br />SPCR |= (1&lt;&lt;MSTR);// Tryb nadrzędny - MASTER<br />SPCR |= (1&lt;&lt;SPR1);// czestotliwosc zegara = Fosc / 64<br />}<br /><br />void SPI_send (uint8_t bajt){<br />SPDR = bajt;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF) ));// czekanie dopóki nie zostanie ust. flaga SPIF<br />}<br />uint8_t SPI_receive(void){<br />while( !(SPSR |= (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br />/*<br /> uint8_t SPI_transfer_byte( uint8_t bajt ){<br /> SPDR = bajt;<br /> while( !(SPSR |= (1&lt;&lt;SPIF)) );<br /> return SPDR;<br /> }<br /> */<br />uint8_t klawisz_wcisniety(int numer)<br />{<br />if( !(PIND &amp; (1&lt;&lt;numer) ))// klawisz wciœniêty ?<br />{<br />_delay_ms(100);// czas drgañ styków<br />if( !(PIND &amp; (1&lt;&lt;numer) ) ) return 1;   // jeœli wciœniêty?  zakoñcz funkcjê - rezultat = 1<br />}<br />return 0;// jeœli nie wciœniêty klawisz, zakoñcz funkcjê, rezultat = 0<br />}<br /><br /><br />[/syntax]<br /><br />Kod dla SLAVE<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 03-01-2013<br /> *      Author: Karol<br /> */<br /><br />/* ATmega32 pracująca jako SLAVE */<br /><br />#include &lt;avr/io.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define MISO PB6<br /><br />void SPI_SLAVE_init(void);<br />uint8_t SPI_receive(void);<br />uint8_t odebrany_bajt;<br /><br />int main(void)<br />{<br />lcd_init();<br />SPI_SLAVE_init();<br />while(1)<br />{<br />//lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;test&quot;);<br /><br />lcd_locate(1,0);<br />odebrany_bajt = SPI_receive();<br />lcd_int(odebrany_bajt);<br />}<br />}<br /><br />void SPI_SLAVE_init(void){<br />DDRB |= (1&lt;&lt;MISO);// MISO jako wyjscie w trybie SLAVE, reszta automatycznie przy ust. SPE jako wejcie<br />SPCR |= (1&lt;&lt;SPE);// SPI enable<br />}<br />uint8_t SPI_receive(void){<br />while( !(SPSR |= (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br /><br />[/syntax]<br /><br />A tak wogóle to nie bardzo rozumiem kiedy SLAVE wie że rozpoczęła się transmisja, z dokumentacji wywnioskowałem że na podstawie zegara, kiedy zacznie się jego nadawanie , pojawi się narastające zbocze to zlicza impulsy i shifter przesuwa bity. Tylko że w tym przypadku, jak ta funkcja pracuje ciągle w pętli głównej programu to jak to się ma do chwili w której MASTER rozpocznie nadawanie. No nie ogarniam tego narazie.<br /><br />I jeszcze taka ciekawostka z serii z Archiwum X czyli bliżej niewyjaśnionego działania kontrolera mianowicie w tym warunku:<br />[syntax=c]if( klawisz_wcisniety(7))<br />{<br />PORTC &amp;= ~(1&lt;&lt;PC2);      // dioda on<br />SPI_send(55);<br />}<br />else<br />{<br />PORTC |= (1&lt;&lt;PC2);       // dioda off<br />SPI_send(0);<br />}[/syntax]<br />Nie zaświeca się dioda podczas przyciśnięcia klawisza 7 na porcie D. <br />A po zakomentowaniu obu lini z SPI_send wszystko działa. Czary mary normalnie. <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=508">The River</a> — 1 mar 2013, o 20:26</p><hr />
]]></content>
</entry>
</feed>