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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-25T13:36:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17871&amp;mode</id>
<entry>
<author><name><![CDATA[sp2ews]]></name></author>
<updated>2017-03-25T13:36:06+01:00</updated>
<published>2017-03-25T13:36:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185571#p185571</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185571#p185571"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185571#p185571"><![CDATA[
<div class="quotetitle">Xmen napisał(a):</div><div class="quotecontent"><br />PS. Gdyby ktoś chciałby być tak miły i miał ochotę wytłumaczyć mi jeszcze raz działanie wskaźników, struktur byłbym bardzo wdzięczny. (Dodam, że czytałem BB już z 2 razy, nie wspominając stron z wskaźnikami i strukturami).<br /></div><br />Rozumiem Cię doskonale. Czasem trzeba jeszcze &quot;impulsu&quot; żeby zaskoczyć i potem już wszystko działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic17967.html" >topic17967.html</a><!-- l --> - Z jednej strony wiedziałęm jak to działa ale brakowało mi pewności co do poprawności rozumowania. <br />Czego nie rozumiesz? Napisz, to razem postaramy się przebrnąć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5540">sp2ews</a> — 25 mar 2017, o 13:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Xmen]]></name></author>
<updated>2017-03-20T10:31:46+01:00</updated>
<published>2017-03-20T10:31:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185191#p185191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185191#p185191"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185191#p185191"><![CDATA[
Dzięki za podpowiedź, myślałem właśnie nad tym by zwrócić wartość funkcji rpm() i przekazać ją za pomocą wskaźnika jako argument innej funkcji ,- czy tak wogole można ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10908">Xmen</a> — 20 mar 2017, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Xmen]]></name></author>
<updated>2017-03-19T20:36:10+01:00</updated>
<published>2017-03-19T20:36:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185167#p185167</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185167#p185167"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185167#p185167"><![CDATA[
<div class="quotetitle">Xmen napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent">Kolego piszesz że zastępujesz czujnik Hall'a przyciskiem a nie widzę tam żadnej eliminacji drgań styków, no to nie dziwne że jakieś losowe liczby ci tam wyświetla.<br /></div><br />Poniżej w kodzie dalej nie wprowadziłem żadnej eliminacji drgania styków, a mimo to działa tak jak powinno. Kiedyś na pewno się dowiem czemu tak się działo. Obecny kod funkcji zamieszczam poniżej i wywołuję ją w pętli głównej - rpm(0,0); <br />Wszystko na tą chwilę działa tak jak bym tego oczekiwał, nie wiem natomiast jak będzie się to zachowywało z czujnikiem halla i wskazywaniem prędkości (dokładność pomiaru większa niż w tej chwili nie jest wymagana). <br />[syntax=c]//**************************************//<br />//**************** Funkcja od czujnia hall - pomiar RPM *****************<br />void rpm (uint8_t x, uint8_t y){<br /><br />if(sekundy==1){<br /><br />lcd_cls();<br />obroty= licznik*60;<br />licznik=0;// zerujemy licznik by zliczał od nowa<br />sekundy=0;// zerujemy licznik odmierzania czasu TIMER0<br />}<br /><br />lcd_locate(x,y);<br />lcd_str(&quot;RPM:&quot;);<br />lcd_int(obroty);// wyświetelenie wyniku<br /><br />}<br /><br />ISR (INT0_vect){<br /><br />licznik++;//zliczanie impulsów z czujnika halla na potrzeby rpm();<br /><br /><br />}<br />//***********************************************************************************//[/syntax]<br /><br />Mam takie pytanie, chciałbym stworzyć sobie funkcję testującą, która miała by za zadanie sprawdzić poprawność działania jakiegoś układu (w tym momencie nie ważne). Warunkiem uruchomienia funkcji chciałbym by była zmienna pochodząca z funkcji rpm(); - <strong>obroty</strong>. W jaki sposób mogę przekazać jej wartość do nowej funkcji test_start_up(); wskaźnik ?</div><br /><br />Odpowiedziałem sobie po części sam funkcją testową [syntax=c]void test_startup (int *obr ){<br /><br />if(*obr){<br /><br />PORTD ^= LED;<br />_delay_ms(300);<br />};<br />};[/syntax]<br />i jej wywołanie w głownej funkci while(1) [syntax=c]test_startup(&amp;obroty);[/syntax]<br />Mam pytanie jeśli zmienną obroty mam zdefiniowaną jako globalną to wszystko jest OK, natomiast jeśli chciałbym by znajdowała się wewnątrz funkcji rpm() to w jaki sposób mogę przekazać jej wartość ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10908">Xmen</a> — 19 mar 2017, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Xmen]]></name></author>
<updated>2017-03-19T18:09:24+01:00</updated>
<published>2017-03-19T18:09:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185162#p185162</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185162#p185162"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=185162#p185162"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Kolego piszesz że zastępujesz czujnik Hall'a przyciskiem a nie widzę tam żadnej eliminacji drgań styków, no to nie dziwne że jakieś losowe liczby ci tam wyświetla.<br /></div><br />Poniżej w kodzie dalej nie wprowadziłem żadnej eliminacji drgania styków, a mimo to działa tak jak powinno. Kiedyś na pewno się dowiem czemu tak się działo. Obecny kod funkcji zamieszczam poniżej i wywołuję ją w pętli głównej - rpm(0,0); <br />Wszystko na tą chwilę działa tak jak bym tego oczekiwał, nie wiem natomiast jak będzie się to zachowywało z czujnikiem halla i wskazywaniem prędkości (dokładność pomiaru większa niż w tej chwili nie jest wymagana). <br />[syntax=c]//**************************************//<br />//**************** Funkcja od czujnia hall - pomiar RPM *****************<br />void rpm (uint8_t x, uint8_t y){<br /><br />if(sekundy==1){<br /><br />lcd_cls();<br />obroty= licznik*60;<br />licznik=0;// zerujemy licznik by zliczał od nowa<br />sekundy=0;// zerujemy licznik odmierzania czasu TIMER0<br />}<br /><br />lcd_locate(x,y);<br />lcd_str(&quot;RPM:&quot;);<br />lcd_int(obroty);// wyświetelenie wyniku<br /><br />}<br /><br />ISR (INT0_vect){<br /><br />licznik++;//zliczanie impulsów z czujnika halla na potrzeby rpm();<br /><br /><br />}<br />//***********************************************************************************//[/syntax]<br /><br />Mam takie pytanie, chciałbym stworzyć sobie funkcję testującą, która miała by za zadanie sprawdzić poprawność działania jakiegoś układu (w tym momencie nie ważne). Warunkiem uruchomienia funkcji chciałbym by była zmienna pochodząca z funkcji rpm(); - <strong>obroty</strong>. W jaki sposób mogę przekazać jej wartość do nowej funkcji test_start_up(); wskaźnik ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10908">Xmen</a> — 19 mar 2017, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tmichal24]]></name></author>
<updated>2017-03-13T19:25:57+01:00</updated>
<published>2017-03-13T19:25:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184780#p184780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184780#p184780"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184780#p184780"><![CDATA[
Kolego piszesz że zastępujesz czujnik Hall'a przyciskiem a nie widzę tam żadnej eliminacji drgań styków, no to nie dziwne że jakieś losowe liczby ci tam wyświetla.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1651">tmichal24</a> — 13 mar 2017, o 19:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-03-12T20:41:56+01:00</updated>
<published>2017-03-12T20:41:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184748#p184748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184748#p184748"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184748#p184748"><![CDATA[
Witam<br /><div class="quotetitle">Xmen napisał(a):</div><div class="quotecontent"><br />Wyciągnąłem funkcję hall() na wierzch do głównej funkcji while(1). Dodałem jeszcze...<br /></div><br />Pokaż to następne wcielenie programu.<br /><div class="quotetitle">Xmen napisał(a):</div><div class="quotecontent"><br />zamiast czujnika chwilowo stosuje przycisk...<br /></div><br />...to może paluszek drży?  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><div class="quotetitle">Xmen napisał(a):</div><div class="quotecontent"><br />Gdyby ktoś chciałby być tak miły i miał ochotę wytłumaczyć mi jeszcze raz działanie wskaźników, struktur byłbym bardzo wdzięczny. (Dodam, że czytałem BB już z 2 razy...<br /></div><br />Wiesz to z czasem samo przyjdzie, my też możemy tylko pisać ...ale co, to samo co w BB?<br />Przedstaw jakiś problem to wtedy.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 12 mar 2017, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Xmen]]></name></author>
<updated>2017-03-12T14:37:25+01:00</updated>
<published>2017-03-12T14:37:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184721#p184721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184721#p184721"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184721#p184721"><![CDATA[
Faktycznie za chwilę spróbuję zrobić to wszystko w oparciu o INT0. Wyciągnąłem funkcję hall() na wierzch do głównej funkcji while(1). Dodałem jeszcze jedno sprawdzenie warunku &quot;if&quot; w funkcji hall() z opóźnieniem 10ms (zamiast czujnika chwilowo stosuje przycisk) i mimo wszystko wyświetlane są dziwne wartości na LCD po różnej liczbie szybkich wciśnięć np. 4, 238, 60, 83. Wg mnie powinny to być wielokrotności 60 gdzie jest problem? Dodam, że warunek wylicza obroty po 4 sekundach bym zdążył wcisnąć klawisz x razy, docelowo będzie 1s.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10908">Xmen</a> — 12 mar 2017, o 14:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Cieczek]]></name></author>
<updated>2017-03-12T14:17:33+01:00</updated>
<published>2017-03-12T14:17:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184720#p184720</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184720#p184720"/>
<title type="html"><![CDATA[Re: Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184720#p184720"><![CDATA[
funkcję hall() wywołujesz dopiero gdy spełniony zostaje warunek sekundy%3 a powinieneś zliczać je ciągle, wyrzuć hall() z tego if'a i wrzuć go do pętli while abyś mógł sprawdzać pin od halla praktycznie cały czas, a co sekundę (timerem) wyświetlaj i przeliczaj RPM na LCD. jeszcze optymalniej gdybyś impulsy zliczał w przerwaniu INT0, nie musisz, ale jest to łatwiejsze do wykonania i czytelniejsze po roku jak spojrzysz w kod ponownie <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=16670">Cieczek</a> — 12 mar 2017, o 14:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Xmen]]></name></author>
<updated>2017-03-12T14:02:32+01:00</updated>
<published>2017-03-12T14:02:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184719#p184719</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184719#p184719"/>
<title type="html"><![CDATA[Prosta funkcja i problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17871&amp;p=184719#p184719"><![CDATA[
Witam serdecznie, chciałem stworzyć sobie prostą funkcję która zliczała by impulsy do czujnika halla (max 30 impulsów na sekundę). Nie potrafię ocenić czy MUSZĘ koniecznie wykorzystać do tego, któreś z przerwań INT. Chciałem by zostało to zrealizowane programowo. <br />Program niby działa lecz nie tak jak powinien, wyświetlane są cyfry nie wiadomo skąd wzięte. <br />Proszę o pomoc i wytłumaczenie - mając na względzie, że jestem bardzo początkującym ( próbuje raczkować).<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br /><br />#define LED (1&lt;&lt;PD7)<br /><br />#define HALL (1&lt;&lt;PD6)<br /><br />volatile uint8_t s1flag; // flaga tyknięcia timera co 1 sekundę /<br />volatile uint8_t sekundy; // licznik sekund 0-59 */<br /><br />uint8_t cnt_hall; //zmienna na potrzeby funkcji hall<br />static uint8_t licznik;<br />static int obroty;<br /><br /><br />uint8_t hall (void);//deklaracja funkcji od czujnia halotronowego<br /><br /><br />int main (void){<br /><br />DDRD |= LED;//kierunek pinu wyjściowy<br />PORTD |= LED;<br /><br />//******************** Ustawienie wej/wyj dla czujnika halotronowego********************//<br />////<br />DDRD &amp;= ~HALL;//kierunek czujnika - WEJŚCIE//<br />PORTD |= HALL;//podciągnięcie do Vcc//<br />//**************************************************************************************//<br /><br /><br />//*****************************TIMER2 100ms*******************************//<br /><br />TCCR2A |= (1&lt;&lt;WGM21);// tryb CTC<br />TCCR2B |= ((1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20));//preskaler 1024<br />OCR2A = 77;// dodatkowy podział przez 78<br />TIMSK2 |= (1&lt;&lt;OCIE2A);<br />//**********************************************************************//<br />lcd_init();<br />lcd_cls();<br /><br />sei();// zezwolenie na przerwanie<br />while(1){<br /><br />if(sekundy%3){<br />lcd_cls();<br />lcd_locate(1,0);<br />lcd_int(hall());<br />}<br /><br />}<br /><br />}<br /><br /><br />//****************Funkcja od czujnia hall*****************<br />uint8_t hall (void){<br /><br />if(!(PIND &amp; HALL)){<br />//cnt_hall=1;<br />licznik++;// zwiększenie licznika o 1 <br /><br />if(sekundy&gt;4){<br />PORTD ^=LED;// sprawdzenie czy wchodzi w warunek<br />obroty= licznik*60;<br />licznik=0;// zerujemy licznik by zliczał od nowa<br />sekundy=0;// zerujemy licznik odmierzania czasu<br />}<br /><br />}<br />return obroty;<br />}<br /><br /><br />//*******************TIMER z przerwaniem 100ms dla clk CPU 8MHz***********************<br />ISR (TIMER2_COMPA_vect){<br /><br /><br />static uint8_t cnt;<br /><br />if(++cnt&gt;99) {<br /><br />s1flag = 1;<br />sekundy++;<br />if(sekundy&gt;59) sekundy =0;<br />cnt=0;<br /><br />}<br /><br />}[/syntax]<br /><br /><br /><br /><br /><br />PS. Gdyby ktoś chciałby być tak miły i miał ochotę wytłumaczyć mi jeszcze raz działanie wskaźników, struktur byłbym bardzo wdzięczny. (Dodam, że czytałem BB już z 2 razy, nie wspominając stron z wskaźnikami i strukturami).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10908">Xmen</a> — 12 mar 2017, o 14:02</p><hr />
]]></content>
</entry>
</feed>