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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-08-10T07:46:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1383&amp;mode</id>
<entry>
<author><name><![CDATA[Malutki_27]]></name></author>
<updated>2012-08-10T07:46:44+01:00</updated>
<published>2012-08-10T07:46:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12229#p12229</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12229#p12229"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12229#p12229"><![CDATA[
I kolejna rzecz ..... zwróć uwagę na to że nie interpretujesz jednej wartości pomiaru. Tylko w warunku if interpretujesz jeden pomiar i dla wyświetlacza wykonujesz drugi pomiar. według mnie jest to błąd logiczny programu. Powinieneś pomiar(0) przepisać do zmiennej i dopiero ją sprawdzać w warunku if i ewentualnie wyświetlać na wyświetlaczu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=225">Malutki_27</a> — 10 sie 2012, o 07:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-10T05:38:18+01:00</updated>
<published>2012-08-10T05:38:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12228#p12228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12228#p12228"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12228#p12228"><![CDATA[
Po pierwsze to ja się nie irytuję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> więc źle mnie zrozumiałeś - a to, że poradzę czasem powrót do źródeł to chyba nie grzech i objaw zdenerwowania ?<br /><br />Pewnie, że się nie zniechęcaj - ja chętnie pomogę - tylko właśnie , zacznijmy mówić tym samym językiem czyli używajmy albo starajmy się używać określeń technicznych z zakresu języka C, wtedy będzie się łatwiej porozumieć.<br /><br />Ok wracając do tematu program a jednocześnie ten warunek if, MUSI ci działać w obydwu wersjach - język C to nie Bascom i tu dopuszczalne są tego typu konstrukcje, a zatem MUSI działać i taki zapis<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( pomiar(0) &gt; 640 ) .....</div><br /><br />jak również taki<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">wpomiaru=pomiar(0);<br />if( wpomiaru &gt; 640 ) .....</div><br /><br />problem może leżeć gdzie indziej - ty nic nie mówisz ani nie pokazujesz większej ilości swojego kodu, bo pewnie nie spodziewasz się że w innej części możesz robić BABOLA, który tutaj ma skutek. A tym BABOLEM mogą być niewłaściwie dobrane typy zmiennych przez ciebie ....  bo na przykład jakiego typu jest u ciebie zmienna wpomiaru ???<br /><br />Poza tym coś mi się wydaje że masz w ogóle jakiś POWAŻNY błąd w konstrukcji samej funkcji main() .... ale hmmm tylko mogę zgadywać (a nie irytować się) ..... bo przecież całego kodu main.c nadal nie pokazałeś .... więc jak ci pomóc ?<br /><br />a jeśli na wyświetlaczu LCD otrzymujesz 640640 zamiast 640 to na pewno robisz jakiegoś MEGA BABOLA w kodzie - tylko go pokaż to ja ci podpowiem gdzie <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=54">mirekk36</a> — 10 sie 2012, o 05:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario]]></name></author>
<updated>2012-08-09T23:22:53+01:00</updated>
<published>2012-08-09T23:22:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12227#p12227</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12227#p12227"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12227#p12227"><![CDATA[
Wymiękłem i program w końcu napisałem w BACOM <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Oczywiście , rozumiem Twoją irytację , sam jak jeszcze raz przeczytałem , to się uśmiechnąłem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Chodziło mi o to , że nie wykonuje warunku &quot;if (pomiar(0)&gt;620)&quot; mimo , że na wyświetlaczu mam 640. Ale już chyba się domyślam dlaczego. Jak wynik działania funkcji wpisałem do zmiennej i w dalszej części programu posługiwałem się tą zmienną to zaczęło działać. Wprawdzie mam już działający program w bascomie, ale dla zasady sprobuję go napisać w C, coby się nie zniechęcić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  <br />Problemem było to , że w wyniku lcd_int(pomiar(0)) otrzymuję 640 a w ten sposób:<br />[syntax=c]<br />wpomiaru=pomiar(0);<br />lcd_int(wpomiaru);<br />[/syntax]<br />otrzymuję 640640<br /><br />Teraz już właściwie skonstruowałem warunki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=415">mario</a> — 9 sie 2012, o 23:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-09T23:02:32+01:00</updated>
<published>2012-08-09T23:02:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12221#p12221</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12221#p12221"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12221#p12221"><![CDATA[
Wiesz co? teraz musisz - zrobić w tył zwrot <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i wrócić do pierwszej części książki z teorią na temat C i to do podstaw - bo tak namieszałeś w pojęciach - że ja się nie dziwię że coś ci nie wychodzi .... do tego nie pokazałeś pełnego kodu swojego programu  - co każe przypuszczać że w ogóle sam nie do końca wiesz co robisz <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />co to na przykład znaczy <br /><br />&quot;nie chce wejść do pętli warunkowej&quot; ..... a gdzie ty w tym fragmencie widzisz jakąkolwiek pętlę - nie wspomnę już o hmmm &quot;warunkowej&quot; ????<br /><br />może łatwiej będzie ci pomóc jak wkleisz tu całą zawartość swojego main.c .... najpierw w jednej wersji o której piszesz a potem w drugiej wersji - bo niestety z twoich opisów nic a nic nie mogę zrozumieć - a kod może mi pozwoli zobaczyć gdzie robisz i jakiego babola <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 sie 2012, o 23:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario]]></name></author>
<updated>2012-08-09T22:50:22+01:00</updated>
<published>2012-08-09T22:50:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12217#p12217</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12217#p12217"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12217#p12217"><![CDATA[
W dalszym ciągu walczę z ADC, teraz mam taki kwiatek:<br />W kodzie poniżej, jest pętal warunkowa &quot;if (pomiar(0)&gt;620)...&quot; . Program wchodzi do tej pętli, ale na wyświetlaczu wynik pomiaru oscyluje w granicach 540. Natomiast, jak usunę // z linii  &quot;//lcd_int(pomiar(0));&quot; przed pętlą, to wyswietla mi wynik 650 ale nie chce wejść do pętli warunkowej, mimo że teoretycznie warunek jest spełniony <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />[syntax=c]lcd_init();<br />//wybor napiecia odniesienia jako Vcc<br />ADMUX |= (1&lt;&lt;REFS0);<br />//wlaczenie modulu ADC i ustawienie preskalera na 64<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);<br />//skasowanie zawartosci LCD<br />lcd_cls();<br />//pomiar napiecia na wejsciu ADC5 i wyswietlenie wartosci na LCD<br />if (pomiar(1)&lt;940) buzer_on;<br />//lcd_int(pomiar(0));<br />if (pomiar(0)&gt;620) <br />               {<br />lcd_int(pomiar(0));<br />buzer_on;<br />}<br /><br />}<br />}<br />// Definicja funkcji dokonujacej pomiaru<br />uint16_t pomiar(uint8_t kanal)<br />{<br />//ustawienie wybranego kanalu ADC w rejestrze ADMUX<br />ADMUX = (ADMUX &amp; 0xF8) | kanal;<br />//START pomiaru przez ustawienie bitu ADSC w rejestrze ADCSRA<br />ADCSRA |= (1&lt;&lt;ADSC);<br />//oczekiwanie na koniec pomiaru (dopoki bit ADSC=1)<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));<br />//po zakonczeniu pomiaru , gdy bit ADSC=0 , zwrocenie wyniku w postaci<br />//16-to bitowej wartosci z rejestrow ADCH i ADCL<br />return ADCW;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=415">mario</a> — 9 sie 2012, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario]]></name></author>
<updated>2012-08-07T22:28:24+01:00</updated>
<published>2012-08-07T22:28:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12074#p12074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12074#p12074"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12074#p12074"><![CDATA[
Ufff, no tak, to był ten szczegół.<br />Tak to jest jak się bezmyślnie fragment kodu wrzuci przez ctr_c , ctr-v  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=415">mario</a> — 7 sie 2012, o 22:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-08-07T22:24:15+01:00</updated>
<published>2012-08-07T22:24:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12073#p12073</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12073#p12073"/>
<title type="html"><![CDATA[Re: Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12073#p12073"><![CDATA[
Panie kolego po pierwsze masz błąd<br /><br />ADMUX <strong><span style="color: #FF0000">|=</span></strong> (ADMUX &amp; 0xF8) | kanal;<br /><br />powinno być<br /><br />ADMUX <strong><span style="color: #008000"><span style="font-size: 150%; line-height: normal">=</span></span></strong> (ADMUX &amp; 0xF8) | kanal;<br /><br />widzisz różnicę - oczywiście zdaje się że ten błąd niestety też jest w książce ale pisałem już o tym na tym forum. Poza tym zaglądaj też do aktualizacji:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/uaktualnienia-programow-do-dvd.html" >http://atnel.pl/uaktualnienia-programow-do-dvd.html</a><!-- m --><br /><br />i poczytaj KONIECZNIE o tym ADC z tego linku który podałem wyżej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 sie 2012, o 22:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario]]></name></author>
<updated>2012-08-07T22:13:14+01:00</updated>
<published>2012-08-07T22:13:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12069#p12069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12069#p12069"/>
<title type="html"><![CDATA[Moduł ADC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1383&amp;p=12069#p12069"><![CDATA[
Pomóżcie mi ze zrozumieniem. Problem mam taki:<br /><br />[syntax=c]<br /><br />lcd_init(); //inicjalizacja LCD<br />//wybor napiecia odniesienia jako Vcc<br />ADMUX |= (1&lt;&lt;REFS0);<br />//wlaczenie modulu ADC i ustawienie preskalera na 64<br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);<br />lcd_cls();<br />//pomiar napiecia na wejsciu ADC0<br />lcd_int(pomiar(0));<br />//jak zalana latarka wlacz buzer<br />if (pomiar(5)&lt;940) buzer_on;<br /><br />}<br />}<br />// Definicja funkcji dokonujacej pomiaru<br />uint16_t pomiar(uint8_t kanal)<br />{<br />//ustawienie wybranego kanalu ADC w rejestrze ADMUX<br />ADMUX |= (ADMUX &amp; 0xF8) | kanal;<br />//START pomiaru przez ustawienie bitu ADSC w rejestrze ADCSRA<br />ADCSRA |= (1&lt;&lt;ADSC);<br />//oczekiwanie na koniec pomiaru (dopoki bit ADSC=1)<br />while (ADCSRA &amp; (1&lt;&lt;ADSC));<br />//po zakonczeniu pomiaru , gdy bit ADSC=0 , zwrocenie wyniku w postaci<br />//16-to bitowej wartosci z rejestrow ADCH i ADCL<br />return ADCW;<br /><br />}<br />[/syntax]<br /><br /><span style="color: #FF0000">[proszę używać znaczników [ syntax = c ] a nie [ code ] - dobrze ? tak jak teraz poprawiłem mirekk36]</span><br /><br />Jak widać, program mierzy napięcie na dwóch wejściach ADC. Kłopot w ty, że na wyświetlaczu cały czas mam odczyt z ADC5. Jak usunę linię &quot;if (pomiar(5)&lt;940) buzer_on;&quot; to wtedy mam odczyt z ADC0. Założenie było takie, że na wyświetlaczu bedzie odczyt z ADC0 a alarm jest założony na ADC5. Niestety, nie mam pojęcia co jest grane <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=415">mario</a> — 7 sie 2012, o 22:13</p><hr />
]]></content>
</entry>
</feed>