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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-19T16:07:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13931&amp;mode</id>
<entry>
<author><name><![CDATA[lamik]]></name></author>
<updated>2015-12-19T16:07:13+01:00</updated>
<published>2015-12-19T16:07:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13931&amp;p=148432#p148432</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13931&amp;p=148432#p148432"/>
<title type="html"><![CDATA[Fikuśne SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13931&amp;p=148432#p148432"><![CDATA[
Mam kolejny problem, którego nie mogę rozwiązać od dłuższej chwili i już ręce mi opadają. <br />Pracuję aktualnie z Atmegą 644P i chcę włączyć sprzętową komunikację. Problem polega na tym, że rejestr SPCR nie przyjmuje wartości jaką mu wpisuję. Kod wygląda w tej chwili tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;SPI/SPI.h&quot;<br />#include &quot;OLED_SSD1306/SSD1306.h&quot;<br />#include &quot;RFID_MFRC522/MFRC522.h&quot;<br /><br />extern const uint8_t font5x7&#91;&#93;;<br /><br />int main(void)<br />{<br />ssd1306_ChangeFont(font5x7);<br /><br />ssd1306_init(SSD1306_SWITCHCAPVCC, REFRESH_MIN);<br />ssd1306_cls();<br />ssd1306_display();<br /><br />//InitSPI();<br />DDRB |= (1&lt;&lt;MOSI)|(1&lt;&lt;SCK); //MISO domyslnie wejsciem<br />uint8_t abc = (1&lt;&lt;SPE)|(1&lt;&lt;MSTR)|(1&lt;&lt;SPR1); //dec = 82<br />        //uint8_t abc = 82;<br />SPCR = abc;<br />//MFRC522_Init();<br /><br />while(1)<br />{<br /><br />ssd1306_cls();<br />ssd1306_ChangeTextSize(1);<br />ssd1306_Set_Cursor(0,1);<br />ssd1306_Puts(&quot;RFID test&quot;,1,0);<br />//SendSPI(0xFF);<br /><br />ssd1306_Set_Cursor(0,10);<br /><br />uint8_t tmp = SPCR;<br />ssd1306_Put_int(tmp,1,0);<br />ssd1306_DrawChar(' ',1,0);<br />ssd1306_Put_int(abc,1,0);<br /><br />ssd1306_display();<br />_delay_ms(1000);<br />}<br />}[/syntax]<br /><br />Na wyświetlaczu dostaję informację, że zmienna tmp do której wpisuję wartość rejestru SPCR wynosi 66, czyli wpisane są bity SPE i SPR1. Zmienna abc, którą posiłkuję się do debugowania na LCD ma wartość 82, czyli zawiera &quot;zapalone&quot; bity SPE, MSTR i SPE1. Czy mogę mieć w jakiś sposób uszkodzony mikrokontroler czy coś źle robię?<br /><br />EDIT: Ok, mam. Doczytałem, że domyślny pin SS MUSI być ustawiony na wyjście jeśli chcę użyć trybu Master.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1630">lamik</a> — 19 gru 2015, o 16:07</p><hr />
]]></content>
</entry>
</feed>