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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-18T13:04:20+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18977&amp;mode</id>
<entry>
<author><name><![CDATA[wojtekr51]]></name></author>
<updated>2017-08-18T13:04:20+01:00</updated>
<published>2017-08-18T13:04:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193567#p193567</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193567#p193567"/>
<title type="html"><![CDATA[Re: Odczyt z ADC - ADS1234]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193567#p193567"><![CDATA[
Z ADS otrzymujemy wartość w kodzie U2 - 24bitową (kod uzupełnień do dwóch), chcemy ją zapisać w kodzie U2 - 32bitowym (typ int32). Najstarsze/nieużywane 8 bitów liczby int32 powinny mieć wartość taką samą jak najstarszy bit liczby 24bitowej. Czyli pierwszy odebrany bit powinien być zapisany na 9 najstarszych bitach int32. Pozostałe bity zapisujesz jak dotychczas. <br />Z tego co widzę na terminalu, to mierzone napięcie było ujemne (te liczby zakodowane w U2 są ujemne). Jak prawidłowo powypełniasz wszystkie bity to wartość będzie ujemna dla ujemnego napięcia i dodatnia dla dodatniego napięcia. I nie przeszkadza nam że liczba zajmuje mniej bitów. Jeżeli tego nie zrobisz to przy ujemnym napięciu będziesz miał misz-masz a nie pomiar. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1760">wojtekr51</a> — 18 sie 2017, o 13:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[faber33]]></name></author>
<updated>2017-08-11T22:26:30+01:00</updated>
<published>2017-08-11T22:26:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193325#p193325</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193325#p193325"/>
<title type="html"><![CDATA[Re: Odczyt z ADC - ADS1234]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193325#p193325"><![CDATA[
Dziękuje za odpowiedź i pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Teraz już niema takich cudów z tymi pomiarami. Mam pytanie jeszcze do co do tego przedstawianie liczby w postaci int32 tutaj nic nie zmienia bo liczba jest &quot;za mała&quot; chyba że sie mylę. W putty to wygląda teraz tak zmieniłem wyświetlanie uart_putilonglit na 16 czyli hex przy braku obciążenia czujnika ...<br /><br /><a href="https://obrazkiforum.atnel.pl/976/2a36dc50a0f31f13d9ff9e0aeace0da9.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/976/2a36dc50a0f31f13d9ff9e0aeace0da9.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=976">faber33</a> — 11 sie 2017, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojtekr51]]></name></author>
<updated>2017-08-11T14:07:58+01:00</updated>
<published>2017-08-11T14:07:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193303#p193303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193303#p193303"/>
<title type="html"><![CDATA[Re: Odczyt z ADC - ADS1234]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193303#p193303"><![CDATA[
Witam<br /><br />Nie podciągaj pinu mikrokontrolera połączonego z DOUT, zostaw go w stanie wysokiej impedancji. <span style="color: #000080">(edit:  podciągnięcie raczej też nie zaszkodzi)</span> <br /><br /><div class="quotetitle">faber33 napisał(a):</div><div class="quotecontent"><br />W jaki sposób wykrywać ten impuls &quot;DATA READY&quot; a właściwie zbocze opadające żeby dopiero wówczas następował odczyt tych 24 bitów danych ?<br /></div>Nie musisz wykrywać samego zbocza. Bezpośrednio po odczycie ustawiasz go w stan wysoki poprzez 25-ąty cykl SCK (tzn. ADS wystawi na nim stan wysoki). Potem wystarczy, że będziesz oczekiwał na stan niski sygnału, np. tak:<br />[syntax=c]//proponuję najpierw dobrze przygotować sobie wszystkie definicje żeby w kodzie funkcji nie używać PINC, PC2, itp.<br />#define ADS_DOUT_PORT PORTC<br />#define ADS_DOUT_STATE (ADS_DOUT_PORT &amp; ADS_DOUT_PIN)<br />uint8_t ADS_DataReady(void)<br />{<br />return !ADS_DOUT_STATE;<br />}[/syntax]<br /><br />Pętla główna może teraz wyglądać tak:<br /><br />[syntax=c]while(1) {<br />if( ADS_DataReady() ) {<br />adc=Read_ADS(0);<br />uart_putlongint(adc,10);<br />uart_puts(&quot;\r\n&quot;);<br />}<br />}[/syntax]<br /><br />Podpowiem jeszcze, że odczyt z ADS można przedstawić w postaci liczby ze znakiem int32. I wyniki będą przedstawiały się tak jak w nocie Tabela 8.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1760">wojtekr51</a> — 11 sie 2017, o 14:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[faber33]]></name></author>
<updated>2017-08-11T09:57:32+01:00</updated>
<published>2017-08-11T09:57:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193296#p193296</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193296#p193296"/>
<title type="html"><![CDATA[Odczyt z ADC - ADS1234]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18977&amp;p=193296#p193296"><![CDATA[
Witam. Mam takie pytanie do Was drodzy forumowicze <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Czy mółby mi ktoś potwierdzić czy dobrze mam napisaną funkcję służącą do odczytywania z zewnętrznego ADC - ADS1234 do którego mam podłączony tensometr. Niby jakieś wartości odczytuję i jest okej, ale co jakiś czas pojawia się jakby wartość po kalibracji i jest jednym słowem &quot;kaput&quot; ciągle wyświetla się ta sama wartość &quot;16777215&quot;. Zapewne jest to spowodowane tym że w tej funkcji nie mam odczytu uzależnionego od tego impulsu &quot;DATA READY&quot; na wyjściu danych ADS1234 tylko odczytuje jest ciągle te 24 bity w pętli i pewnie z czasem to się rozjeżdża ... W jaki sposób wykrywać ten impuls &quot;DATA READY&quot; a właściwie zbocze opadające żeby dopiero wówczas następował odczyt tych 24 bitów danych ?<br /><br />Podłączenie ADS1234<br />SPEED = 0(GND) czyli mamy 10 pomiarów na sekundę.<br />Wzmocnienie x128<br />PWDN -&gt; programowo do 1, czyli cały czas działa<br /><br />Screen noty jak ten odczyt powinien wyglądać:<br /><a href="https://obrazkiforum.atnel.pl/976/91b161931471728fd61132755b853d3c.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/976/91b161931471728fd61132755b853d3c.png" alt="Obrazek" /></a><br /><br />Link do noty:<br /><!-- m --><a class="postlink" href="http://www.ti.com/lit/ds/symlink/ads1232.pdf" >http://www.ti.com/lit/ds/symlink/ads1232.pdf</a><!-- m --><br /> <br />Funkcje do ADS1234:<br />[syntax=c]#define PWDN PC0 // &lt;---- POWER DOWN<br />#define SCK PC1//   &lt;---- SCK<br />#define DOUT PC2//  &lt;---- READY/DATA OUT<br /><br />#define ADS_SCK_LOW PORTC &amp;= ~(1&lt;&lt;SCK)<br />#define ADS_SCK_HIGH PORTC |= (1&lt;&lt;SCK)<br /><br />#define ADS_PWDN_0 PORTC &amp;= ~(1&lt;&lt;PWDN)<br />#define ADS_PWDN_1 PORTC |= (1&lt;&lt;PWDN)<br /><br />#define ADS_DOUT_PULLUP PORTC |= (1&lt;&lt;DOUT)<br />#define ADS_DOUT_PIN PINC &amp; (1&lt;&lt;DOUT)<br /><br /><br />//Funkcja inicjalizaująca ADS1234<br />void InitSoftSpi(void) {<br />// ustawienie kierunku wyjściowego dla linii SCK i CS(PWDN)<br />DDRC |= (1&lt;&lt;SCK)|(1&lt;&lt;PWDN);<br />//PWDN do 1 czyli układ działa cały czas bez &quot;usypiania&quot;<br />ADS_PWDN_1;<br />//podciągnięcie wyjścia danych do plusa<br />ADS_DOUT_PULLUP;<br />}<br /><br />//Odczyt danych z ADS1234<br />uint32_t Read_ADS (uint8_t cal)<br />{<br /><br />uint32_t data = 0;<br />uint8_t i;<br /><br />   for(i=0;i&lt;24;i++)<br />   {<br />      ADS_SCK_HIGH;<br /><br />  if(i&lt;24)data&lt;&lt;=1;<br />  if(bit_is_set(PINC,PC2)) data |= 1;<br /><br />      ADS_SCK_LOW;<br />   }<br /><br />   ADS_SCK_HIGH;<br />   ADS_SCK_LOW;<br />   <br />   //Kalibracja ADS1234<br />   if(cal == 1){<br />   ADS_SCK_HIGH;<br />   ADS_SCK_LOW;<br />   }<br />  return data;<br />}[/syntax]<br /><br />Plik main.c:<br />[syntax=c]int main(void) {<br />uint32_t adc=0;<br />sei();<br />USART_Init(__UBRR); //inicjalizacja UART<br /><br />InitSoftSpi(); //inicjalizacja ADS1234<br /><br />_delay_ms(2000);<br />adc=Read_ADS(1);<br /><br />while(1) {<br /><br />uart_putlongint(adc,10);<br />uart_puts(&quot;\r\n&quot;);<br />adc=Read_ADS(0);<br />_delay_ms(500);<br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=976">faber33</a> — 11 sie 2017, o 09:57</p><hr />
]]></content>
</entry>
</feed>