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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-12T17:15:08+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4466&amp;mode</id>
<entry>
<author><name><![CDATA[Cyklonus]]></name></author>
<updated>2016-12-12T17:15:08+01:00</updated>
<published>2016-12-12T17:15:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177253#p177253</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177253#p177253"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177253#p177253"><![CDATA[
CONSOLE też pokazywał 1MHz, tam zawsze zaglądam. Oscyloskop niestety był innego zdania. <br /><br />Dzięki za rady. Muszę wypróbować. <br /><br />Też mam Eclipse Mars wypakowany, ale jakoś nie używam <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />. Po tych problemach odpaliłem Eclipse Neon i działa. Ale może jednak przesiądę się na mars skoro przetestowany w boju <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=4700">Cyklonus</a> — 12 gru 2016, o 17:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-12-12T17:06:32+01:00</updated>
<published>2016-12-12T17:06:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177252#p177252</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177252#p177252"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177252#p177252"><![CDATA[
<div class="quotetitle">Cyklonus napisał(a):</div><div class="quotecontent"><br />To co bierze się za pewnik,<br /></div><br />Nic się nie bierze za pewnik - tylko ZAWSZE - ale to ZAWSZE zagląda się do okienka CONSOLE po kompilacji i nie ma siły - tam ZAWSZE ZOBACZYSZ z jakim taktowaniem jest ustawiony projekt tzn z jakim się kompiluje<br /><br />bo owszem takie zaciachy się czasem zdarzają gdy się uszkodzi workspace i ja szczególnie miałem z tym do czynienia w keplerze ... Mnie na dzisiaj najlepiej pasuje Eclipse MARS<br /><br />poza tym - gdy masz jakiś problem to ZAWSZE możesz skorzystać do testów chociażby z tego lekkiego i zwinnego programiku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> MkCLIPSE<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic16986.html" >topic16986.html</a><!-- l --><br /><br />sprawdź sam i zobacz <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> — 12 gru 2016, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Cyklonus]]></name></author>
<updated>2016-12-12T17:02:57+01:00</updated>
<published>2016-12-12T17:02:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177251#p177251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177251#p177251"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=177251#p177251"><![CDATA[
Udało się rozwiązać problem. W ruch poszedł nawet oscyloskop <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Kłopoty stwarzał Eclipse. Z jakiegoś powodu zmiana zegara w projekcie nie miała żadnego wpływu na program. Kompilator ciągle widział 8MHz. Eclipse Gadget widział taką wartość jak ustawiałem w projekcie,także też kłamał. Dopiero stworzenie nowego projektu pomogło. Może to wina, że używam wersji Kepler ? Nie mniej bardzo irytujący problem. To co bierze się za pewnik, niestety zawodzi. Na szczęście już jestem do tego przyzwyczajony, po codziennym obcowaniu z elektroniką <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4700">Cyklonus</a> — 12 gru 2016, o 17:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[43kuku]]></name></author>
<updated>2016-12-07T19:11:59+01:00</updated>
<published>2016-12-07T19:11:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176801#p176801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176801#p176801"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176801#p176801"><![CDATA[
Polecam mimo wszystko założyć swój temat, wstaw zmienione fragmenty kodu (twoje zmiany)...<br />Możesz sprawdzić debugerem na led, może coś wyjdzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3190">43kuku</a> — 7 gru 2016, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Cyklonus]]></name></author>
<updated>2016-12-07T18:54:35+01:00</updated>
<published>2016-12-07T18:54:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176797#p176797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176797#p176797"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=176797#p176797"><![CDATA[
Witam,<br /><br />Odkopię stary temat ponieważ nie chcę zakładać nowego. <br />Korzystam z biblioteki 1wire z bluebook, która wyżej była przedstawiana. Mam z nią dziwny problem na Atmega8. Wszystko działa jak należy przy taktowaniu 8Mhz z wewnętrznego oscylatora. Jednak gdy zmniejszam (4, 2, 1Mhz) częstotliwość, czujnik nie odpowiada. Oczywiście zmieniam odpowiednio timer dla każdej częstotliwości. Dołożyłem dodatkową zmienną, która zmienia się co sekundę na wyświetlaczu, aby mieć pewność, że zliczanie jest ok. Fuse bity i FCPU w programie też odpowiednio są ustawiane. Dodam, że korzystam z  Eclipse w wersji Kepler.<br /><br />Spotkał się ktoś z podobnym problemem ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4700">Cyklonus</a> — 7 gru 2016, o 18:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-05-11T06:36:00+01:00</updated>
<published>2015-05-11T06:36:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128810#p128810</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128810#p128810"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128810#p128810"><![CDATA[
S1_flag odpowiada za start odczytu a zmienna sekunda odczytuje w 3 krokach. Na moje sie nie da gdyż ok 750 ms trwa odczyt z tego co pamiętam.<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 11 maja 2015, o 06:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mk77]]></name></author>
<updated>2015-05-10T20:52:51+01:00</updated>
<published>2015-05-10T20:52:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128794#p128794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128794#p128794"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=128794#p128794"><![CDATA[
Mam Atmega8 domyślnie ustawioną na 1MHz i przy ustawieniu<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">     <br />TCCR2 |= (1&lt;&lt;WGM21);<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);<br />OCR2 = 8;<br />TIMSK |= (1&lt;&lt;OCIE2);</div><br /><br />Pierwszy odczyt <br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(11);</div><br />jeszcze przed pętlą while(1) pojawia się odrazu<br />kolejne odczyty z kodu<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">           if(s1_flag) {   <br />              if( 0 == (sekundy%3) ) czujniki_cnt = search_sensors();<br />              if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />              if( 2 == (sekundy%3) ) {<br />                 if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(10);<br />                 }                 <br />              s1_flag=0;<br />           } <br /></div><br /><br />pojawiają się: pierwszy po około 1-2s a każde kolejne po około 50s. <br />Chciał bym uzyskać odczyt jak najczęściej. Jak mam to ustawić ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8923">mk77</a> — 10 maja 2015, o 20:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz_dan]]></name></author>
<updated>2014-09-16T14:28:22+01:00</updated>
<published>2014-09-16T14:28:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=95661#p95661</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=95661#p95661"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=95661#p95661"><![CDATA[
Ponownie muszę wrócić do tego tematu... Eh... Czujnik działał pięknie, wszystko było OK, zacząłem wprowadzać zmiany związane z wyświetlaniem temperatury na LCD i zmiany w podłączeniu. Testowałem tryb normal i parasite. Nie wiem dlaczego ale czujnik nie chce nic pokazywać... Nie wiem gdzie szukać problemu? Podmieniłem czujnik na inny, zmieniłem przewody połączeniowe, wgrałem nowy kod i nic... Nie wykrywa mi czujnika... Cały czas na wyświetlaczu pokazuje error. Czy ktoś ma jakiś pomysł co mogę sprawdzić?<br /><br /><br /><span style="text-decoration: underline">Problem rozwiązany. Źle ustawiłem fuse bity...</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3095">mateusz_dan</a> — 16 wrz 2014, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Chudy]]></name></author>
<updated>2014-09-10T17:04:19+01:00</updated>
<published>2014-09-10T17:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94955#p94955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94955#p94955"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94955#p94955"><![CDATA[
Przykład:<br />[syntax=c]void display_temp_lcd(uint8_t x, uint8_t y) {<br />lcd_locate(y, x);<br />if (subzero)<br />lcd_str(&quot;-&quot;); // jeśli subzero==1 wyświetla znak minus (temp. ujemna)<br />else<br />lcd_str(&quot; &quot;); // jeśli subzero==0 wyświetl spację zamiast znaku minus (temp. dodatnia)<br />lcd_int(cel); // wyświetl dziesiętne części temperatury<br />lcd_str(&quot;.&quot;); // wyświetl kropkę<br />lcd_int(cel_fract_bits); // wyświetl dziesiętne części stopnia<br />lcd_str(&quot;\x80&quot; &quot;C &quot;); // wyświetl znak jednostek (C - stopnie Celsiusza)<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=909">Chudy</a> — 10 wrz 2014, o 17:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz_dan]]></name></author>
<updated>2014-09-10T16:43:24+01:00</updated>
<published>2014-09-10T12:25:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94931#p94931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94931#p94931"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=94931#p94931"><![CDATA[
Witam.<br /><br />Mam jeszcze jeden problem z czujnikiem DS18B20, a dokładnie to z wyświetlaniem temperatur odczytanych przez niego. Sprawa pewnie prosta ale jakoś nie mogę wpaść na rozwiązanie tego problemu. W kodzie od Pana Mirka wyświetla T1 i T2, a pod spodem temperatury. T1 i T2 są w jednej linii i pod nimi wartości temperatur też w jeden linii obok siebie. Ja chciałbym aby temperatury wyświetlały się jedna pod drugą. W pierwszej linii jedna temperatura, pod spodem następna... Tylko nie wiem jak to zrobić ponieważ void display_temp(uint8_t x) robi mi trochę zamieszania i nie wiem jak to zmodifikować...<br /><br />U Pana Mirka to wygląda tak, ale tutaj jest na sztywno określone, że wszystkie temperatury mają się wyświetlać w drugiej linii. Ja chciałbym żeby temperatury wyświetlały się pod sobą czyli parametr y nie może być sztywny...<br /> <br />[syntax=c]/* wyświetlanie temperatury na pozycji X w drugiej linii LCD */<br />void display_temp(uint8_t x) {<br />lcd_locate(1,x);<br />if(subzero) lcd_str(&quot;-&quot;);/* jeśli subzero==1 wyświetla znak minus (temp. ujemna) */<br />else lcd_str(&quot; &quot;);/* jeśli subzero==0 wyświetl spację zamiast znaku minus (temp. dodatnia) */<br />lcd_int(cel);/* wyświetl dziesiętne części temperatury  */<br />lcd_str(&quot;.&quot;);/* wyświetl kropkę */<br />lcd_int(cel_fract_bits); /* wyświetl dziesiętne części stopnia */<br />lcd_str(&quot; C &quot;); /* wyświetl znak jednostek (C - stopnie Celsiusza) */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3095">mateusz_dan</a> — 10 wrz 2014, o 12:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz_dan]]></name></author>
<updated>2014-03-17T15:41:18+01:00</updated>
<published>2014-03-17T15:41:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74710#p74710</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74710#p74710"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74710#p74710"><![CDATA[
Kombinowałem z częstotliwościami, próbowałem na zewnętrznym kwarcu 8Mhz, wydaje mi się, że dobrze dobierałem wartości OCR2. Działa spoko ale na jednym czujniku. Drugiego nie chce wyczytać. Sprawdzałem jeszcze raz oba czujniki i są dobre, pokazują taka samą temperaturę. Tylko problem bo nie chcą działać obydwa na raz... Podłączałem to na płytce stykowej na parę sposobów i nic. Nie wiem dalej jak jest poprawnie, czy mam przed każdym czujnikiem dawać rezystor 4.7 czy wystarczy tylko przy jednym. Ma ktoś jakiś pomysł co może być nie tak?<br /><br />VCC - czerwony; GND - czarny; DQ - biały<br /><a href="http://forum.atnel.pl/_obrazki/o/3095/85529b15259914f57e92eea84e8e28b5.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3095/85529b15259914f57e92eea84e8e28b5.JPG" alt="Obrazek" /></a><br /><br /><br /><strong>Układ już działa. Dziękuje za pomoc!</strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3095">mateusz_dan</a> — 17 mar 2014, o 15:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-17T09:24:56+01:00</updated>
<published>2014-03-17T09:24:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74679#p74679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74679#p74679"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74679#p74679"><![CDATA[
<div class="quotetitle">ramad napisał(a):</div><div class="quotecontent"><br />mam nadzieje że nie popełniam żadnej zbrodni  Chciałbym się podpiąć do tematu tylko z trochę inna kwestią.<br /></div><br /><br />no zbrodni nie - ale zobacz sam - zdecydowanie przydałoby się założyć nowy wątek bo to całkiem inne pytanie, więc na przyszłość proszę pamiętaj o tym ok ?<br /><br /><div class="quotetitle">ramad napisał(a):</div><div class="quotecontent"><br />Próbuję za pomocą prostej instrukcji warunkowej if ( cel &gt; 30) PK1_ON; ustawić stan wysoki na jednym z portów aby zadziałał przekaźnik,jednak powyżej temperatury 30c nic sie nie dzieje. Bardzo proszę chociaż o jakąś podpowiedź<br /></div><br /><br />No ale sam to przeczytaj i teraz pomyśl - ja ale pewnie inni też chcieliby pomóc - tylko jak ? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> przecież nie pokazujesz ANI kawałka swojego programu, ani schematu - a może masz coś źle podłączone w stosunku do programu ...<br /><br />no jak mówię pomyśl sam - jak można odpowiedzieć na tak zadane pytanie ok?<br /><br />więc je uzupełnij przede wszystkim<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 mar 2014, o 09:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ramad]]></name></author>
<updated>2014-03-17T08:18:23+01:00</updated>
<published>2014-03-17T08:18:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74678#p74678</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74678#p74678"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74678#p74678"><![CDATA[
Witam serdecznie, jestem tu nowy i początkujący, mam nadzieje że nie popełniam żadnej zbrodni <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Chciałbym się podpiąć do tematu tylko z trochę inna kwestią. Korzystam z bibliotek Mirka, wszystko mi ładnie działa. Chce dokonywać sterowania przekaźniczkami za pomocą temperatury czytanej z dsa i tu zaczynają sie schody. Zaglądałem do bluebooka i jeżeli wszystko dobrze zrozumiałem to jedno-bajtowa zmienna cel przetrzymuje dziesiętna część temp. która jest wyświetlana na LCD po konwersji liczby całk. na string. Próbuję za pomocą prostej instrukcji warunkowej if ( cel &gt; 30) PK1_ON; ustawić stan wysoki na jednym z portów aby zadziałał przekaźnik,jednak powyżej temperatury 30c nic sie nie dzieje. Bardzo proszę chociaż o jakąś podpowiedź <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=3022">ramad</a> — 17 mar 2014, o 08:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Chudy]]></name></author>
<updated>2014-03-16T18:09:40+01:00</updated>
<published>2014-03-16T18:09:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74594#p74594</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74594#p74594"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74594#p74594"><![CDATA[
Jeśli chcesz uzyskać przerwanie co 10ms (100Hz), to OCR2 musisz dać 38 <br /> <div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />8 MHz / 1024 (prescaler) / 100 Hz = 78 (wartość OCRx) <br /><br />16 MHz / 1024 (prescaler) / 100 Hz = 156 (wartość OCRx) <br /><br />20 MHz / 1024 (prescaler) / 100 Hz = 195 (wartość OCRx)<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=909">Chudy</a> — 16 mar 2014, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mateusz_dan]]></name></author>
<updated>2014-03-16T17:13:10+01:00</updated>
<published>2014-03-16T17:13:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74581#p74581</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74581#p74581"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=74581#p74581"><![CDATA[
Witam.<br /><br />Też borykam się z problemem jak moim przedmówcy. Próbuję przerobić program Pana Mirka na Atmege8. W zasadzie to zmieniłem tylko co opisywane było powyżej.<br /><br />main.c<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">int main(void) {<br />   /* ustawienie TIMER0 */<br />   TCCR2 |= (1&lt;&lt;WGM21);            // tryb CTC<br />   TCCR2 |= (1&lt;&lt;CS21) | (1&lt;&lt;CS22);     //prescaler = 256<br />   OCR2 = 156;                     // dodatkowy podział przez 156 (rej. przepełnienia) */<br />   TIMSK |= (1&lt;&lt;OCIE2);            // zezwolenie na przerwanie CompareMatch */<br /></div><br /><br />onewire.h<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">/* Wybór PINu oraz PORTu na magistralę 1Wire */<br />#define OW_PIN  PD1<br />#define OW_IN   PIND<br />#define OW_OUT  PORTD<br />#define OW_DDR  DDRD</div><br /><br />Pozostały kod pozostawiłem bez zmian. Nie wiem czy mam jeszcze coś zmienić? <br />Nie wiem co z tymi fragmentami kodu:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">/* czekamy 750ms na dokonanie konwersji przez podłączone czujniki */<br />   _delay_ms(750);</div><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if(++cnt&gt;99) {   /* gdy licznik ms &gt; 99 (minęła 1 sekunda) */</div><br /><br />Mam Atmege8 z kwarcem wewnętrznym ustawiony na 1Mhz.<br />Po dokonaniu zmian jakie opisałem powyżej czujnik działa i wydaje się pokazywać dość realną temperaturę. Problem pojawia się gdy chce podłączyć dwa czujniki. Jeden czujnik czyta zawsze przy drugim zawsze jest error. Obydwa czujniki są na pewno sprawne. Czy jeśli dołączam drugi czujnik muszę zastosować do niego rezystor 4.7k? Przy podłączeniu kolejnych czujników każdy musi mieć rezystor? Co może być przyczyną nie wyświetlania drugiej temperatury?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3095">mateusz_dan</a> — 16 mar 2014, o 17:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-01-09T23:41:31+01:00</updated>
<published>2014-01-09T23:41:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64462#p64462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64462#p64462"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64462#p64462"><![CDATA[
<div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Przejrzałem to jeszcze raz wszystko teraz już rozumiem . Autor użył chyba celowo kwarcu 11 0592 żeby łatwiej było obliczyć 100 Hz a rejestr OCR2 służy do dodatkowego podziału<br /></div><br /><br />Ło Matko <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a toś pan fajny wniosek wyciągnął tylko że troszkę z kosmosu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo co za różnica jaki kwarc / taktowanie ?<br /><br />tzn że przy 8MHz albo przy 16MHz albo przy 20MHz czy innej częstotliwości nie da się obliczyć 100 Hz ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... oj oj ... proszę poczytać dokładniej książkę (Bluebooka) a SZCZEGÓLNIE rozdział o multipleksowaniu LED - tak często pomijany przez czytelników - głównie ze względu na to że wydaje im się jakobym ja namawiał kogoś na używanie po wsze czasy takiego wyświetlacza .... Panie drogi - w tym rozdziale akurat przekazuję sporo ważnych rzeczy na temat programowania w C a szczególnie o timerach i gdybyś go przeczytał to nigdy byś do takiego dziwnego wniosku nie doszedł a za to potrafiłbyś z dowolnej częstotliwości zrobić sobie 100 Hz - o proszę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />8 MHz / 1024 (prescaler) / <span style="color: #FF0000"><strong>100 Hz</strong></span> = 78 (wartość OCRx) <br /><br />16 MHz / 1024 (prescaler) / <span style="color: #FF0000"><strong>100 Hz</strong></span> = 156 (wartość OCRx) <br /><br />20 MHz / 1024 (prescaler) / <strong><span style="color: #FF0000">100 Hz</span></strong> = 195 (wartość OCRx) <br /><br />i co nie da się ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... przecież przez całą książkę pokazuję jak korzystać z dobrodziejstw możliwości dowolnej zmiany taktowania<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Mam takie jeszcze pytanie Timer 2 to w atmedze 8 timer 16 bitowy<br /></div><br /><br />posłuchaj - a może jednak WARTO zajrzeć do noty PDF tak starego już procka jak Babcia ATmega8 ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... bo coś mi się wydaje, że mijasz się z prawdą - jak to lubią mówić politycy <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br /><div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Szukałem w książce coś na temat tego jak użyć licznik po prostu do zliczania impulsów (licznik zdarzeń) ?<br /></div><br /><br />Nie znajdziesz książki w której ktoś opisze ci jak zrobić licznik na taśmie którą ty akurat sobie wykręciłeś z jakiejś drukarki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie tędy droga - i nie po to są książki ...<br /><br />ale jakbyś poczytał ją na prawdę chociaż RAZ - JEDEN RAZ w całości to gwarantuję ci że zobaczyłbyś opisane mechanizmy - które z powodzeniem można do tego zastosować - chociażby obsługa RC5 i możliwość obsługi przerwania ICP ....<br /><br />no ale jak się czyta książkę na wyrywki albo szukając w niej rozdziałów o liczniku na twoim pasku z drukarki - to nie dziw się - że ciężko idzie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Ps. Mam tez problem z PWM sprzętowym w atmedze 8 topic839.html<br /></div><br /><br />no ładnie - tam prosisz o poprawny kod na forum - a rozumiem, że mi się tylko wydawało że poprawny kod na sprzętową obsługę PWM umieściłem w książce tak ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />na prawdę bez żadnej ironii i podśmiewania się - polecam - weź ty usiądź na spokojnie i przeczytaj tą książkę od deski do deski JEDEN raz - to nie boli - a zobaczysz ile pomysłów ci potem przyjdzie do głowy nie mówiąc już ile rzeczy ci się w tej głowie wyjaśni ok?<br /><br />a jak będziesz miał jakieś pytania bo czegoś nie będziesz rozumiał to wtedy śmiało pisz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 sty 2014, o 23:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cocaine2012]]></name></author>
<updated>2014-01-09T23:28:38+01:00</updated>
<published>2014-01-09T23:28:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64461#p64461</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64461#p64461"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64461#p64461"><![CDATA[
Przejrzałem to jeszcze raz wszystko teraz już rozumiem . Autor użył chyba celowo kwarcu 11 0592 żeby łatwiej było obliczyć 100 Hz a rejestr OCR2 służy do dodatkowego podziału.<br />Dopasuje sobie wartości preskalera i OCR2 żeby wartość czasu odczytywania z DS18B20 była powyżej 0,8 s zależy mi na dokładności .<br /><br />Mam takie jeszcze pytanie Timer 2 to w atmedze 8 timer 16 bitowy . Ostatnio rozebrałem drukarkę i znalazłem tam silniczek z tarczą w paski i wokół niej fotoelementy . Szukałem w książce coś na temat tego jak użyć licznik po prostu do zliczania impulsów (licznik zdarzeń) ? Chciałem zmierzyć ilość obrotów silnika na minutę lub ilość innych zdarzeń jakiś impulsów itp. <br /><br />Ps. Mam tez problem z PWM sprzętowym w atmedze 8  <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic839.html" >topic839.html</a><!-- l --><br /><br />dziękuje pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=265">cocaine2012</a> — 9 sty 2014, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-01-07T23:43:59+01:00</updated>
<published>2014-01-07T23:43:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64253#p64253</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64253#p64253"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64253#p64253"><![CDATA[
<div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Nie do końca rozumiem skąd wzięło się 1024 i 100 Hz ?<br /></div><br />Na końcu jest funkcja przerwania, która w zamyśle ma być uruchamiana co 10ms (z częstotliwością 100Hz) wtedy zmienna sekundy zmienia się dokładnie co sekundę. Jak inaczej ustawisz timer to będzie się zmieniać co inny okres czasu.<br /><div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Ja mam preskaler 256 hm czyli mamy 8000000/256/100 = ~~ 311 hm ?<br /></div><br />To preskaler jest za mały i nie możesz ustawić 100Hz. A licząc od drugiej strony jak wpisałeś 200 przy preskalerze 256 to wychodzi częstotliwość 8000000/256/(200+1) = 155Hz. Czyli sekunda u ciebie zmienia się co 0,6432s.<div class="quotetitle">cocaine2012 napisał(a):</div><div class="quotecontent"><br />Która wartość odpowiada za przerwanie do tego by ustawić odpowiedni czas konwersji dla 1wire ?<br /></div><br />[syntax=c]/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /> <br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br /> *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br /> *  to pokaż komunikat o błędzie<br /> */[/syntax]<br />I w twoim przypadku co 3*0,6432s masz wysłany rozkaz, a za 0,6432s odczytujesz wynik pomiaru (teoretycznie to trochę mało bo wynik jest gotowy po 750ms, ale to zależy jaka dokładność nas interesuje)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 sty 2014, o 23:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cocaine2012]]></name></author>
<updated>2014-01-07T23:13:19+01:00</updated>
<published>2014-01-07T23:13:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64244#p64244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64244#p64244"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64244#p64244"><![CDATA[
Zanim napisałeś posta przeczytałem troszkę jeszcze o 1wire (czas konwersji) i zacząłem dalej kombinować w programie zmieniłem wpis OCR2 = 156 na OCR2 = 200 i zaczął czujnik działać tylko nie byłem pewien czy dobry wynik podaje ale w pokoju miałem 23 stopnie jak ścisnąłem czujnik w palcach wyszło jakieś 31 stopni powinno być dobrze . Nie do końca rozumiem skąd wzięło się 1024  i 100 Hz ? Ja mam preskaler 256 hm czyli mamy 8000000/256/100 = ~~ 311 hm ? Która wartość odpowiada za przerwanie do tego by ustawić odpowiedni czas konwersji dla 1wire ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=265">cocaine2012</a> — 7 sty 2014, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-01-07T20:41:06+01:00</updated>
<published>2014-01-07T20:41:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64198#p64198</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64198#p64198"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64198#p64198"><![CDATA[
Timer0 w atmedze 8 jest okrojony więc słusznie zmieniłeś na timer2.<br />Błędny pomiar może wynikać z tego, że odczytujesz wynik zanim skończy się konwersja temperatury.<br />Aby ustawić timer dzielisz częstotliwość taktowania przez preskaler i przez częstotliwość z jaką mają pojawiać się przerwania(100Hz w tym przykładzie), czyli dzielisz 8000000/1024/100 = 78 odejmujesz jeszcze 1, bo timer liczy od 0 i należy wpisać wartość 77 (&lt;255 czyli OK) i ustawić preskaler na 1024. Żeby zmienić odświeżanie w trzech miejscach zmień sobie sekundy%3 na sekundy%5<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 7 sty 2014, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cocaine2012]]></name></author>
<updated>2014-01-06T20:35:19+01:00</updated>
<published>2014-01-06T20:35:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64098#p64098</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64098#p64098"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=64098#p64098"><![CDATA[
Mi po kompilacji programu z książki wyświetla dużo errorów , próbuje właśnie &quot;przełożyć&quot; program na Atmega 8 na zewnętrznym kwarcu 8 Mhz <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/265/ec88b530f48abc68dfd2494b0a933e23.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/265/ec88b530f48abc68dfd2494b0a933e23.JPG" alt="Obrazek" /></a><br /><br />Później podmieniłem wpisy tam gdzie wskazywało błędy na fragmenty z zawartego programu w poście <br /><br />[syntax=c]TCCR2 |= (1&lt;&lt;CS21) | (1&lt;&lt;CS22); //prescaler = 256<br /><br />        TCCR2 |= (1&lt;&lt;WGM21);                    // tryb CTC<br /><br />        TIMSK |= (1&lt;&lt;OCIE2);                            // odblokowanie przerwania COMPARE MATCH<br /><br />        OCR2 = 156;[/syntax]<br /><br />oraz<br /><br />[syntax=c]ISR(TIMER2_COMP_vect)[/syntax]<br /><br />Po kompilacji nie ma już błędów , wyświetlacz wyświetla T1 85 C a T2 error podłączyłem tylko 1 czujnik 1 Wire a zadeklarowałem 2 <br /><br />Jak ustawić ten timer na kwarc 8 Mhz lub na ten kwarc 11... żeby czujnik prawidłowo działał a nie wyświetlało 85 C <br /><br />Gdzie zmienić &quot;odświeżanie&quot; wyniku ? Chodzi mi o to aby pomiar dokonywany był np co 5 s <br /><br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=265">cocaine2012</a> — 6 sty 2014, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-10-13T22:23:40+01:00</updated>
<published>2013-10-13T22:23:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52887#p52887</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52887#p52887"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52887#p52887"><![CDATA[
dziwne tylko, bo zamiast diody wyświetlałem sekundy na lcd i wszystko grało! Leciały jak w zegarku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 13 paź 2013, o 22:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-13T22:17:12+01:00</updated>
<published>2013-10-13T22:17:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52885#p52885</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52885#p52885"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52885#p52885"><![CDATA[
a już miałem pisać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> że trzeba sobie takie coś testować panie kochany - testować<br /><br />masz jakąś diodę LED pod ręką ? chyba masz<br /><br />to co za kłopot ją podłączyć i np zmieniać jej stan w każdym z IFów - już oczami byś widział czy ci timer działa czy nie - czy dobrze czy nie <br /><br />zapamiętaj sobie ten sposób<br /><br />DEBUGER na jednej diodzie LED<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 paź 2013, o 22:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-10-13T22:13:28+01:00</updated>
<published>2013-10-13T22:13:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52884#p52884</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52884#p52884"/>
<title type="html"><![CDATA[Re: 1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52884#p52884"><![CDATA[
Siadłem do noty atmega8 i znalazłem błędnie skonfigurowany timer... poprawiłem i wszystko działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 13 paź 2013, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[t0mek]]></name></author>
<updated>2013-10-13T17:13:44+01:00</updated>
<published>2013-10-13T17:13:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52839#p52839</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52839#p52839"/>
<title type="html"><![CDATA[1WIRE + ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4466&amp;p=52839#p52839"><![CDATA[
Witam<br /><br />Mam problem z uruchomieniem 1wire na Atmega8, siedzę już dłuższy czas i nie mogę dojść. Wgrywam program Mirka który kiedyś odpalałem na zestawie ATB i chodził a teraz lipa. Non stop mi wyświetla error czujników. <br /><br />Co zrobiłem i sprawdziłem:<br />1. Zasilenie czujników ds18b20 i połączenie z prockiem - sprawne 100%, magistrala 3 przewodowa +/-/dane z podciągniętym rezystorem 4,7kohm do vcc<br />2. Sprawdziłem w onewire.h porty - zgodne z moim podłączeniem PD5 <br />3. Podłączałem drugi czujnik - może uszkodzony ale to samo<br />4. Zmieniałem konfiguracje timera bo mirka program byl na Atmega32 i 11Mhz - ale to działa raczej dobrze bo zrobiłem zwiększanie o 1 i wyświetlanie na lcd i dodawało mi co 1s <br /> <br />Nie wiem, może jakiś mały szczegół ominąłem, może któryś z kolegów by świeżym okiem rzucił, poniżej kody źródłowe. Jak by coś trzeba więcej to podeśle...<br />Atmega działa prawidłowo wyświetla itd.., do czujnika mam podpięte +5v i GNd a linie danych do PD5, jak trzeba narysuje schemat ale chyba wszystko jasne  <br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-09-13<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br /><br />void display_temp(uint8_t x);<br /><br />uint8_t czujniki_cnt;/* ilość czujników na magistrali */<br />volatile uint8_t s1_flag;/* flaga tyknięcia timera co 1 sekundę */<br />volatile uint8_t sekundy;/* licznik sekund 0-59 */<br /><br />uint8_t subzero, cel, cel_fract_bits;<br /><br /><br />int main(void) {<br /><br /><br />TCCR2 |= (1&lt;&lt;CS21) | (1&lt;&lt;CS22); //prescaler = 256<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb CTC<br />TIMSK |= (1&lt;&lt;OCIE2);// odblokowanie przerwania COMPARE MATCH<br />OCR2 = 156;<br /><br /><br /><br />lcd_init();/* inicjalizacja LCD */<br /><br />/* sprawdzamy ile czujników DS18xxx widocznych jest na magistrali */<br />czujniki_cnt = search_sensors();<br /><br /><br />/* wysyłamy rozkaz wykonania pomiaru temperatury<br /> * do wszystkich czujników na magistrali 1Wire<br /> * zakładając, że zasilane są w trybie NORMAL,<br /> * gdyby był to tryb Parasite, należałoby użyć<br /> * jako pierwszego prarametru DS18X20_POWER_PARASITE */<br />DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /><br />/* czekamy 750ms na dokonanie konwersji przez podłączone czujniki */<br />_delay_ms(1000);<br /><br />/* dokonujemy odczytu temperatury z pierwszego czujnika o ile został wykryty */<br />/* wyświetlamy temperaturę gdy czujnik wykryty */<br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);/* wyświetlamy informację o błędzie jeśli np brak czujnika lub błąd odczytu */<br />}<br /><br />/* dokonujemy odczytu temperatury z pierwszego czujnika o ile został wykryty */<br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,9);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />sei();/* włączamy globalne przerwania */<br /><br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;  T1       T2&quot;)); /* wyświetl napisy w zerowej linii LCD */<br /><br />/* pętla nieskończona */<br />while(1) {<br /><br /><br />if(s1_flag) {/* sprawdzanie flagi tyknięć timera programowego co 1 sekundę */<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 0 sprawdzaj ilość dostępnych czujników */<br />if( 0 == (sekundy%3) ) {<br /><br />uint8_t *cl=(uint8_t*)gSensorIDs;// pobieramy wskaźnik do tablicy adresów czujników<br />for( uint8_t i=0; i&lt;MAXSENSORS*OW_ROMCODE_SIZE; i++) *cl++ = 0; // kasujemy całą tablicę<br />czujniki_cnt = search_sensors();// ponownie wykrywamy ile jest czujników i zapełniamy tablicę<br />lcd_locate(0,8);<br />lcd_int( czujniki_cnt );// wyświetlamy ilość czujników na magistrali<br />}<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 1 wysyłaj rozkaz pomiaru do czujników */<br />if( 1 == (sekundy%3) ) DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br /><br />/* co trzy sekundy gdy reszta z dzielenia modulo 3 == 2 czyli jedną sekundę po rozkazie konwersji<br /> *  dokonuj odczytu i wyświetlania temperatur z 2 czujników jeśli są podłączone, jeśli nie<br /> *  to pokaż komunikat o błędzie<br /> */<br />if( 2 == (sekundy%3) ) {<br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(0);<br />else {<br />lcd_locate(1,0);<br />lcd_str(&quot; error &quot;);<br />}<br /><br />if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(9);<br />else {<br />lcd_locate(1,9);<br />lcd_str(&quot; error &quot;);<br />}<br />}<br /><br />/* zerujemy flagę aby tylko jeden raz w ciągu sekundy wykonać operacje */<br />s1_flag=0;<br />} /* koniec sprawdzania flagi */<br />} /* koniec pętli nieskończonej */<br />}<br /><br />/* wyświetlanie temperatury na pozycji X w drugiej linii LCD */<br />void display_temp(uint8_t x) {<br />lcd_locate(1,x);<br />if(subzero) lcd_str(&quot;-&quot;);/* jeśli subzero==1 wyświetla znak minus (temp. ujemna) */<br />else lcd_str(&quot; &quot;);/* jeśli subzero==0 wyświetl spację zamiast znaku minus (temp. dodatnia) */<br />lcd_int(cel);/* wyświetl dziesiętne części temperatury  */<br />lcd_str(&quot;.&quot;);/* wyświetl kropkę */<br />lcd_int(cel_fract_bits); /* wyświetl dziesiętne części stopnia */<br />lcd_str(&quot; C &quot;); /* wyświetl znak jednostek (C - stopnie Celsiusza) */<br />}<br /><br /><br />/* ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH */<br />/* pełni funkcję timera programowego wyznaczającego podstawę czasu = 1s */<br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt=0;/* statyczna zmienna cnt do odliczania setnych ms */<br /><br />if(++cnt&gt;200) {/* gdy licznik ms &gt; 99 (minęła 1 sekunda) */<br />s1_flag=1;/* ustaw flagę tyknięcia sekundy */<br />sekundy++;/* zwiększ licznik sekund */<br />if(sekundy&gt;59) sekundy=0; /* jeśli ilość sekund &gt; 59 - wyzeruj */<br />cnt=0;/* wyzeru licznik setnych ms */<br />}<br />}[/syntax]<br /><br />[syntax=c]/************************************************************************/<br />/*                                                                      */<br />/*        Access Dallas 1-Wire Device with ATMEL AVRs                   */<br />/*                                                                      */<br />/*              Author: Peter Dannegger                                 */<br />/*                      danni@specs.de                                  */<br />/*                                                                      */<br />/* modified by Martin Thomas &lt;eversmith@heizung-thomas.de&gt; 9/2004       */<br />/************************************************************************/<br />/*<br /> * onewire.h<br /> *<br /> *  Created on: 2009-08-22<br /> *      modyfikacje: Mirosław Kardaś<br /> */<br /><br />#ifndef ONEWIRE_H_<br />#define ONEWIRE_H_<br /><br />#include &lt;inttypes.h&gt;<br /><br />/*******************************************/<br />/* Hardware connection                     */<br />/*******************************************/<br /><br />/* Wybór PINu oraz PORTu na magistralę 1Wire */<br />#define OW_PIN  PD5<br />#define OW_IN   PIND<br />#define OW_OUT  PORTD<br />#define OW_DDR  DDRD<br /><br /><br /><br />/*******************************************/<br /><br />#define OW_MATCH_ROM0x55<br />#define OW_SKIP_ROM    0xCC<br />#defineOW_SEARCH_ROM0xF0<br /><br />#defineOW_SEARCH_FIRST0xFF// start new search<br />#defineOW_PRESENCE_ERR0xFF<br />#defineOW_DATA_ERR    0xFE<br />#define OW_LAST_DEVICE0x00// last device found<br />//0x01 ... 0x40: continue searching<br /><br />// rom-code size including CRC<br />#define OW_ROMCODE_SIZE 8<br /><br />uint8_t ow_reset(void);<br /><br />uint8_t ow_bit_io( uint8_t b );<br />uint8_t ow_byte_wr( uint8_t b );<br />uint8_t ow_byte_rd( void );<br /><br />uint8_t ow_rom_search( uint8_t diff, uint8_t *id );<br /><br />void ow_command( uint8_t command, uint8_t *id );<br /><br />void ow_parasite_enable(void);<br />void ow_parasite_disable(void);<br />uint8_t ow_input_pin_state(void);<br /><br /><br /><br />#endif /* ONEWIRE_H_ */[/syntax]<br /><br /><br /><br />Zmieniłem linie danych 1wire z PD7 na PC4 i wyświetla temperaturę ale tylko na początku po chwili wyskakuje cyfra wykrytych czujników i zamiast tempratury error<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1749">t0mek</a> — 13 paź 2013, o 17:13</p><hr />
]]></content>
</entry>
</feed>