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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-07-04T10:15:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=22378&amp;mode</id>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2019-07-04T10:15:26+01:00</updated>
<published>2019-07-04T10:15:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220212#p220212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220212#p220212"/>
<title type="html"><![CDATA[Re: Próbkowanie sygnału sinusoidalnego - ARDUINO NANO-ATmega]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220212#p220212"><![CDATA[
<strong>zubik</strong> teraz w sumie tak pomyślałem żeby załączyć wewnętrzne napięcie odniesienia na 1.1V. Może by to poprawiło te nieszczęsne przebiegi - przynajmniej nie musiałbym bawić się we wzmacniacze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 4 lip 2019, o 10:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2019-07-04T10:00:54+01:00</updated>
<published>2019-07-04T10:00:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220210#p220210</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220210#p220210"/>
<title type="html"><![CDATA[Re: Próbkowanie sygnału sinusoidalnego - ARDUINO NANO-ATmega]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220210#p220210"><![CDATA[
<strong>zubik</strong> - ze specyfikacji ATMega328p wynika że minimalne napięcie referencyjne wynosi 1.1V. Poszukam w mojej komnacie tajemnic jakiegoś wzmacniacza i wzmocnie sygnał 4 razy i zobaczę czy to jest to.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 4 lip 2019, o 10:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2019-07-03T20:20:11+01:00</updated>
<published>2019-07-03T20:20:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220194#p220194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220194#p220194"/>
<title type="html"><![CDATA[Re: Próbkowanie sygnału sinusoidalnego - ARDUINO NANO-ATmega]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220194#p220194"><![CDATA[
<strong>czarekgr</strong> - kurczę to może być to, bo na wyjściu generatora AD9833 amplituda wynosi nieco ponad 630mV. No nic wrzucę jakiś wzmacniacz i zobaczymy co jest grane. Dzięki za sugestię!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 3 lip 2019, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[czarekgr]]></name></author>
<updated>2019-07-03T20:05:53+01:00</updated>
<published>2019-07-03T20:05:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220192#p220192</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220192#p220192"/>
<title type="html"><![CDATA[Re: Próbkowanie sygnału sinusoidalnego - ARDUINO NANO-ATmega]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220192#p220192"><![CDATA[
Masz takie schodki na kilku poziomach, moim zdaniem poziom sygnału jest za niski dla tego przetwornika i praktycznie masz próbkowanie kilku bitowe. Ale mogę się mylić, od tego zacznij.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14311">czarekgr</a> — 3 lip 2019, o 20:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2019-07-02T18:38:26+01:00</updated>
<published>2019-07-02T18:38:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220166#p220166</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220166#p220166"/>
<title type="html"><![CDATA[Próbkowanie sygnału sinusoidalnego - ARDUINO NANO-ATmega328]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22378&amp;p=220166#p220166"><![CDATA[
Witajcie!<br /><br />Mam pewien problem (w sumie nie wiem czy to problem czy to normalne zachowanie) z próbkowaniem sygnału sinusoidalnego. Otóż po spróbkowaniu sygnału (1400 próbek, częstotliwość sygnału to 5kHz) i wysłaniu przez port szeregowy otrzymuje taki przebieg: <br /><a href="https://obrazkiforum.atnel.pl/226/659d3746a73782b32a9c9561a02559f5.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/226/659d3746a73782b32a9c9561a02559f5.png" alt="Obrazek" /></a><br /><br />Jak widać jest nieco zniekształcony w porównaniu do tego co mam na oscyloskopie: <br /><br /><a href="https://obrazkiforum.atnel.pl/226/e526654a7a79847cbedf7b4524a6184c.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/226/e526654a7a79847cbedf7b4524a6184c.jpg" alt="Obrazek" /></a><br /><br />Sygnał jest próbkowany w przerwaniu wyzwalanym przez przetwornik analogowo-cyfrowy a sam prescaller przetwornika jest ustawiony na ok 307.69kHz. Po pobraniu 1400 próbek ustawiam odpowiednią flagę która informuje o zakończeniu pobierania próbek i wysyła próbki na port szeregowy. <br /><br />Poniżej znajduje się uproszczony schemat układu na jakim testuje owe cudo: <br /><br /><a href="https://obrazkiforum.atnel.pl/226/bf3d31e478259cb7a403f9e77d85fe87.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/226/bf3d31e478259cb7a403f9e77d85fe87.png" alt="Obrazek" /></a><br /><br /><br />oraz kod źródłowy: <br /><br />[syntax=cpp]#include &lt;Arduino.h&gt;<br />#include &lt;TimerOne.h&gt;<br />#include &lt;MD_AD9833.h&gt;<br /><br />#define DATA 7<br />#define CLK 5<br />#define FSYNC 6<br /><br />// TODO: block interrupts before sending and release block after sending package<br />// with samples<br /><br />void timerCallback();<br />void setupADC();<br /><br />MD_AD9833 ad9833(DATA, CLK, FSYNC);<br />uint8_t samples&#91;1500&#93;;<br />uint16_t sampleCnt = 0;<br />volatile uint8_t adcFlag = 0;<br />uint8_t adcValue = 0;<br />uint8_t samplingFinish = 0;<br />uint16_t cnt = 0;<br /><br />void setup() {<br />  // put your setup code here, to run once:<br />  DDRC |= (1 &lt;&lt; 3);<br />  ad9833.begin();<br />  ad9833.setMode(MD_AD9833::MODE_SINE);<br />  ad9833.setFrequency(MD_AD9833::CHAN_0, 5000);<br />  ad9833.setActiveFrequency(MD_AD9833::CHAN_0);<br />  Serial.begin(1000000);<br />  Serial.println(&quot;NRF24L01 TESTER&quot;);<br />  setupADC();<br />  Timer1.initialize(332);<br />  Timer1.attachInterrupt(timerCallback);<br />  sei();<br />}<br /><br />void loop() {<br />  // put your main code here, to run repeatedly:<br /><br />  // if (samplingFinish) {<br />  //   cli();<br />  //   if (cnt &lt;= 1400) {<br />  //       Serial.println(samples&#91;cnt&#93;);<br />  //       cnt++;<br />  //   } else {<br />  //       cnt = 0;<br />  //   }<br />  //   sei();<br />  //   samplingFinish = 0;<br />  // }<br />  if (samplingFinish &amp;&amp; cnt &lt; 1400) {<br />    cli();<br />    for (uint16_t i = 0; i &lt; 1400; i++) {<br />      Serial.println(samples&#91;i&#93;);<br />      cnt++;<br />    }<br />    sei();<br />  }<br />  samplingFinish = 0;<br />}<br /><br />void setupADC() {<br />  ADCSRA = 0;            // clear ADCSRA register<br />  ADCSRB = 0;            // clear ADCSRB register<br />  ADMUX |= (0 &amp; 0x07);   // set A0 analog input pin<br />  ADMUX |= (1 &lt;&lt; REFS0); // set reference voltage<br />  ADMUX |= (1 &lt;&lt; ADLAR); // left align ADC value to 8 bits from ADCH register<br /><br />  // sampling rate is &#91;ADC clock&#93; / &#91;prescaler&#93; / &#91;conversion clock cycles&#93;<br />  // for Arduino Uno ADC clock is 16 MHz and a conversion takes 13 clock cycles<br />  // ADCSRA |= (1 &lt;&lt; ADPS2) | (1 &lt;&lt; ADPS0);    // 32 prescaler for 38.5 kHz<br />  // ADCSRA |= (1 &lt;&lt; ADPS2); // 16 prescaler for 76.9 KHz<br />  // ADCSRA |= (1 &lt;&lt; ADPS1) | (1 &lt;&lt; ADPS0);    // 8 prescaler for 153.8 kHz<br />  ADCSRA |= (1 &lt;&lt; ADPS1); //4 prescaler for 307.69kHz<br /><br /><br />  ADCSRA |= (1 &lt;&lt; ADATE); // enable auto trigger<br />  ADCSRA |= (1 &lt;&lt; ADIE);  // enable interrupts when measurement complete<br />  ADCSRA |= (1 &lt;&lt; ADEN);  // enable ADC<br />  ADCSRA |= (1 &lt;&lt; ADSC);  // start ADC measurements<br />}<br /><br />void timerCallback() {<br />  //   if (sampleCnt &lt;= 1400) {<br />  //   samples&#91;sampleCnt&#93; = adcValue;<br />  //   sampleCnt++;<br />  // } else {<br />  //   sampleCnt = 0;<br />  //   samplingFinish = 1;<br />  // }<br />}<br /><br />ISR(ADC_vect) {<br />  adcValue = ADCH; // read 8 bit value from ADC<br />  if (sampleCnt &lt;= 1400) {<br />    samples&#91;sampleCnt&#93; = adcValue;<br />    sampleCnt++;<br />  } else {<br />    sampleCnt = 0;<br />    samplingFinish = 1;<br />  }<br />}[/syntax]<br /><br />Jak wcześniej napisałem być może jest to coś normalnego i niczego lepszego nie zdołam wykrzesać z ADC ATmegi328. Za wszelką pomoc z góry dziękuję!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 2 lip 2019, o 18:38</p><hr />
]]></content>
</entry>
</feed>