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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-26T18:20:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11170&amp;mode</id>
<entry>
<author><name><![CDATA[=Mort=]]></name></author>
<updated>2015-03-26T18:20:04+01:00</updated>
<published>2015-03-26T18:20:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124704#p124704</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124704#p124704"/>
<title type="html"><![CDATA[Re: Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124704#p124704"><![CDATA[
Faktycznie, kompletnie nie pomyślałem o tym. Trochę na szybko składałem układ. Przy okazji sprawdzę połączenia. Na szczęście nic się nie zjarało. Bo zgodnie z datasheet na wyjściu mam 2,48V czyli połowę napięcia na wejściu.<br /><br />Sprawdziłem połączenia: miałem połączone wyjście MOSI z uC do MISO w potencjometrze, a MISO do MOSI. Zmieniłem na MISO -&gt;MISO i MOSI -&gt; MOSI. Do napięcia dla PA1 i PA0 dałem rezystorki 2,2k. Zasialnie układu jest przez rezystor 10k i cewkę oraz kondensator 100nF, zgodnie z zaleceniami.<br /><br />Teraz przy pomiarze napięcia na wyjściu z potencjometru jest 0V, więc nie wiem czy zadziałał kod zerujący potencjometr i nie działają polecenia przycisków czy może te rezystory są za duże.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6052">=Mort=</a> — 26 mar 2015, o 18:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2015-03-25T16:34:01+01:00</updated>
<published>2015-03-25T16:34:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124600#p124600</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124600#p124600"/>
<title type="html"><![CDATA[Re: Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124600#p124600"><![CDATA[
Witam<br />Nie wiem czy dokładnie przeczytaś Datasheeta ? ale na str.5 w tabeli napisano iż maksymalny prąd pomiędzy pinami A lub B do W nie może przekraczać 2.5mA jeżeli puściłeś większy to istnieje szansa iż go zjarałeś , jeżeli nie to daj jakiś rezystor od zasilania potka to pinu np.A tak aby nie przekroczyć 2.5mA.<br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 25 mar 2015, o 16:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[=Mort=]]></name></author>
<updated>2015-03-25T09:34:35+01:00</updated>
<published>2015-03-25T09:34:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124566#p124566</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124566#p124566"/>
<title type="html"><![CDATA[Re: Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124566#p124566"><![CDATA[
Dziękuje kompletnie nie zwróciłem na to uwagi. Podczepiłem oba przyciski pod PD6 i PD7 i zmieniłem fragmenty kodu na:<br /><br />[syntax=c]//definicje przycisków<br />#define swt_next (1&lt;&lt;PD6)<br />#define swt_prev (1&lt;&lt;PD7)<br /><br />void klawisze_start(void)<br />{<br />DDRD &amp;= ~(swt_next | swt_prev); //ustawienie pinow klawiszy jako wejscia<br />PORTD |= swt_next | swt_prev; //podciągnięcie pinow pod VCC[/syntax]<br /><br /><br />Niestety nie rozwiązuje to problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6052">=Mort=</a> — 25 mar 2015, o 09:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-03-25T07:05:36+01:00</updated>
<published>2015-03-25T07:05:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124558#p124558</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124558#p124558"/>
<title type="html"><![CDATA[Re: Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124558#p124558"><![CDATA[
Witam<br />Zdajesz sobie sprawę, że choć w define masz różne porty dla pinów<br />[syntax=c]#define swt_next (1&lt;&lt;PD7)<br />#define swt_prev (1&lt;&lt;PB0)[/syntax]<br />to i tak kompilujesz pod jeden port:<br />[syntax=c]void klawisze_start(void)<br />{<br />        DDRC &amp;= ~(swt_next | swt_prev); //ustawienie pinow klawiszy jako wejscia<br />       PORTC |= swt_next | swt_prev; //podciągnięcie pinow pod VCC[/syntax]<br />... i na dodatek różny od tych z define'ów<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 25 mar 2015, o 07:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2015-03-25T00:24:53+01:00</updated>
<published>2015-03-25T00:24:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124551#p124551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124551#p124551"/>
<title type="html"><![CDATA[Re: Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124551#p124551"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 25 mar 2015, o 00:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[=Mort=]]></name></author>
<updated>2015-03-25T00:22:44+01:00</updated>
<published>2015-03-25T00:22:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124550#p124550</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124550#p124550"/>
<title type="html"><![CDATA[Sterowanie cyfrowym potencjometrem MCP4261]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11170&amp;p=124550#p124550"><![CDATA[
Witam serdecznie. Zwracam się do forumowiczów z prośbą o pomoc w napisaniu programu sterującego pracą potencjometru cyfrowego.<br /><br />Napisałem sobie kod, później wielokrotnie go zmieniałem i trochę rozbudowałem, żeby móc np. za pomocą przycisków sterować potencjometrem. Chciałem w ten sposób sprawdzić czy będzie działać. Kod niby się kompiluje, wgrywa itp., ale potencjometr na to się wypina i podaję jedną wartość. Nie wiem w czym problem. Pewnie czegoś nie rozumiem ....<br /><br />Kod główny:<br />[syntax=c]#include &quot;SPIADC.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br />uint8_t POT1&#91;8&#93;={0,0,0,1,0,0,0,1};//00010001<br />uint8_t POT2&#91;8&#93;={0,0,0,1,0,0,1,0};    //00010010<br />uint8_t POT12=19; // powinno być 00010011 &lt;- ale to chyba to samo ?<br />uint8_t Pot1_nast&#91;&#93;={0,0,0,0,0,0,0,0}; // teoretycznie ma być 8 zer, ale to chyba to samo<br />uint8_t Pot2_nast&#91;&#93;={0,0,0,0,0,0,0,0};<br />uint8_t *wsk;<br />uint8_t k=0;<br />int main()<br />{<br />klawisze_start();<br />InitSpi();<br /><br /><br />while(1)<br />{<br /><br />if (swt_on(swt_next))<br />{<br />wsk = &amp;Pot1_nast&#91;k&#93;;<br />*wsk += 1;<br />k ++;<br />if (k&gt;7)<br />{<br />k=7;<br />*wsk = 1;<br />}<br /><br />PORTB &amp;= ~(1&lt;&lt;CS);//wyzerowanie CS sygnał rozpoczęcia transmisji<br />for (uint8_t i=0; i&lt;8; i++)<br />{<br />wsk = &amp;POT1&#91;i&#93;;<br />uint8_t data= *wsk;<br />SendSpi(data); //wysyłanie komendy dla POT1<br />}<br /><br />for (uint8_t i=0; i&lt;8; i++) // przesłanie nastaw potencjometru<br />{<br />wsk = &amp;Pot1_nast&#91;i&#93;;<br />uint8_t data= *wsk;<br />SendSpi(data);<br />}<br />PORTB = (1&lt;&lt;CS);// port CS na 1, koniec transmisji<br />}<br /><br /><br />if (swt_on(swt_prev))<br />{<br /><br />wsk = &amp;Pot1_nast&#91;k&#93;;<br />*wsk -= 1;<br />k --;<br />if (k&lt;0)<br />{<br />k=0;<br />*wsk = 0;<br />}<br /><br />PORTB &amp;= ~(1&lt;&lt;CS);//wyzerowanie CS sygnał rozpoczęcia transmisji<br />for (uint8_t i=0; i&lt;8; i++)<br />{<br />wsk = &amp;POT1&#91;i&#93;;<br />uint8_t data= *wsk;<br />SendSpi(data); //wysyłanie komendy dla POT1<br />}<br /><br />for (uint8_t i=0; i&lt;8; i++) // przesłanie nastaw potencjometru<br />{<br />wsk = &amp;Pot1_nast&#91;i&#93;;<br />uint8_t data= *wsk;<br />SendSpi(data);<br />}<br />PORTB = (1&lt;&lt;CS);// port CS na 1, koniec transmisji<br />}<br />}<br /><br />}[/syntax]<br /><br />tutaj kod drugiego pliku - pomocniczego:[syntax=c]#ifndef SPIADC_H_<br />#define SPIADC_H_<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define MOSI PB3<br />#define MISO PB4<br />#define SCK PB5<br />#define CS PB2<br /><br />void InitSpi(void)<br />{<br />//ustawienie kierunku wyjsciowego dla lini MOSI, SCK i CS (SS)<br />DDRB |= (1&lt;&lt;MOSI) | (1&lt;&lt;SCK) | (1&lt;&lt;CS);  // CS teoretycznie moze byc jako &quot;wejscie&quot;, ale to może prowadzić do problemów<br />//aktywacja SPI, tryb pracy Master, predkosc zegara Fosc/64<br />SPCR |= (1&lt;&lt;SPE) | (1&lt;&lt;MSTR) | (1&lt;&lt;SPR1);<br />}<br /><br />//funkcja odpowiadająca za przesył danych w obie strony<br /><br />void SendSpi( uint8_t bajt ) {<br />SPDR = bajt;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />}<br /><br />//definicje przycisków<br />#define swt_next (1&lt;&lt;PD7)<br />#define swt_prev (1&lt;&lt;PB0)<br /><br /><br />void klawisze_start(void)<br />{<br />DDRC &amp;= ~(swt_next | swt_prev); //ustawienie pinow klawiszy jako wejscia<br />PORTC |= swt_next | swt_prev; //podciągnięcie pinow pod VCC<br /><br />}<br /><br /><br />uint8_t swt_on(uint8_t swt)<br />{<br />if (! (PINC &amp; swt))  //jesli klawisz wcisniety<br />{<br />_delay_ms(80);  //poczekaj 80 ms i sprawdz jeszcze raz - zwloka na drgania<br />if ( ! (PINC &amp; swt))<br />return 1;<br />}<br />return 0;<br />}<br /><br /><br />#endif /* SPI_H_ */[/syntax]<br /><br />Staram się wszystko pisać w oparciu o informacje w BB w datasheet i na forum (forach).<br />Proszę o wskazówki. <br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6052">=Mort=</a> — 25 mar 2015, o 00:22</p><hr />
]]></content>
</entry>
</feed>