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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-10-30T20:41:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=5942&amp;mode</id>
<entry>
<author><name><![CDATA[roland12]]></name></author>
<updated>2018-10-30T20:41:15+01:00</updated>
<published>2018-10-30T20:41:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=213184#p213184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=213184#p213184"/>
<title type="html"><![CDATA[Re: termopara]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=213184#p213184"><![CDATA[
Witam. Chciałbym wznowić wątek bo mam ten sam problem.<br /><br />Podłączenie układu MAX6675 jest takie jak opisane w pliku nagłówkowym.<br />Problem polega na tym, że podczas odczytu program zatrzmuje się na pętli while <br />[syntax=c]while( !(SPSR &amp; (1&lt;&lt;SPIF)) );[/syntax]<br />tak jak by nie mógł się skomunikować z układem max6675. <br />Czytałem już note z max-a i SPI Atmel i według mnie SPI jest dobrze skonfigurowane. Dodam, że pracuje to na Atmega32 z kwarcem 12Mhz. FuseBity to FF CF. Zasilanie 5V.<br />Sprzętowo raczej jest wszystko ok. <br />Bardzo proszę o wskazówki co jeszcze sprawdzić, bo mi już jest brak pomysłów. Dziękuję.<br /><br />[syntax=c]//Plik rz_max6675.h<br />/* hardware SPI */<br />#define MAX_MISO PB6//   &lt;---- SO MAX6675<br />#define MAX_SCK PB7//   &lt;---- SCK MAX6675<br />#define MAX_CS PB4// &lt;---- CS MAX6675 podciągnięty rezystorem 10K do Vcc aby nie zakłócał się z programatorem<br /><br />#define MAX_CS_LO PORTB &amp;= ~(1&lt;&lt;MAX_CS)<br />#define MAX_CS_HI PORTB |= (1&lt;&lt;MAX_CS)<br /><br />#define MAX_SCK_LO PORTB &amp;= ~(1&lt;&lt;MAX_SCK)<br />#define MAX_SCK_HI PORTB |= (1&lt;&lt;MAX_SCK)<br /><br />void InitSpi(void);/* inicjalizacja sprzętowego SPI */<br />uint16_t readmax6675(uint8_t chip);[/syntax]<br /><br />[syntax=c]//Plik &quot;rz_max6675.c&quot;<br /><br />void InitSpi(void) {<br />/* ustawienie kierunku wyjściowego dla linii MOSI, SCK i CS */<br />DDRB |= (1&lt;&lt;MAX_SCK)|(1&lt;&lt;MAX_CS) | (1&lt;&lt;5);<br /><br />MAX_CS_HI;<br /><br />/* aktywacja  SPI, tryb pracy Master, prędkość zegara Fosc/4 */<br />SPCR |= (1&lt;&lt;SPE) | (1&lt;&lt;MSTR) ;<br />}<br /><br />uint8_t readSPI(void){<br /><br />SPDR = 0;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br /><br />uint16_t readmax6675(uint8_t chip){<br /><br />uint16_t measure;<br /><br />MAX_CS_LO;<br /><br />_delay_us(1);<br />measure = readSPI() &lt;&lt; 8;<br />measure |= readSPI();<br /><br />MAX_CS_HI;<br /><br />return measure;<br /><br />}[/syntax]<br /><br />[syntax=c]// main.c<br />#include &quot;RZ_MAX6675/rz_max6675.h&quot;<br /><br />#define LED1 (1&lt;&lt;PB0)<br />#define LED1_TOG PORTB ^= LED1;<br /><br />uint16_t degree;<br />uint8_t decim;<br />uint16_t measure;<br /><br /><br /><br /><br />int main(void)<br />{<br />DDRB |= LED1;<br />PORTB |= LED1;<br /><br />measure = readmax6675(0);   <br /><br /><br />_delay_ms(1000);<br />LED1_TOG;<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14050">roland12</a> — 30 paź 2018, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gronoarona]]></name></author>
<updated>2014-02-11T14:28:43+01:00</updated>
<published>2014-02-11T14:28:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69874#p69874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69874#p69874"/>
<title type="html"><![CDATA[Re: termopara]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69874#p69874"><![CDATA[
wielkie dzięki poczytałem w międzyczasie o spi i wygląda na to że masz rację<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1598">gronoarona</a> — 11 lut 2014, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-02-11T14:15:10+01:00</updated>
<published>2014-02-11T14:15:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69872#p69872</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69872#p69872"/>
<title type="html"><![CDATA[Re: termopara]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69872#p69872"><![CDATA[
Może się mylę (to niech mnie ktoś poprawi) ale chcąc odebrać coś po SPI to trzeba coś wysłać. Nawet wtedy jeśli urządzenie slave nie ma możliwości odbioru danych. <br />Bo wg noty wpisanie danych do rejestru SPDR rozpoczyna transmisję.<br /><br />Czyli w funkcji odbiorczej dodaj wysyłanie danych. Spróbuj tak<br />[syntax=c]uint16_t temperature(void){<br />        uint16_t tmep;<br />        SS_LOV;<br />        SPDR = 0;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />        tmep=SPDR;<br />        tmep&lt;&lt;=8;<br /><br />        SPDR = 0;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />        tmep+=SPDR;<br /> <br />        SS_HI;<br />        return tmep;<br />}[/syntax]<br /><br />W tych liniach też miałeś błąd<br />[syntax=c]tmep=SPSR;<br /> tmep+=SPSR;[/syntax]<br />powinno być<br />[syntax=c]tmep=SPDR;<br /> tmep+=SPDR;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 11 lut 2014, o 14:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gronoarona]]></name></author>
<updated>2014-02-11T12:41:33+01:00</updated>
<published>2014-02-11T12:41:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69850#p69850</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69850#p69850"/>
<title type="html"><![CDATA[termopara]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5942&amp;p=69850#p69850"><![CDATA[
Witam <br /><br />buduję termometr oparty na termoparze i module MAX6675 <br />całość komunikuję z atmegą8 przez sprzętowe SPI <br /><br />zgodnie z notą <!-- m --><a class="postlink" href="http://www.adafruit.com/datasheets/MAX6675.pdf" >http://www.adafruit.com/datasheets/MAX6675.pdf</a><!-- m --><br /><br />obsługa SPI wygląda tak:<br /><br />[syntax=c]void SPI_init(void){<br /><br />DDRB|= SCK | SS;<br />DDRB&amp;= ~ MISO;// tego chyba nie potrzeba zgodnie z tym co było napisane w niebieskiej książce <br />SCK_LOV;           // tego chyba też nie potrzeba bo spi jest w stanie niskim zgodnie z ustawieniami spi<br />SS_HI;<br />SPCR|=( (1&lt;&lt;SPE) | (1&lt;&lt;MSTR)| (1&lt;&lt;SPR1) | (1&lt;&lt;SPR0) ); <br /><br />}<br /><br />a funkcja odbioru wygląda tak:<br /><br />uint16_t temperature(void){<br />uint16_t tmep;<br />SS_LOV;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />tmep=SPSR;<br />tmep&lt;&lt;=8;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />tmep+=SPSR;<br /><br />SS_HI;<br />return tmep;<br />}[/syntax]<br />wydaje mi się że wszystko jest ok ale nie dostaję żadnych danych z spi.<br /><br />Chcę żeby ktoś sprawdził ten kod i powiedział mi czy odbiór 2 bajtów przez spi jest poprawny i czy sam odbiór danych pokrywa się z ramą pokazaną w dataset.<br /><br />z góry dzięki<br /><br /><span style="color: #FF0000">Masz już dużą liczbę postów i chyba słyszałeś że kody wklejamy przez syntax=c?? Różowo-zielony (czyli sraczkowy) J. </span><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />co do wklejania kodów to masz rację zwyczajnie o tym zapomniałem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1598">gronoarona</a> — 11 lut 2014, o 12:41</p><hr />
]]></content>
</entry>
</feed>