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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-06-02T12:33:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=15460&amp;mode</id>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-06-02T12:33:29+01:00</updated>
<published>2016-06-02T12:33:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161524#p161524</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161524#p161524"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161524#p161524"><![CDATA[
Kod który napisałeś, pracuje tysiące razy na sekundę.<br />Pomyśl ile razy w ciągu tej sekundy jest sprawdzany poziom napięcia.<br />Opóźnienie ?. <br />Właśnie się staramy wyliczać średnią, <strong>po każdym pomiarze</strong> aktualizującym jeden z naszych przykładowych trzech pomiarów z mikrofonu.<br />jeszcze raz:<br /><br />pomiar 1 mik 1<br />pomiar 1 mik 2<br />pomiar 1 mik 3<br /><br />srednia z pom. 1, 2, 3...(dla mik. 1 i dla mik. 2 i dla mik 3)<br />...<br />cd Twojego programu ...<br />i pętla się powtarza, ale przypisując pomiary do następnych zmiennych.( czyli musisz tak napisać tę część programu, żeby w następnym obiegu zapisywał do zmiennej reprezentującej kolejny pomiar tego mikrofonu, a po zakończeniu zapisu na ostatniej, zaczynał od nowa)<br />średnią niech wylicza za każdym zakończeniem serii pomiarów dla wszystkich mikrofonów.<br /><br />pomiar 2 mik 1<br />pomiar 2 mik 2<br />pomiar 2 mik 3<br /><br />srednia z pom. 1, 2, 3...(dla mik. 1 i dla mik. 2 i dla mik 3)<br />...<br /><br />pomiar 3 mik 1<br />pomiar 3 mik 2<br />pomiar 3 mik 3<br /><br />srednia z pom. 1, 2, 3...(dla mik. 1 i dla mik. 2 i dla mik 3)<br />...<br />Tak ja to widzę, ale może ktoś ma lepszy pomysł.<br /><br />aaa.. nadpisałem post kolegi  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  sorka.<br />szybciej piszecie niż ja  <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=11549">Daro69</a> — 2 cze 2016, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2016-06-02T12:14:26+01:00</updated>
<published>2016-06-02T12:14:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161521#p161521</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161521#p161521"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161521#p161521"><![CDATA[
Cała ta operacja zbierania danych nie będzie trwała dłużej jak kilka ms - myślę, że nawet tego nie odczujesz. Uśrednianie można robić conajmniej na kilka sposobów i jaki wybierzesz zależy od ciebie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 2 cze 2016, o 12:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[masterix]]></name></author>
<updated>2016-06-02T10:55:59+01:00</updated>
<published>2016-06-02T10:55:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161516#p161516</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161516#p161516"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161516#p161516"><![CDATA[
Ale jeżeli mikrofony są aktywne cały czas, to czy mogę sobie to uśredniać w ten sposób i nie będę miał opóźnień ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9423">masterix</a> — 2 cze 2016, o 10:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-05-30T20:49:35+01:00</updated>
<published>2016-05-30T20:49:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161357#p161357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161357#p161357"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161357#p161357"><![CDATA[
Tak sobie myślę.<br />ARM jest mi obcy, CPP także, ale..<br />Chodzi mi o samo podejście.<br />Tak jak kolega &quot;SylwekK&quot; podpowiada.<br /><br /><div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Najpierw wyłap wszystkie sygnały (najlepiej uśrdnione), umieść w dodatkowych zmiennych i dopiero rób porównania.<br /></div><br /><br />tzn. tam gdzie zapisujesz czytane wartości z adc użyłeś timera. - chyba że źle rozszyfrowałem.-<br />Zorganizuj sobie tak program by zapisywał odczyty z adc np.<br /><br />pomiar_1_mik_1,    pomiar_1_mik_2,   pomiar_1_mik_3,<br />cd. programu.<br /><br />obliczenia średnich.<br /><br />następnym razem:<br />pomiar_2_mik_1,    pomiar_2_mik_2,   pomiar_2_mik_3,<br /><br />obliczenia średnich.<br />itd.<br /><br />dla-- 1_mik: pomiar_1_mik_1  dodać  pomiar_2_mik_1, i podzielić przez ilość do uśrednienia. czyli tutaj: 2 ._ to by była pierwsza uśredniona wartość, którą będziesz potem sobie przyrównywał.<br />dla-- 2_mik: pomiar_1_mik_2  dodać  pomiar_2_mik_2, i podzielić przez ilość do uśrednienia. czyli tutaj: 2 ._.......druga....<br /> itd.<br />może wykorzystać inny sposób zapisu np. tablicę.<br />potem odczytujesz wartości zmiennych &quot;uśrednionych&quot;, które obliczysz w kodzie :<br />dodając i dzieląc ( jak w matmie).<br /><br />( myślę że to o uśrednianie w tym stylu chodzi.)-, a nie o filtrowanie górno i dolno przepustowe. tak mi się wydaje.<br /><br />Chociaż można by pomyśleć o czymś jakby stabilizator, do zmniejszenia hmm.. 'szpilek' adc dźwięku,<br />poprzez może dodanie kondka, który będzie pompowany sygnałem z mikrofonu, i filtrowany dławikiem przed adc. coś jak zasilanie AVCC, by zmniejszyć dynamikę skoków napięcia z mikrofonów.<br />hm... no chyba że to ma śledzić muchę w locie. to może być problem z tempem odczytu.<br /><br />(czy to zda egzamin, tego nie wiem - to tylko taka myśl, którą bym sprawdzał na początku, bo prosta do przetestowania.)<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 maja 2016, o 20:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[masterix]]></name></author>
<updated>2016-05-30T13:40:46+01:00</updated>
<published>2016-05-30T13:40:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161332#p161332</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161332#p161332"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161332#p161332"><![CDATA[
Zakładam że żeby uśrednić to muszę wykonać filtr górno i dolno przepustowy. Ale w sumie nie wiem jak taki zrobić.. Mógłby mi ktoś pomóc, podesłać materiały jak zrobić taki filotr programowo?<br />W tym projekcie ADC działa ciągle. Więc  wartości zmieniają się cały czas. więc pytanie czy takie filtrowanie coś mi pomoże ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9423">masterix</a> — 30 maja 2016, o 13:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2016-05-27T07:44:48+01:00</updated>
<published>2016-05-27T07:44:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161171#p161171</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161171#p161171"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161171#p161171"><![CDATA[
Najpierw wyłap wszystkie sygnały (najlepiej uśrdnione), umieść w dodatkowych zmiennych i dopiero rób porównania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 27 maja 2016, o 07:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[masterix]]></name></author>
<updated>2016-05-26T21:46:00+01:00</updated>
<published>2016-05-26T21:46:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161151#p161151</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161151#p161151"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161151#p161151"><![CDATA[
jest jest <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bardziej chodzi mi o to jak programistycznie rozwiązać badanie 4 mikrofonów i wybieranie na którym sygnał jest najmocniejszy <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=9423">masterix</a> — 26 maja 2016, o 21:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2016-05-26T21:26:02+01:00</updated>
<published>2016-05-26T21:26:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161148#p161148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161148#p161148"/>
<title type="html"><![CDATA[Re: niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161148#p161148"><![CDATA[
Nie wiem jak deklarujesz zmienną licznik. Powinna być volatile.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 26 maja 2016, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[masterix]]></name></author>
<updated>2016-05-26T13:30:39+01:00</updated>
<published>2016-05-26T13:30:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161121#p161121</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161121#p161121"/>
<title type="html"><![CDATA[niby IF a coś skopałem.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15460&amp;p=161121#p161121"><![CDATA[
Witam, pracuje nad pewnym projektem. posiadam 4 mikrofony (teraz testuje &quot;aby dwa&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ) <br />Program polega na tym że na 4 kanałach ADC1 robie pomiar z tych oto mikrofonów. Następnie porównuje ( a przynajmniej sie staram ) te mikro i zapalam odpowiednią diodke <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> (Symulacja uruchomienia silników)<br />Podsumowąjąc wstęp: robot bedzie sie miał poruszać za źródłem dzwięku. <br /><br />I tu mam problem bo pomimo że odpaliłem ADC na 4 kanały i teoretycznie to mi działa. Potem sprawdzam jeden mikrofon czy coś tam sie pojawiło i pasuje, ale gdy dopisuje warunek odnośnie drugiego mikro to wgl nie reaguje na ten drugi mikrofon. tylko na pierwszy..<br /><br />Zapewne robie jakiś kardynalny błąd w warunku, ale za grosz nie wiem jaki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=cpp]to w main:<br /> if(mode==2){<br />if(ur_front&lt;2010){<br />GPIOD-&gt;ODR |= GPIO_ODR_ODR_12;<br />state=1;<br />}elseif(ul_front&lt;2010){<br />GPIOD-&gt;ODR |= GPIO_ODR_ODR_13;<br />state=2;<br />}else { state=3;<br />GPIOD-&gt;ODR &amp;= ~GPIO_ODR_ODR_12;<br />GPIOD-&gt;ODR &amp;= ~GPIO_ODR_ODR_13;<br />}<br />}<br /><br /><br />void ADC_IRQHandler(void){<br />licznik++;<br />    if(licznik==1){<br />    int i;<br />        for(i=0; i&lt;10000;i++)<br />        ur_front = ADC1-&gt;DR;<br />        wyniki&#91;i&#93;=ADC1-&gt;DR;<br />    }<br />    if(licznik==2){<br />ul_front = ADC1-&gt;DR;<br />mode=2;<br />}<br />    if(licznik==3) ur_back = ADC1-&gt;DR;<br />    if(licznik==4){<br />    ul_back = ADC1-&gt;DR;<br />    licznik=0;<br />    mode=1;<br />    //ur_front=abs(ur_front);<br />    }<br />    }[/syntax]<br /><br />i konfiguracja ADC:<br />[syntax=cpp]RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOBEN| RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIOAEN;     //enabled GPIO<br /><br />    //ADC<br />RCC-&gt;APB2ENR |= RCC_APB2ENR_ADC1EN; //enabled clock adc<br />GPIOC-&gt;MODER |= GPIO_MODER_MODER0|GPIO_MODER_MODER1|GPIO_MODER_MODER2 |GPIO_MODER_MODER3; // set PC0-3 as analog for ADC<br />ADC1-&gt;SMPR1 |= ADC_SMPR1_SMP10|ADC_SMPR1_SMP11|ADC_SMPR1_SMP12|ADC_SMPR1_SMP13;     //set 480 cycles sampling time<br />ADC-&gt;CCR |= ADC_CCR_ADCPRE_0  ; //pclk2 devided by 8 -&gt; 1Mhz<br />ADC1-&gt;CR1 &amp;= ~ADC_CR1_RES;  // resolution 12bit<br />ADC1-&gt;CR1 |= ADC_CR1_EOCIE; // enable interrupt on end of conversion<br />ADC1-&gt;SQR3 &amp;= ~(1&lt;&lt;0);<br />ADC1-&gt;SQR3 |=   0x6B16A ; //SET chanel 10-13 in regular conversion<br />ADC1-&gt;SQR1  |=  ADC_SQR1_L_0 |ADC_SQR1_L_1; //set chanel 13 and regular seqence length<br />ADC1-&gt;CR2 |= ADC_CR2_ADON;<br />ADC1-&gt;CR2 |= ADC_CR2_CONT;  //adc enabled |continues mode|start conversion regular channels<br />ADC1-&gt;CR2 |= ADC_CR2_ADON;<br />ADC1-&gt;CR2 |= 1&lt;&lt;30;[/syntax]<br /><br />Ma ktoś jakiś pomysł jak to rozwiązać żeby ten drugi też zadziałał??<br /><br />Odczyt w debugerze z ADC to ok 2030 (12bit ADC) <br />Moja płytka to STM32F4 Discovery. <br /><br />Pozdrawiam i błagam o pomoc <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=9423">masterix</a> — 26 maja 2016, o 13:30</p><hr />
]]></content>
</entry>
</feed>