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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-19T00:47:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14229&amp;mode</id>
<entry>
<author><name><![CDATA[m72]]></name></author>
<updated>2016-01-19T00:47:17+01:00</updated>
<published>2016-01-19T00:47:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=151024#p151024</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=151024#p151024"/>
<title type="html"><![CDATA[Re: XmegaE5 + czujnik ciśnienia MS5611 - nie mogę odpalić SP]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=151024#p151024"><![CDATA[
Zamówiłem analizator stanów logicznych bo ni cholery nie wyjdę z tego gdzie jest problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12654">m72</a> — 19 sty 2016, o 00:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[daro2020]]></name></author>
<updated>2016-01-18T18:33:47+01:00</updated>
<published>2016-01-18T18:33:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150974#p150974</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150974#p150974"/>
<title type="html"><![CDATA[Re: XmegaE5 + czujnik ciśnienia MS5611 - nie mogę odpalić SP]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150974#p150974"><![CDATA[
Po odebranym bajcie z SPI musisz wyzerować flage IF z SPIC.STATUS. Aby to zrobić musisz odczytać rejestr SPIC.STATUS, a następnie SPIC.DATA - ten mechanizm zeruje IF. Natomniast w Twoim kodzie:<br />[syntax=c]void cmd_reset(void)<br />{<br />csb_lo();<br />spi_send(CMD_RESET);<br /><br />//*******************     TUTAJ IF nadal = 1     *************************<br /><br />_delay_ms(3);<br />csb_hi();<br />}<br /><br />void spi_send(char cmd)<br />{<br />SPIC.DATA=cmd;<br />while(!(SPIC.STATUS &amp; SPI_IF_bm));<br /><br />//*******************     TUTAJ IF = 1     *************************<br /><br />}[/syntax]<br />A pozostawiony IF=1 znaczy tyle, że kolejne wywołanie funkcji spi_send(char cmd) pominie pętlę while w pierwszym obiegu i nawet nie zaczeka na odbiór bajtu z SPI.<br /><br />Uwaga nr2.<br />Złym nawykiem jest załączanie pinu SS w inicjalizacji portu (PIN4 = 0)   <br />[syntax=c]PORTC.OUTCLR    =    PIN7_bm | PIN6_bm | PIN5_bm | PIN4_bm;[/syntax]<br />Czy MODE musi byc w trybie 3? Jeśli nie to zaczynaj od trybu 0.<br />Jeśli to nic nie da sprawdź fizyczne połączenia SPI. Przetestuj czy w ogóle SPI coś nadaje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1608">daro2020</a> — 18 sty 2016, o 18:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[m72]]></name></author>
<updated>2016-01-18T04:36:59+01:00</updated>
<published>2016-01-18T04:36:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150922#p150922</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150922#p150922"/>
<title type="html"><![CDATA[XmegaE5 + czujnik ciśnienia MS5611 - nie mogę odpalić SPI]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14229&amp;p=150922#p150922"><![CDATA[
Czy mógłby mi ktoś pomóc w uruchomieniu SPI na XMedze32E5 ?<br />Próbuję odczytać dane kalibracyjne z czujnika ciśnienia MS5611. Na Xmedze128A3U poniższy kod działa, widać to na obrazku...<br /><a href="https://obrazkiforum.atnel.pl/12654/34486dfaa9c57b0e74bc959498b5b098.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/12654/34486dfaa9c57b0e74bc959498b5b098.png" alt="Obrazek" /></a><br />Podłączenia do E5 zostawiam na tych samych portach i pinach.<br />Częstotliwość zegara też taka sama - 2MHz.<br />Na E5 próbowałem ustawiać większe dzielniki prędkości transmisji ale nic to nie daje. <br />W wyniku na terminalu dostaję dane kalibracujne:<br />65536<br />65536<br />65536<br />65536<br />65536<br />65536<br />65536<br />65536<br />Czy procki Xmegi z serii E5 mają jaką inną, nietypową konfigurację SPI o której trzeba wiedzieć ? Coś w stylu tajmerów - na E5 są dodatkowe - T4/T5. <br /><br /><br />Poniżej zamieszczam wydzielony z głównego programu kawałek kodu odpowiedzialny za odczyt danych przez SPI.(sprawdzony, działa)<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &quot;usart.h&quot;<br /><br />#define csb_lo() (PORTC.OUTCLR = PIN4_bm)<br />#define csb_hi() (PORTC.OUTSET = PIN4_bm)<br />#define CMD_RESET 0x1E<br />#define CMD_PROM_RD 0xA0<br /><br />void cmd_reset(void);<br />void spi_send(char cmd);<br />unsigned int cmd_prom(char coef_num);<br /><br />void cmd_reset(void)<br />{<br />csb_lo();<br />spi_send(CMD_RESET);<br />_delay_ms(3);<br />csb_hi();<br />}<br />void spi_send(char cmd)<br />{<br />SPIC.DATA=cmd;<br />while(!(SPIC.STATUS &amp; SPI_IF_bm));<br />}<br /><br />unsigned int cmd_prom(char coef_num)<br />{<br />unsigned int ret;<br />unsigned int rC=0;<br />csb_lo();<br />spi_send(CMD_PROM_RD+coef_num*2); <br />spi_send(0x00);<br />ret=SPIC.DATA;<br />rC=256*ret;<br />spi_send(0x00);<br />ret=SPIC.DATA;<br />rC=rC+ret;<br />csb_hi();<br />return rC;<br />}<br /><br /><br />int main(void)<br />{<br />   int i; <br />   unsigned int C&#91;8&#93;;<br />   char bufor&#91;10&#93;;<br />   USART_init();<br />   <br />/*------------------konfiguracja SPI---------------------*/<br />PORTC.DIRSET    =    PIN4_bm | PIN5_bm | PIN7_bm; // wyjścia SPI<br />PORTC.DIRCLR    =    PIN6_bm;                     // wejście SPI<br />PORTC.OUTCLR    =    PIN7_bm | PIN6_bm | PIN5_bm | PIN4_bm;<br />SPIC.CTRL       =    SPI_ENABLE_bm|               // włączenie SPI<br />SPI_MASTER_bm|               // tryb master<br />SPI_MODE_3_gc|               // tryb 3<br />SPI_PRESCALER_DIV4_gc;<br /><br />cmd_reset();<br />for (i=0;i&lt;8;i++){ C&#91;i&#93;=cmd_prom(i);<br /><br /><br />ltoa(C&#91;i&#93;,bufor,10);<br />char wyjscie_rs&#91;20&#93;=&quot; &quot;;<br />strcat(wyjscie_rs,bufor);<br />USART_send(&amp;USARTD0, wyjscie_rs);<br />USART_send(&amp;USARTD0, &quot;\n\r&quot;);<br />}<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12654">m72</a> — 18 sty 2016, o 04:36</p><hr />
]]></content>
</entry>
</feed>