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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-21T18:20:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=9255&amp;mode</id>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-21T18:20:42+01:00</updated>
<published>2014-11-21T18:20:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=105331#p105331</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=105331#p105331"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=105331#p105331"><![CDATA[
Zgodnie z obietnicą wrzucam kod odpalenia malucha jakim jest przetwornik max189. Wszystko pięknie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Problemem okazała się  prawdopodobnie zbyt mała pamięć mikroprocesora 328P dlatego musiałem wyłączyć całkowicie procedurę obsługi przerwania od timera . Mój projekt przeniosłem natomiast na Atmege32 i tam już nie miał problemów z niczym <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Oprócz tego dodatkowo zmieniłem rozmiar zmiennej value na uint16_t w funkcji &quot; uart_putint&quot; w buforze cyklicznym(kod pana Mirka). Kodu nie mogę wrzucić, dlatego zachęcam do zakupu niebieskiej książki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Poniżej wrzucam kod który działa na procesorze Atmega328P(smacznego! <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> )<br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #include &lt;util/delay.h&gt;<br /><br />    #include &quot;MKUART/mkuart.h&quot;<br />    #include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br />    #define LED_PIN (1&lt;&lt;PB1)<br />    #define LED_TED PORTB^= LED_PIN<br /><br />    #define VREF_VCC (1&lt;&lt;REFS0)<br />    #define VREF_128 (1&lt;&lt;REFS1)<br /><br />    #define SS PB2<br />    #define SCLK PB5<br />    #define MOSI PB3<br />    #define MISO PB4<br /><br />   void spim_init(void);<br /><br />   uint16_t get_adc(uint16_t adata);<br /><br />   uint16_t volatile ekg;<br />//-----------------------------------------------------------------------<br />    int main(void) {<br /><br />    DDRB |= LED_PIN;<br />//-------------------------------------SPI-------------------------------<br />    spim_init();<br />//-----------------------------------------------------------------------<br />       USART_Init(__UBRR0); //inicjalizacja UART<br /><br />       sei();<br />//-----------------------------------------------------------------------<br />         while (1) {<br />                       ekg = get_adc(0x0F);<br />                   uart_putint(ekg,10);<br />                       uart_putc('\r');<br />                       uart_putc('\n');<br />                       _delay_ms(3);<br />                       LED_TED;<br />            }<br />    }<br />//----------------------------inicjalizacja SPI-------------------------------------<br />    void spim_init(void)<br />    {<br />    // Ustawienie portu B jako wyjcia dla MOSI, SCLK i SS<br />    DDRB |= (1&lt;&lt;MOSI) | (1&lt;&lt;SCLK) | (1&lt;&lt;SS);<br />    // ustawienie MOSI jako wejscie<br />    DDRB &amp;= ~(1&lt;&lt;MISO);<br />    // Povoleni SPI, SPI Master, SPI CLK XTAL/64, LSB First<br />    SPCR |= (1&lt;&lt;SPE)|(1&lt;&lt;MSTR)|(1&lt;&lt;SPR1);<br />    //Ustaw termin rejestracji SPI ( SPCR ), CPHA i CPOL w dzienniku 0<br />    SPCR &amp;= ~ (1&lt;&lt;CPOL); SPCR &amp;= ~ (1&lt;&lt;CPHA);<br />    //ustawienie jako rejestr wyjciowy portu B, SS stan wy wysoki<br />    PORTB |= (1&lt;&lt;SS);<br />    }<br />//--------------Funkcja odbierająca/wysyłająca bajt do/z MAX198--------------------------<br /><br />   uint16_t get_adc(uint16_t adata)<br />     {<br />     static uint16_t temp=0;<br /><br />       PORTB &amp;= ~(1&lt;&lt;SS);// SET CS do 0 (włącza ADC)<br />       _delay_us(10);          //musze poczekać przynajmniej 8,5us zgodnie z notą katalogową<br />        SPDR = adata;           // odebrane dane ładowane są do zmiennej temp<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF))); // Wyślij 1 bajt przez SPI HW i czekaj na TX<br />        temp = SPDR &amp; 0x7F;//temp and mask 7F (01111111)<br />        temp &lt;&lt;= 8;// przesuń w lewo zmiennę temp<br />        SPDR = adata;// wprowadza dane do rejestru czytanego przez funkcje get_adc<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));// Wyślij ponownie 1 bajt przez SPI HW i czekaj na TX<br />        temp += SPDR;//dodaje drugą porcje bitów do poprzedniej<br />        temp &gt;&gt;=3;               // przsuwa o 3 miejsca w prawo wartoć rejstru SPDR<br />        PORTB |= (1&lt;&lt;SS);             // SET CS do 1 (wyłącza ADC)<br />        return temp;                  //zwracam zmienną temp<br />     }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 21 lis 2014, o 18:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-18T21:40:55+01:00</updated>
<published>2014-11-18T21:40:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104775#p104775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104775#p104775"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104775#p104775"><![CDATA[
Dzisiaj walczyłem z tym  przetwornikiem w laboratorium i udało się go pięknie uruchomić, program też mam, ale jeszcze mam problem z uartem tzn. z prawidłowym poskładaniem i wysłaniem liczby,  ale jak ogarnę wszystko to od razu wrzucę na forum <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=3425">lucasenior</a> — 18 lis 2014, o 21:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T23:00:03+01:00</updated>
<published>2014-11-15T23:00:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104183#p104183</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104183#p104183"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104183#p104183"><![CDATA[
Ja tylko przesyłam sygnał ekg bezprzewodowo z urządzenia które zbiera sygnał z serca, ale mogę Ci takowy schemat załatwić bo to robił student jako prace inżynierską u tej samej promotorki co ja teraz , to poprosze ją o schemat i pewnie mi da <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Sam też pewnie sobie coś takiego będę chciał zrobić. Jego urządzenie już testowałem na sobie także działa dobrze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />A co do przetwornika  to rzeczywiście może to w ten sposób trzeba go obudzić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Wygrzebałeś to chyba z końca internetu <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />, ale gościowi odpaliło to być może i mi też pójdzie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Próbujemy więc dalej... <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=3425">lucasenior</a> — 15 lis 2014, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2014-11-15T22:40:02+01:00</updated>
<published>2014-11-15T22:40:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104174#p104174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104174#p104174"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104174#p104174"><![CDATA[
Tak przy okazji to jest 12 bitowy ADC to czytamy liczbę int czyli dwa razy trzeba odczytać adc<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />znalazłem coś takiego pewnie Ci pomoże.<br /><a href="http://www.edaboard.com/thread278582.html"  class="postlink">http://www.edaboard.com/thread278582.html</a><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />  zresztą zmyślnie zrobione<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />....tak przy okazji robisz EKG ? Jakiego użyłeś wzmacniacza pomiarowego ? AD630 może? Masz jakiś schemacik ciekawy?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 15 lis 2014, o 22:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T22:33:32+01:00</updated>
<published>2014-11-15T22:33:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104171#p104171</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104171#p104171"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104171#p104171"><![CDATA[
Dzięki Krauser to dla mnie jak prezent na gwiazdke bo pewnie bym jeszcze chwile pobłądził jeżeli chodzi o kod <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Niestety to chyba wina przetwornika, po moich nie małych testach już pewnie ma dość i nie chce się odezwać. Dzięki wszystkim za pomoc! Jak uda mi się go odpalić to napisze co było źle...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-11-15T17:31:28+01:00</updated>
<published>2014-11-15T17:31:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104120#p104120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104120#p104120"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104120#p104120"><![CDATA[
Tak to powinno wyglądać:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_TED PORTB^= LED_PIN<br /><br />#define VREF_VCC (1&lt;&lt;REFS0)<br />#define VREF_128 (1&lt;&lt;REFS1)<br /><br />#define CS PB2<br />#define SCK PB5<br />#define MOSI PB3<br /><br /><br />volatile uint8_t flaga_odczyt;<br /><br />int main(void) {<br /><br />uint8_t ekg;<br /><br />DDRB |= LED_PIN; // Ustawienie bitu LED jako wyjścia<br />//-------------------------------------SPI----------------------------------------<br /><br />//ustawienie kierunku wyjciowego dla lini SCK , MOSI, CS<br />DDRB |= (1 &lt;&lt; SCK) | (1 &lt;&lt; CS) | (1 &lt;&lt; MOSI);<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 />//----------------------------Inicjalizacja timera 1------------------------------<br /><br />TCCR1B |= (1 &lt;&lt; WGM12); //(1 &lt;&lt; WGM10)| // Ustawia timer w tryb CTC<br />OCR1A = 86; // Ustawienie przerwania na 500Hz(86)<br />TCCR1B |= (1 &lt;&lt; CS12); //| (1 &lt;&lt; CS11)); // Ustawia timer z preskalerem Fcpu/256<br />TIMSK1 |= (1 &lt;&lt; OCIE1A); // Zezwolenie na przerwania dla CTC<br /><br />//---------------------------------------------------------------------------------<br />USART_Init(__UBRR0); //inicjalizacja UART<br /><br />sei();<br />// Zezwolenie globalne na przerwania<br /><br />while (1) {<br />if(flaga_odczyt)<br />{<br />ekg = MasterSPI(0);<br />uart_putint(ekg, 10);<br />uart_putc('\r'); // wyślij znak CR (enter)<br />uart_putc('\n'); // wyślij znak LF (nowa linia)<br /><br />flaga_odczyt = 0;<br />}<br />}<br />}<br /><br />//-------------------Odczyt danych z częstotliwocią 500Hz------------------------------<br />ISR(TIMER1_COMPA_vect) {<br />flaga_odczyt = 1;<br />}<br /><br />//-------------------------------Funkcja odbierająca/wysyłająca bajt--------------------------<br /><br />uint8_t MasterSPI(uint8_t bajt) {<br />SPDR = bajt;<br />while (!(SPSR &amp; (1 &lt;&lt; SPIF)))<br />;<br />return SPDR;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 lis 2014, o 17:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T17:21:27+01:00</updated>
<published>2014-11-15T17:21:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104119#p104119</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104119#p104119"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104119#p104119"><![CDATA[
No układ jest ciekawy, spec z uczelni mi go poradził <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .Ok później będę jeszcze walczył bo mi też coś wypadło a narazie dzięki <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=3425">lucasenior</a> — 15 lis 2014, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2014-11-15T17:02:18+01:00</updated>
<published>2014-11-15T17:02:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104115#p104115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104115#p104115"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104115#p104115"><![CDATA[
w datasheet patrz strona 6 i strona 10 tam jest wszystko opisane co i ja trzeba zrobic aby odczytać dane (bardzo ciekawy układ ...na marginesie)<br />napięcie jest jake zasilasz ale szybko się zmienia i woltomierz czasami pokazuje bzdury.<br />muszę lecieć póxniej popartrzę .<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 15 lis 2014, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T16:45:21+01:00</updated>
<published>2014-11-15T16:45:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104112#p104112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104112#p104112"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104112#p104112"><![CDATA[
przyjął <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />do giciors:<br />1.Mój przetwornik to max189<br />2.Niestety nie mam oscyloskopu ani analizatora sygnałów, a szkoda <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />3.Chce odebrać dane z zewnętrznego przetwornika(w tym przypadku max189) w procku i przesłąć je do przez UART z częstotliwością 500Hz przez BTM222 do komputera <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />..... wiem, że funkcja może wydawać się dziwna, ale już próbuje wszystkiego żeby ruszyło i w penym momęcie pomyślałem, że może to idzie tak, że musi coś wysyłać przez MOSI(puste dane,pin odłączony), żeby mogło coś pobrać przez MISO <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br />4. Spróbuje jeszcze zrobić tak jak ty mówisz, żeby to wszystko podłączyć i próbować dalej(chociaż już i tak próbowałem)<br />5 A jakie wychodzi prawidłowe napięcie sygnału SCK na oscyloskopie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-11-15T16:33:44+01:00</updated>
<published>2014-11-15T16:33:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104110#p104110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104110#p104110"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104110#p104110"><![CDATA[
<div class="quotetitle">lucasenior napisał(a):</div><div class="quotecontent"><br />[syntax=c]ISR(TIMER1_COMPA_vect) {<br /> <br /><br /> <br />uint8_t MasterSPI(uint8_t bajt){<br />        bajt=SPDR;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />        return SPDR;<br />        }<br />}[/syntax]<br /></div><br /><br />Definicja funkcji wewnątrz funkcji?! Kompilator to w ogóle przyjął?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 15 lis 2014, o 16:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2014-11-15T16:30:09+01:00</updated>
<published>2014-11-15T16:30:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104109#p104109</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104109#p104109"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104109#p104109"><![CDATA[
Witam<br />Jaki masz przetwornik ? Z tego co zawsze mi się wydawało to aby coś wrzucić do czegoś na SPI to CS lub jak kto woli SS powinien być w stanie niskim. Nie wiem do końca , ale moim zdaniem nie sprawdzisz czy sygnał jest czy go nie ma tak sobie np. woltomierzem, tylko oscyloskopem lub analizatorem stanów. Podłącz wszystko na stykówce jak masz w THT i sprawdź. Ja używam SPI i nie ma problemu, nigdy nie odpalałem SPI na sucho.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />przy okzji co ty chcesz wysyłać do przetwornika adc? Chyba raczej chcesz odczytywać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 15 lis 2014, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T16:19:56+01:00</updated>
<published>2014-11-15T16:19:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104108#p104108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104108#p104108"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104108#p104108"><![CDATA[
Zmieniłem tak jak mi poradziłeś i niestety wciąż nie działa.<br />Ogólnie chodzi mi o coś takiego, żeby wysłać przez UART dane z zewnętrznego przetwornika ADC z częstotliwością równą 500 Hz dlatego stosuje tutaj przerwania. Narazie męcze się z komunikacją z zewnętrznym ADC, ale wydaje mi sie, że nie byłoby problemu gdyby nie fakt, że nie widzi mi wogóle sygnału SCK po skonfigurowaniu SPI na procku. Troche zmieszałem się też jeżeli chodzi o PIN SS bo już wkońcu nie wiem jak ma być ustawiony żeby odebrać dane. W nocie Przetwornika jest napisane że musi być stan niski z kolei na procesorze ma być w stanie wysokim i nie wiem już czy to trzeba łączyć żeby współgrało jakość czy jednak oddzielnie poprowadzić do różnych potencjałów.  Chciałbym, żeby program wyglądał mniej wiecej tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_TED PORTB^= LED_PIN<br /><br />#define VREF_VCC (1&lt;&lt;REFS0)<br />#define VREF_128 (1&lt;&lt;REFS1)<br /><br />//#define CS (1&lt;&lt;PB2)<br />//#define CS_HIGHT PORTB |= CS<br />#define CS PB2<br />#define SCK PB5<br />#define MOSI PB3<br />//#define CS  PB2<br /><br />uint8_t ekg;<br />uint8_t volatile bajt;<br /><br />int main (void)<br />{<br />DDRB |= LED_PIN;// Ustawienie bitu LED jako wyjścia<br />//-------------------------------------SPI----------------------------------------<br /><br />//ustawienie kierunku wyjciowego dla lini SCK , MOSI, CS<br />DDRB |= (1&lt;&lt;SCK)|(1&lt;&lt;CS)|(1&lt;&lt;MOSI);<br />//CS_HIGHT;<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 />//----------------------------Inicjalizacja timera 1------------------------------<br /><br />TCCR1B |= (1 &lt;&lt; WGM12);//(1 &lt;&lt; WGM10)| // Ustawia timer w tryb CTC<br />OCR1A = 86; // Ustawienie przerwania na 500Hz(86)<br />TCCR1B |= (1 &lt;&lt; CS12) ;//| (1 &lt;&lt; CS11)); // Ustawia timer z preskalerem Fcpu/256<br />TIMSK1 |= (1 &lt;&lt; OCIE1A); // Zezwolenie na przerwania dla CTC<br /><br />//---------------------------------------------------------------------------------<br />  USART_Init( __UBRR0 );//inicjalizacja UART<br /><br />  sei(); // Zezwolenie globalne na przerwania<br /><br />while(1)<br />{<br />                ekg=bajt;<br />                uart_putint(ekg,10);<br />                uart_putc('\r');// wyślij znak CR (enter)<br />                uart_putc('\n');// wyślij znak LF (nowa linia)<br /><br />}<br />}<br /><br />//-------------------Odczyt danych z częstotliwocią 500Hz------------------------------<br />ISR(TIMER1_COMPA_vect) {<br /><br />//-------------------------------Funkcja odbierająca/wysyłająca bajt--------------------------<br /><br />uint8_t MasterSPI(uint8_t bajt){<br />bajt=SPDR;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />return SPDR;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 16:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-11-15T15:42:16+01:00</updated>
<published>2014-11-15T15:42:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104103#p104103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104103#p104103"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104103#p104103"><![CDATA[
<div class="quotetitle">lucasenior napisał(a):</div><div class="quotecontent"><br />Czy bez podłączenia zewnętrznego przetwornika ADC powinien pojawić się sygnał SCK na pinie procka po prawidłowym skonfigurowaniu SPI w procesorze<br /></div><br />Tak.<br /><br />W pętli while masz teraz poprawnie (chociaż wysyłasz zawsze 0), ale funkcja MasterSPI powinna wyglądać tak:<br />[syntax=c]uint8_t MasterSPI(uint8_t bajt){<br />        SPDR = bajt;<br />        while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />        return SPDR;<br />}[/syntax]<br /><br />Zmienne ekg i bajt są nie wiadomo po co globalne i nie wiadomo dlaczego z modyfikatorem volatile, ale to tak na marginesie, bo nie wiem co planujesz.<br />Jak to cały program to dodaj jeszcze funkcję obsługi przerwania albo usuń linię włączającą przerwanie timera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 lis 2014, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T13:57:50+01:00</updated>
<published>2014-11-15T13:57:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104084#p104084</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104084#p104084"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104084#p104084"><![CDATA[
Też już tak próbowałem i to samo.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />To jest moja pierwsza przygoda z SPI także proszę o wyrozumiałość ;]. Zadam pewnie dziwne pytanie, ale co tam: Czy bez podłączenia zewnętrznego przetwornika ADC powinien pojawić się sygnał SCK na pinie procka po prawidłowym skonfigurowaniu SPI w procesorze, czy dopiero jak wszystko będzie pięknie podłączone wtedy ruszy  ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 13:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szymon12w]]></name></author>
<updated>2014-11-15T13:54:51+01:00</updated>
<published>2014-11-15T13:54:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104083#p104083</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104083#p104083"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104083#p104083"><![CDATA[
Jeśli programujesz za pomocą USBasp, po zaprogramowaniu spróbuj odłączyć programator.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2336">szymon12w</a> — 15 lis 2014, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T13:33:18+01:00</updated>
<published>2014-11-15T13:33:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104078#p104078</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104078#p104078"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104078#p104078"><![CDATA[
Zrobiłem to tak, ale wciąż to samo.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_TED PORTB^= LED_PIN<br /><br />#define VREF_VCC (1&lt;&lt;REFS0)<br />#define VREF_128 (1&lt;&lt;REFS1)<br /><br />#define CS (1&lt;&lt;PB2)<br />#define CS_HIGHT PORTB |= CS<br />#define SCK PB5<br />#define MOSI PB3<br />//#define CS  PB2<br /><br />uint8_t volatile ekg;<br />uint8_t volatile bajt;<br /><br />uint8_t MasterSPI(uint8_t bajt);<br /><br />int main (void)<br />{<br />DDRB |= LED_PIN;// Ustawienie bitu LED jako wyjścia<br />//-------------------------------------SPI----------------------------------------<br /><br />//ustawienie kierunku wyjciowego dla lini SCK , MOSI, CS<br />DDRB |= (1&lt;&lt;SCK)| CS | (1&lt;&lt;MOSI);<br />CS_HIGHT;<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 /><br />//----------------------------Inicjalizacja timera 1------------------------------<br /><br />TCCR1B |= (1 &lt;&lt; WGM12);//(1 &lt;&lt; WGM10)| // Ustawia timer w tryb CTC<br />OCR1A = 86; // Ustawienie przerwania na 500Hz(86)<br />TCCR1B |= (1 &lt;&lt; CS12) ;//| (1 &lt;&lt; CS11)); // Ustawia timer z preskalerem Fcpu/256<br />TIMSK1 |= (1 &lt;&lt; OCIE1A); // Zezwolenie na przerwania dla CTC<br /><br />//---------------------------------------------------------------------------------<br />  USART_Init( __UBRR0 );//inicjalizacja UART<br /><br />  sei(); // Zezwolenie globalne na przerwania<br /><br />while(1)<br />{<br />ekg=MasterSPI(bajt);<br />uart_putint(ekg,10);<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');// wyślij znak LF (nowa linia)<br />LED_TED;<br />}<br />}<br /><br />//-------------------------------Funkcja odbierająca/wysyłająca bajt--------------------------<br /><br />uint8_t MasterSPI(uint8_t bajt){<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />bajt=SPDR;<br />return SPDR;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 13:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szymon12w]]></name></author>
<updated>2014-11-15T12:47:16+01:00</updated>
<published>2014-11-15T12:47:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104069#p104069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104069#p104069"/>
<title type="html"><![CDATA[Re: Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104069#p104069"><![CDATA[
SCK włącza się tylko na czas wysyłania, a nigdzie nie wywołujesz funkcji MasterSPI, masz ją tylko zdefiniowaną.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2336">szymon12w</a> — 15 lis 2014, o 12:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lucasenior]]></name></author>
<updated>2014-11-15T11:47:18+01:00</updated>
<published>2014-11-15T11:47:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104060#p104060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104060#p104060"/>
<title type="html"><![CDATA[Brak sygnału SCK przy komunikacji SPI z zewnętrznym ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9255&amp;p=104060#p104060"><![CDATA[
Problem polega na tym, że po inicjalizacji SPI procesor ATmega328P wogóle nie wysyła sygnału SCK. Poziom napięcia SCK przy obecnych ustawieniach wynosi ok. 135mV. <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_TED PORTB^= LED_PIN<br /><br />#define VREF_VCC (1&lt;&lt;REFS0)<br />#define VREF_128 (1&lt;&lt;REFS1)<br /><br />#define CS (1&lt;&lt;PB2)<br />#define CS_HIGHT PORTB |= CS<br />#define SCK PB5<br />#define MOSI PB3<br />//#define CS  PB2<br /><br />uint8_t volatile ekg;<br />uint8_t volatile bajt;<br /><br /><br />int main (void)<br />{<br />DDRB |= LED_PIN;// Ustawienie bitu LED jako wyjścia<br />//-------------------------------------SPI----------------------------------------<br /><br />//ustawienie kierunku wyjciowego dla lini SCK , MOSI, CS<br />DDRB |= (1&lt;&lt;SCK)| CS | (1&lt;&lt;MOSI);<br />CS_HIGHT;<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 /><br />//----------------------------Inicjalizacja timera 1------------------------------<br /><br />TCCR1B |= (1 &lt;&lt; WGM12);//(1 &lt;&lt; WGM10)| // Ustawia timer w tryb CTC<br />OCR1A = 86; // Ustawienie przerwania na 500Hz(86)<br />TCCR1B |= (1 &lt;&lt; CS12) ;//| (1 &lt;&lt; CS11)); // Ustawia timer z preskalerem Fcpu/256<br />TIMSK1 |= (1 &lt;&lt; OCIE1A); // Zezwolenie na przerwania dla CTC<br /><br />//---------------------------------------------------------------------------------<br />  USART_Init( __UBRR0 );//inicjalizacja UART<br /><br />  sei(); // Zezwolenie globalne na przerwania<br /><br />while(1)<br />{<br />        ekg=bajt;<br />uart_putint(ekg,10);<br />uart_putc('\r');// wyślij znak CR (enter)<br />uart_putc('\n');// wyślij znak LF (nowa linia)<br />_delay_ms(50);<br /> }<br /><br />}<br /><br />//------------------------------Odbiór danych z częstotliwością 500 Hz----------------------------------------------<br />ISR(TIMER1_COMPA_vect) {<br />LED_TED;<br />//-------------------------------Funkcja odbierająca/wysyłająca bajt------------------------------------------------<br /><br />uint8_t MasterSPI(uint8_t bajt){<br />SPDR=bajt;<br />while(!(SPSR &amp; (1&lt;&lt;SPIF)));<br />return SPDR;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3425">lucasenior</a> — 15 lis 2014, o 11:47</p><hr />
]]></content>
</entry>
</feed>