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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-26T10:52:28+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14412&amp;mode</id>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-03-26T10:52:28+01:00</updated>
<published>2016-03-26T10:52:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157132#p157132</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157132#p157132"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157132#p157132"><![CDATA[
<div class="quotetitle">gordon10 napisał(a):</div><div class="quotecontent"><br />No racja. To chyba głównie te dalay-e po wyłączeniu przerwań dają takie efekty.<br /></div><br /><br />Multipleksowanie odbywa się w przerwaniu od timera. Wyłączasz przerwanie cli() (np. do obsługi DHT22) - multipleksowania brak, włączasz je ponownie sei () - multipleksowanie jest. To przełączenie widać jako przerwę (mrugnięcie) wyświetlanej wartości. Tu nie chodzi o delay <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ty nie używasz przerwań więc wszystko jest ok.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 26 mar 2016, o 10:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2016-03-26T10:45:27+01:00</updated>
<published>2016-03-26T10:45:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157129#p157129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157129#p157129"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157129#p157129"><![CDATA[
<div class="quotetitle">avrfun napisał(a):</div><div class="quotecontent"><br />jest pewna niedogodność. W czasie obsługi czujnika w tej bibliotece, &quot;na krótko&quot; wyłączane są przerwania.<br /></div>No racja. To chyba głównie te dalay-e po wyłączeniu przerwań dają takie efekty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 26 mar 2016, o 10:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-03-26T09:09:51+01:00</updated>
<published>2016-03-26T09:09:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157118#p157118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157118#p157118"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157118#p157118"><![CDATA[
<div class="quotetitle">gordon10 napisał(a):</div><div class="quotecontent"><br />Jeśli pozwolicie przyłączę się do tematu, bo ostatnio wszedłem w posiadanie tego czujnika i trafiłem na ten temat na forum. Udało mi się go uruchomić na tej bibliotece i fajnie działa. Nie zmieniałem nic w bibliotece (ustawiłem tylko port na C)<br /></div><br /><br />Witam.<br />Odczyt temperatury i wilgotności działa prawidłowo, ale jest pewna niedogodność. W czasie obsługi czujnika w tej bibliotece, &quot;na krótko&quot; wyłączane są przerwania. Gdy do wyświetlania danych zastosujesz wyświetlacz multipleksowany (7-seg LED) to od pewnej częstotliwości (akceptowanej dla mojego oka tzn. 4 * &gt;50Hz na cyfrę, czyli &gt;200Hz ) zaobserwujesz jego &quot;dławienie się&quot; (krótki, ale wyraźny brak wyświetlania). Przy niższych częstotliwościach multipleksowania tego efektu nie ma, ale jest ona zbyt mała dla komfortowego patrzenia na wyświetlacz.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 26 mar 2016, o 09:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordon10]]></name></author>
<updated>2016-03-25T23:57:16+01:00</updated>
<published>2016-03-25T23:57:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157103#p157103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157103#p157103"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=157103#p157103"><![CDATA[
Witam kolegów.<br />Jeśli pozwolicie przyłączę się do tematu, bo ostatnio wszedłem w posiadanie tego czujnika i trafiłem na ten temat na forum. Udało mi się go uruchomić na tej bibliotece i fajnie działa. Nie zmieniałem nic w bibliotece (ustawiłem tylko port na C) Tak na szybko skleciłem taki kod w main.c:<br /><br />DHT22 podłączony do pinu PC1 (Mega32)<br />Program wyświetla na LCD tylko całkowite części temperatury i wilgotności - w wolnej chwili pobawię się w ułamki<br /><br />main.c[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;DHT22/dht22.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />// ********************** DEKLARACJE ZMIENNYCH GLOBALNYCH ********************<br />struct dht22 dht22;// deklaracja zmiennej strukturalnej do odczytu z czujnika<br />float temp;<br />float humi;<br /><br />// ********************** FUNKCJA GLOWNA **************************************************<br />int main(void)<br />{<br /><br />//inicjalizacje<br />lcd_init();<br />lcd_LED(1);<br />dht_init(&amp;dht22, 1);// inicjalizacja DHT na pinie PC1<br />lcd_locate(0,0);<br />lcd_str_P( PSTR(&quot;start... &quot;) );<br />_delay_ms(1000);<br />lcd_cls();<br /><br /><br />//sei();// globalne zezwolenie na przerwania<br /><br />// ********************** PETLA GLOWNA ****************************************************<br />while(1)<br />{<br /><br />dht_read_data(&amp;dht22, &amp;temp, &amp;humi);      // odczyt danych z DHT<br /><br />lcd_locate(0,0);<br />lcd_str_P( PSTR(&quot;Temp: &quot;) );<br />lcd_int(temp);<br /><br />lcd_locate(1,0);<br />lcd_str_P( PSTR(&quot;Humi: &quot;) );<br />lcd_int(humi);<br /><br />_delay_ms(1000);<br /><br />}<br />}[/syntax]<br /><br />Może komuś się przyda.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=968">gordon10</a> — 25 mar 2016, o 23:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T16:55:00+01:00</updated>
<published>2016-02-05T16:55:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152818#p152818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152818#p152818"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152818#p152818"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />Zobacz jak to jest robione w bibliotece do DS18x20<br /></div><br /><br />Dziękuję. Sprawdzę ten trop <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2016-02-05T15:26:09+01:00</updated>
<published>2016-02-05T15:26:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152815#p152815</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152815#p152815"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152815#p152815"><![CDATA[
Zobacz jak to jest robione w bibliotece do DS18x20<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 5 lut 2016, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T12:46:25+01:00</updated>
<published>2016-02-05T12:46:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152792#p152792</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152792#p152792"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152792#p152792"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />Jest tam ponieważ w linii 52 przerwania są wyłączane.<br />A widocznie ważne są zależności czasowe i żeby przerwanie nie zakłócało <br />wykonania funkcji są najpierw wyłączane a potem z powrotem włączane.<br />Jeśli w swoim programie nie korzystasz z przerwań możesz je obie zakomentować.<br /></div><br /><br />Dzięki teraz to widzę. Uzupełniłem post powyżej. Korzystam z przerwań m.in. do multipleksowania LED (ISR(TIMER2_COMP_vect)). Czy można jakoś obejść to wyłączanie przerwań?<br />Może da się jakoś zakamuflować to mrugnięcie?<br />Stwierdziłem doświadczalnie, że bez wyłączania przerwań odczyt działa przy multipleksowaniu do 100Hz (to za mało na 6 lamp VFD). W jaki sposób można zmodyfikować ten krytyczny fragment biblioteki pomiędzy cli(), a sei()?<br /><br />Przepraszam za lawinę pytań. Mam wybór: dobre multipleksowanie lub obsługa DHT22. Nie umiem tego pogodzić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2016-02-05T12:42:11+01:00</updated>
<published>2016-02-05T12:42:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152791#p152791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152791#p152791"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152791#p152791"><![CDATA[
Jest tam ponieważ w linii 52 przerwania są wyłączane.<br />A widocznie ważne są zależności czasowe i żeby przerwanie nie zakłócało <br />wykonania funkcji są najpierw wyłączane a potem z powrotem włączane.<br />Jeśli w swoim programie nie korzystasz z przerwań możesz je obie zakomentować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 5 lut 2016, o 12:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T12:18:07+01:00</updated>
<published>2016-02-05T12:18:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152788#p152788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152788#p152788"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152788#p152788"><![CDATA[
Mam pytanie. Z jakich przerwań korzysta biblioteka do obsługi DHT22? W pliku dht22.c  (linia 89) jest tajemnicza linijka zgody na przerwania, ale nigdzie nie widać ciała tych przerwań.<br /><br />W niezrozumiały  sposób odczyt z czujnika interferuje z przerwaniem od TIMER2, w którym multipleksuję wyświetlacz LED. Wygląda to tak, że występuje mrugnięcie wyświetlacza LED za każdym wywołaniem funkcji odczytującej dane z czujnika DHT22. Na podglądzie z analizatora stanów logicznych widać to &quot;mrugnięcie&quot;:<br /><br /><a href="https://obrazkiforum.atnel.pl/9310/07c00a6d45ffeff3fe74b889862a2638.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9310/07c00a6d45ffeff3fe74b889862a2638.jpg" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/9310/b540657dc1cf9b3a730523e37b608b1c.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9310/b540657dc1cf9b3a730523e37b608b1c.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 12:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T11:09:02+01:00</updated>
<published>2016-02-05T11:09:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152775#p152775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152775#p152775"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152775#p152775"><![CDATA[
<div class="quotetitle">avrfun napisał(a):</div><div class="quotecontent"><br />Zrobiłem tak, ale musiałem typ strukturalny zdefiniować po swojemu. Nie wiem czy dobrze, ale kompilator to przyjmuje:<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />typedef struct dht22 {<br />uint8_t data[6];    /* data from sensor store here */<br />uint8_t pin;        /* DDR &amp; PORT pin */<br />}TDHT22;<br /> <br />extern TDHT22 dht22;<br />GeSHi<br /><br /><br />main.c<br />Składnia: [ Pobierz ] [ Ukryj ]<br />język c<br />dht_init(&amp;dht22,5);<br />GeSHi<br /><br /><br />Jak to zapisać nie ruszając biblioteki?<br /></div><br /><br />Poradziłem sobie w ten sposób i działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />[syntax=c]dht_read_data(&amp;dht22, &amp;temperature, &amp;humidity);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 11:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2016-02-05T10:56:39+01:00</updated>
<published>2016-02-05T10:56:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152774#p152774</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152774#p152774"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152774#p152774"><![CDATA[
A tak się nie da<br /><br />[syntax=c]struct dht22 {<br />    uint8_t data&#91;6&#93;;    /* data from sensor store here */<br />    uint8_t pin;        /* DDR &amp; PORT pin */<br />};[/syntax]<br /><br />[syntax=c]dht22 wilgotnosc;<br /><br />dht_init(&amp;wilgotnosc, 5);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 5 lut 2016, o 10:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T10:45:47+01:00</updated>
<published>2016-02-05T10:45:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152771#p152771</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152771#p152771"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152771#p152771"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />W pliku .h masz deklarację typu dht22. Linijki 26-28<br />teraz musisz sobie zdefiniować zmienną takiego typu i powinno zadziałać. <br />A Ty jak zrobiłeś?<br /></div><br />Zrobiłem tak, ale musiałem typ strukturalny zdefiniować po swojemu. Nie wiem czy dobrze, ale kompilator to przyjmuje:<br />[syntax=c]typedef struct dht22 {<br />uint8_t data&#91;6&#93;;    /* data from sensor store here */<br />uint8_t pin;        /* DDR &amp; PORT pin */<br />}TDHT22;<br /><br />extern TDHT22 dht22;[/syntax]<br /><br />main.c<br />[syntax=c]dht_init(&amp;dht22,5);[/syntax]<br /><br />Jak to zapisać nie ruszając biblioteki?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 10:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2016-02-05T10:32:41+01:00</updated>
<published>2016-02-05T10:32:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152767#p152767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152767#p152767"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152767#p152767"><![CDATA[
<div class="quotetitle">avrfun napisał(a):</div><div class="quotecontent"><br />Pliku main na razie brak. Utknąłem na semantyce. Spodziewałem się definicji typu strukturalnego: typedef struct {} THUMTEMP, utworzenia zmiennej: extern THUMTEM humtem i odwołania do niej: dht_init(&amp;humtem, 5).<br /></div><br />W pliku .h masz deklarację typu dht22. Linijki 26-28<br />teraz musisz sobie zdefiniować zmienną takiego typu i powinno zadziałać. <br />A Ty jak zrobiłeś?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 5 lut 2016, o 10:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T10:23:23+01:00</updated>
<published>2016-02-05T10:23:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152765#p152765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152765#p152765"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152765#p152765"><![CDATA[
Bardzo dziękuję.<br />Chodzi mi jednak o sposób przekazania danych do funkcji w tej konkretnej bibliotece. Chcę zrozumieć. W strukturze dht22 zdefiniowane są dwa pola data i pin. W jaki sposób przekazać do funkcji dht22_init() informację, że czujnik podłączony jest do PD5 (jak powinien wyglądać zapis; dht_init(&amp;dht22, 5) nie działa).<br />[syntax=c]struct dht22 {<br />uint8_t data&#91;6&#93;;    /* data from sensor store here */<br />uint8_t pin;        /* DDR &amp; PORT pin */<br />};[/syntax]<br />[syntax=c]void dht_init(struct dht22 *dht, uint8_t pin);[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zapytam może w taki sposób. Jak wygląda obecnie Twój plik main.c w tym projekcie?<br /></div><br />Pliku main na razie brak. Utknąłem na semantyce. Spodziewałem się definicji typu strukturalnego: typedef struct {} THUMTEMP, utworzenia zmiennej: extern THUMTEM humtem i odwołania do niej: dht_init(&amp;humtem, 5).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2016-02-05T10:19:00+01:00</updated>
<published>2016-02-05T10:19:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152764#p152764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152764#p152764"/>
<title type="html"><![CDATA[Re: DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152764#p152764"><![CDATA[
Zapytam może w taki sposób. Jak wygląda obecnie Twój plik main.c w tym projekcie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 5 lut 2016, o 10:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-05T09:23:17+01:00</updated>
<published>2016-02-05T09:23:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152756#p152756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152756#p152756"/>
<title type="html"><![CDATA[DHT22 - biblioteka - problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14412&amp;p=152756#p152756"><![CDATA[
Witam!<br />Mam gotową bibliotekę do obsługi czujnika wilgotności DHT22 (znaleziona w internecie), ale mam problem z jej uruchomieniem. Proszę o pomoc. Jak powinno wyglądać wywołanie funkcji dht22_init(...) oraz dht_read_tem(...) i dht_read_hum(...). Oto biblioteka:<br /><br />dht22.h<br />[syntax=c]/* struct dht22 AVR Lirary<br /> *<br /> * Copyright (C) 2015 Sergey Denisov.<br /> * Written by Sergey Denisov aka LittleBuster (DenisovS21@gmail.com)<br /> *<br /> * This library is free software; you can redistribute it and/or<br /> * modify it under the terms of the GNU General Public Licence<br /> * as published by the Free Software Foundation; either version 3<br /> * of the Licence, or (at your option) any later version.<br /> *<br /> * Original library written by Adafruit Industries. MIT license.<br /> */<br /><br />#ifndef __DHT22_H__<br />#define __DHT22_H__<br /><br />#include &lt;stdint.h&gt;<br /><br />/*<br /> * Sensor's port<br /> */<br />#define DDR_DHT DDRD<br />#define PORT_DHT PORTD<br />#define PIN_DHT PIND<br /><br />struct dht22 {<br />    uint8_t data&#91;6&#93;;    /* data from sensor store here */<br />    uint8_t pin;        /* DDR &amp; PORT pin */<br />};<br /><br />/**<br /> * Init dht sensor<br /> * @dht: sensor struct<br /> * @pin: PORT &amp; DDR pin<br /> */<br />void dht_init(struct dht22 *dht, uint8_t pin);<br /><br />/**<br /> * Reading temperature from sensor<br /> * @dht: sensor struct<br /> * @temp: out temperature pointer<br /> *<br /> * Returns 1 if succeful reading<br /> * Returns 0 if fail reading<br /> */<br />uint8_t dht_read_temp(struct dht22 *dht, float *temp);<br /><br />/**<br /> * Reading humidity from sensor<br /> * @dht: sensor struct<br /> * @hum: out humidity pointer<br /> *<br /> * Returns 1 if succeful reading<br /> * Returns 0 if fail reading<br /> */<br />uint8_t dht_read_hum(struct dht22 *dht, float *hum);<br /><br />/**<br /> * Reading temperature and humidity from sensor<br /> * @dht: sensor struct<br /> * @temp: out temperature pointer<br /> * @hum: out humidity pointer<br /> *<br /> * Returns 1 if succeful reading<br /> * Returns 0 if fail reading<br /> *<br /> * The fastest function for getting temperature + humidity.<br /> */<br />uint8_t dht_read_data(struct dht22 *dht, float *temp, float *hum);<br />#endif[/syntax]<br /><br />dht22.c<br />[syntax=c]/* Fast DHT Lirary<br /> *<br /> * Copyright (C) 2015 Sergey Denisov.<br /> * Written by Sergey Denisov aka LittleBuster (DenisovS21@gmail.com)<br /> *<br /> * This library is free software; you can redistribute it and/or<br /> * modify it under the terms of the GNU General Public Licence<br /> * as published by the Free Software Foundation; either version 3<br /> * of the Licence, or (at your option) any later version.<br /> *<br /> * Original library written by Adafruit Industries. MIT license.<br /> */<br /><br />#include &quot;../DHT22_new/dht22.h&quot;<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />#define DHT_COUNT 6<br />#define DHT_MAXTIMINGS 85<br /><br /><br />void dht_init(struct dht22 *dht, uint8_t pin)<br />{<br />    dht-&gt;pin = pin;<br />    /* Setup the pins! */<br />    DDR_DHT &amp;= ~(1 &lt;&lt; dht-&gt;pin);<br />    PORT_DHT |= (1 &lt;&lt; dht-&gt;pin);<br />}<br /><br />static uint8_t dht_read(struct dht22 *dht)<br />{<br />    uint8_t tmp;<br />    uint8_t sum = 0;<br />    uint8_t j = 0, i;<br />    uint8_t last_state = 1;<br />    uint16_t counter = 0;<br />    /*<br />     * Pull the pin 1 and wait 250 milliseconds<br />     */<br />    PORT_DHT |= (1 &lt;&lt; dht-&gt;pin);<br />    _delay_ms(250);<br /><br />    dht-&gt;data&#91;0&#93; = dht-&gt;data&#91;1&#93; = dht-&gt;data&#91;2&#93; = dht-&gt;data&#91;3&#93; = dht-&gt;data&#91;4&#93; = 0;<br /><br />    /* Now pull it low for ~20 milliseconds */<br />    DDR_DHT |= (1 &lt;&lt; dht-&gt;pin);<br />    PORT_DHT &amp;= ~(1 &lt;&lt; dht-&gt;pin);<br />    _delay_ms(20);<br />    cli();<br />    PORT_DHT |= (1 &lt;&lt; dht-&gt;pin);<br />    _delay_us(40);<br />    DDR_DHT &amp;= ~(1 &lt;&lt; dht-&gt;pin);<br /><br />    /* Read the timings */<br />    for (i = 0; i &lt; DHT_MAXTIMINGS; i++) {<br />        counter = 0;<br />        while (1) {<br />            tmp = ((PIN_DHT &amp; (1 &lt;&lt; dht-&gt;pin)) &gt;&gt; 1);<br />            _delay_us(3);<br /><br />            if (tmp != last_state)<br />                break;<br /><br />            counter++;<br />            _delay_us(1);<br /><br />            if (counter == 255)<br />                break;<br />        }<br /><br />        last_state = ((PIN_DHT &amp; (1 &lt;&lt; dht-&gt;pin)) &gt;&gt; 1);<br /><br />        if (counter == 255)<br />            break;<br /><br />        /* Ignore first 3 transitions */<br />        if ((i &gt;= 4) &amp;&amp; (i % 2 == 0)) {<br />            /* Shove each bit into the storage bytes */<br />            dht-&gt;data&#91;j/8&#93; &lt;&lt;= 1;<br />            if (counter &gt; DHT_COUNT)<br />                dht-&gt;data&#91;j/8&#93; |= 1;<br />            j++;<br />        }<br />    }<br /><br />    sei();<br />    sum = dht-&gt;data&#91;0&#93; + dht-&gt;data&#91;1&#93; + dht-&gt;data&#91;2&#93; + dht-&gt;data&#91;3&#93;;<br /><br />    if ((j &gt;= 40) &amp;&amp; (dht-&gt;data&#91;4&#93; == (sum &amp; 0xFF)))<br />        return 1;<br />    return 0;<br />}<br /><br />uint8_t dht_read_temp(struct dht22 *dht, float *temp)<br />{<br />    if (dht_read(dht)) {<br />        *temp = dht-&gt;data&#91;2&#93; &amp; 0x7F;<br />        *temp *= 256;<br />        *temp += dht-&gt;data&#91;3&#93;;<br />        *temp /= 10;<br /><br />        if (dht-&gt;data&#91;2&#93; &amp; 0x80)<br />            *temp *= -1;<br />        return 1;<br />    }<br />    return 0;<br />}<br /><br />uint8_t dht_read_hum(struct dht22 *dht, float *hum)<br />{<br />    if (dht_read(dht)) {<br />        *hum = dht-&gt;data&#91;0&#93;;<br />        *hum *= 256;<br />        *hum += dht-&gt;data&#91;1&#93;;<br />        *hum /= 10;<br />        if (*hum == 0.0f)<br />            return 0;<br />        return 1;<br />    }<br />    return 0;<br />}<br /><br />uint8_t dht_read_data(struct dht22 *dht, float *temp, float *hum)<br />{<br />    if (dht_read(dht)) {<br />        /* Reading temperature */<br />        *temp = dht-&gt;data&#91;2&#93; &amp; 0x7F;<br />        *temp *= 256;<br />        *temp += dht-&gt;data&#91;3&#93;;<br />        *temp /= 10;<br /><br />        if (dht-&gt;data&#91;2&#93; &amp; 0x80)<br />            *temp *= -1;<br /><br />        /* Reading humidity */<br />        *hum = dht-&gt;data&#91;0&#93;;<br />        *hum *= 256;<br />        *hum += dht-&gt;data&#91;1&#93;;<br />        *hum /= 10;<br />        if (*hum == 0.0f)<br />            return 0;<br />        return 1;<br />    }<br />    return 0;<br />}[/syntax]<br /><br />Dziękuję i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 5 lut 2016, o 09:23</p><hr />
]]></content>
</entry>
</feed>