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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-09-12T10:01:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21270&amp;mode</id>
<entry>
<author><name><![CDATA[Pixelxx]]></name></author>
<updated>2018-09-12T10:01:13+01:00</updated>
<published>2018-09-12T10:01:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211593#p211593</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211593#p211593"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211593#p211593"><![CDATA[
Dziękuje za pomoc. Działa!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19122">Pixelxx</a> — 12 wrz 2018, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-09-11T17:06:55+01:00</updated>
<published>2018-09-11T17:06:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211573#p211573</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211573#p211573"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211573#p211573"><![CDATA[
<div class="quotetitle">Pixelxx napisał(a):</div><div class="quotecontent"><br />Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo.<br /></div><br />Oczywiście, że to nic nie zmieni, bo przecież i tak do tego rejestru nic nie wpisujesz. Wpisujesz za to do rejestru zdefiniowanego jako ECHO_PORT, któremu przypisałeś PORTC, a intencją było raczej wpisanie do PORTD. Ale to mniej istotne, chciałem się upewnić, że to pomyłka w kodzie, a wyjście ECHO z modułu HC-SR04 masz prawidłowo podłączone do pinu 6 portu D, bo uznałem, że skoro pomyliłeś się w kodzie, to może też źle podłączyłeś. A Ty i tak nie odpowiedziałeś na moje pytanie (czyli gdzie jest podłączone, a nie jak jest w kodzie). To co jest w kodzie i tak jest zapewne nieistotne, bo to tylko włącza na pinie rezystor podciągający do Vcc, co najprawdopodobniej jest zbędne, bo ja nie zauważyłem w dokumentacji modułu, że jest to wymagane.<br /><br />Poprawiłem nieco Twój kod. Teraz powinien działać prawidłowo (o ile masz to prawidłowo podłączone). Główny błąd znajdował się w linii 31 Twojego kodu.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &quot;HD44780/lcd44780.h&quot;<br /><br />#define HC_TRIG (1&lt;&lt;PC7)<br />#define TRIG_PORT PORTC<br />#define TRIG_DIR DDRC<br /><br />#define HC_ECHO (1&lt;&lt;PD6)<br />#define ECHO_PORT PORTD<br />#define ECHO_DIR DDRD<br /><br />volatile uint16_t Timer1;<br />volatile uint16_t EchoWidth;<br />char buf&#91;10&#93;;<br />uint8_t len;<br />uint16_t dystans;<br /><br />void hc_pomiar (void);<br /><br />int main( void )<br />{<br />    <br />    TRIG_DIR |= HC_TRIG;<br />    ECHO_PORT |= HC_ECHO;<br />    <br />    TCCR1B |= (1&lt;&lt;ICES1);       //zbocze narastające<br />    TCCR1B |= (1&lt;&lt;CS11);        //prescaler na 8<br />    TIMSK |= (1&lt;&lt;TICIE1);       //zezwolenie na przerwanie od ICP<br /><br />    lcd_init();<br />    sei();<br />    <br />    lcd_locate(0,8);<br />    lcd_str(&quot;DALMIERZ&quot;);<br /><br />    while(1)<br />    {<br />        hc_pomiar();<br />        _delay_ms(60);<br />        sprintf(buf, &quot;%05uus&quot;, EchoWidth);<br />        lcd_locate(0,0);<br />        lcd_str(buf);<br />        <br />        lcd_locate(1,0);<br />        lcd_str(&quot;dystans:&quot;);<br />        <br />        dystans = (EchoWidth+29) / 58;<br />        sprintf (buf, &quot;%u cm&quot;, dystans);<br />        len = strlen(buf);<br />        lcd_locate(1, 8);<br />        lcd_str(buf);<br />        <br />    }<br />    <br />}<br /><br />void hc_pomiar (void)<br />{<br />    TRIG_PORT |= HC_TRIG;       //wystawienie 1 na TRIG<br />    _delay_us(10);              //10uS stanu wysokiego;<br />    TRIG_PORT &amp;= ~HC_TRIG;      //wystawienie zera na TRIG<br />}<br /><br /><br />ISR(TIMER1_CAPT_vect)<br />{<br />    static uint16_t LastCapture;<br />    <br />    if(!(TCCR1B &amp; (1&lt;&lt;ICES1)))<br />    {<br />        EchoWidth = ICR1 - LastCapture;<br />        <br />    }<br />    <br />    LastCapture = ICR1;<br />    TCCR1B ^= (1&lt;&lt;ICES1);<br />}[/syntax]<br /><br />Właściwie zwykle wymagane jest także zapewnienie atomowego dostępu do zmiennej wielobajtowej modyfikowanej w przerwaniu, jednak w tym przypadku nie jest to konieczne, chyba że znacząco skrócisz opóźnienie po wywołaniu funkcji <strong><em>hc_pomiar();</em></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 wrz 2018, o 17:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixelxx]]></name></author>
<updated>2018-09-11T10:28:24+01:00</updated>
<published>2018-09-11T10:28:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211569#p211569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211569#p211569"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211569#p211569"><![CDATA[
Fakt pomyliłem DDRD miało być, poprawiłem już to i nadal to samo.<br />Tak zmienia się proporcjonalnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19122">Pixelxx</a> — 11 wrz 2018, o 10:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-09-11T10:21:57+01:00</updated>
<published>2018-09-11T10:21:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211568#p211568</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211568#p211568"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211568#p211568"><![CDATA[
<div class="quotetitle">Pixelxx napisał(a):</div><div class="quotecontent"><br />ICP1 jest na PD6 w Atmega32<br /></div><br />Gdzie jest to wiadomo. Pytanie było raczej gdzie to fizycznie podłączyłeś, bo w programie masz pomylone - podciągasz do Vcc pin 6 PORTC.<br /><div class="quotetitle">Pixelxx napisał(a):</div><div class="quotecontent"><br />Zle mierzy tzn pokazuje jakiś czas i jakąś odległość, ale na wysokość gdzieś 1m pokazuje 15cm<br /></div><br />A jak zmieniasz wysokość, to wskazanie się zmienia proporcjonalnie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 wrz 2018, o 10:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-09-11T10:07:31+01:00</updated>
<published>2018-09-11T10:07:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211566#p211566</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211566#p211566"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211566#p211566"><![CDATA[
Jak kolega wyżej zauważył, w programie echo port masz ustawiony na port C<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 11 wrz 2018, o 10:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixelxx]]></name></author>
<updated>2018-09-11T09:53:25+01:00</updated>
<published>2018-09-11T09:53:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211565#p211565</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211565#p211565"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211565#p211565"><![CDATA[
uC to Atmega32 i częstotliwość ma na 8Mhz i rezonator wewnętrzny.<br /><br />Zle mierzy tzn pokazuje jakiś czas i jakąś odległość, ale na wysokość gdzieś 1m pokazuje 15cm<br />I ICP1 jest na PD6 w Atmega32<br /><br /><br /><a href="https://obrazkiforum.atnel.pl/19122/24447e73eecdb1396b82e52de89957de.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/19122/24447e73eecdb1396b82e52de89957de.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19122">Pixelxx</a> — 11 wrz 2018, o 09:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-09-11T05:28:53+01:00</updated>
<published>2018-09-11T05:28:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211563#p211563</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211563#p211563"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211563#p211563"><![CDATA[
<div class="quotetitle">Pixelxx napisał(a):</div><div class="quotecontent"><br />#define HC_ECHO (1&lt;&lt;PD6)<br />#define ECHO_PORT PORTC<br />#define ECHO_DIR DDRC<br /></div><br />Jaki typ mikrokontrolera i właściwie do którego pinu masz podłączony sygnał ECHO?<br />Próbowałem szukać mikrokontrolera z pinem ICP1 na szóstym pinie <strong>PORTC</strong> i jakoś nie mogłem znaleźć.<br /><br /><div class="quotetitle">Pixelxx napisał(a):</div><div class="quotecontent"><br />coś źle mierzy czas w us<br /></div><br />Mógłbyś sprecyzować, co to dokładnie oznacza?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 11 wrz 2018, o 05:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Situs]]></name></author>
<updated>2018-09-10T17:33:32+01:00</updated>
<published>2018-09-10T17:33:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211552#p211552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211552#p211552"/>
<title type="html"><![CDATA[Re: Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211552#p211552"><![CDATA[
Zakładając że konfiguracja timera jest OK, radziłbym Ci zerowac TCNT1 w funkcji hc_pomiar()  a w przerwaniu <span style="color: #00FF00">tylko</span> przypisywać do EchoWidth TCNT1.<br /><br /><br />Do tego ten delay dać tuż po hc_pomiar()<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14339">Situs</a> — 10 wrz 2018, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixelxx]]></name></author>
<updated>2018-09-11T10:29:32+01:00</updated>
<published>2018-09-10T10:48:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211528#p211528</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211528#p211528"/>
<title type="html"><![CDATA[Czujnik HC-SR04]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21270&amp;p=211528#p211528"><![CDATA[
Witam.<br /><br />Postanowiłem się zabrać za czujnik HC-SR04. Kod wygląda na chwilę obecną tak i coś źle mierzy czas w us i też źle przelicza na cm.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &quot;HD44780/lcd44780.h&quot;<br /><br />#define HC_TRIG (1&lt;&lt;PC7)<br />#define TRIG_PORT PORTC<br />#define TRIG_DIR DDRC<br /><br />#define HC_ECHO (1&lt;&lt;PD6)<br />#define ECHO_PORT PORTC<br />#define ECHO_DIR DDRC<br /><br />volatile uint16_t Timer1;<br />volatile uint16_t EchoWidth;<br />char buf&#91;10&#93;;<br />uint8_t len;<br />uint16_t dystans;<br /><br />void hc_pomiar (void);<br /><br />int main( void )<br />{<br />TRIG_DIR |= HC_TRIG;<br />ECHO_PORT |= HC_ECHO;<br /><br />TCCR1B |= (1&lt;ICES1);//zbocze narastajace<br />TCCR1B |= (1&lt;&lt;CS11);//preskaler na 8<br />TIMSK |= (1&lt;&lt;TICIE1); //zezwoenie na przerwanie oICP<br /><br /><br />lcd_init();<br />sei();<br /><br />lcd_locate(0,8);<br />lcd_str(&quot;DALMIERZ&quot;);<br /><br /><br />while(1)<br />{<br />hc_pomiar();<br />sprintf(buf, &quot;%05dus&quot;, EchoWidth);<br />lcd_locate(0,0);<br />lcd_str(buf);<br /><br />lcd_locate(1,0);<br />lcd_str(&quot;dystans:&quot;);<br /><br />dystans = (EchoWidth+29) / 58;<br />sprintf (buf, &quot;%d cm&quot;, dystans);<br />len = strlen(buf);<br />lcd_locate(1, 8);<br />lcd_str(buf);<br />_delay_ms(200);<br /><br />}<br /><br />}<br /><br />void hc_pomiar (void)<br />{<br />TRIG_PORT |= HC_TRIG;//wystawienie 1 na TRIG<br />_delay_us(10);//10uS stanu wyskiego;<br />TRIG_PORT &amp;= ~HC_TRIG;//wystawienie zera na TRIG<br />}<br /><br /><br />ISR(TIMER1_CAPT_vect)<br />{<br />static uint16_t LastCapture;<br /><br />if(!(TCCR1B &amp; (1&lt;&lt;ICES1)))<br />{<br />EchoWidth = ICR1 - LastCapture;<br /><br />}<br /><br />LastCapture = ICR1;<br />TCCR1B ^= (1&lt;&lt;ICES1);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19122">Pixelxx</a> — 10 wrz 2018, o 10:48</p><hr />
]]></content>
</entry>
</feed>