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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-02T15:20:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12506&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-02T15:20:51+01:00</updated>
<published>2015-08-02T15:20:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136140#p136140</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136140#p136140"/>
<title type="html"><![CDATA[Re: 1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136140#p136140"><![CDATA[
<div class="quotetitle">mac34 napisał(a):</div><div class="quotecontent"><br />Można też jak w BB na zasadzie modulo %<br /></div><br />Przecież w ogóle nie trzeba robić tak jak w BB, ..... w książce podałem tylko jeden z wielu przykładów jak to można realizować - ważniejsze było żeby czytelnik zrozumiał jak pozbyć się delayów .... więc każdy sposób jest dobry <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> — 2 sie 2015, o 15:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2015-08-02T14:57:31+01:00</updated>
<published>2015-08-02T14:57:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136139#p136139</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136139#p136139"/>
<title type="html"><![CDATA[Re: 1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136139#p136139"><![CDATA[
Poniżej wersja finalna ,dla potomnych.   Koci błąd ze zmęczenia Mirku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]//Attiny 2313 ,kwarc 11,059MHz, czujnik DS18B20 ,wysyłanie temperatury na terminal<br /><br />//Uwaga wyrzucono funkcję read_meas_single() oraz funkcję DS18X20_temp_cmp porównania temperatury ,by zaoszczędzić flash<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;UART_advavce_by_Mario_ver2.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br /><br />volatile uint8_t sekunda;<br />volatile uint8_t flaga;<br /><br />uint8_t subzero, cel, cel_fract_bits;<br />uint8_t czujniki_cnt;<br /><br /><br /><br />const char powrot_do_1_linii&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;;H&quot;};  //powrot cursora do 1 linii<br />const char clear_terminal_screen&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;2J&quot;}; //clear entire screen<br />const char cursor_hide&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;?25l&quot;};<br /><br />int main(void){<br /><br />DDRB = 0b00000000;<br />   PORTB = 0b11111111;    // DS18B20 do PB3 ,pin 15 procka<br /><br />DDRD = 0b0000000;<br />   PORTD = 0b1111111;<br /><br />   USART_Init( __UBRR );<br /><br />   //timer 1 tryb CTC ,odmierzanie 1 sek -&gt; prescaler 256  ,OCR1A = 43199<br />   TIMSK |= (1&lt;&lt;OCIE1A);  //odblokowanie przerwania z rejestru porównania<br />   TCCR1B |= (1&lt;&lt;WGM12);  //tryb ctc<br />   TCCR1B |= (1&lt;&lt;CS12);  //prescaler 256<br />   OCR1A = 34559; //dla 800ms      ,a dla 1 sekundy -&gt; 43199;<br /><br />   sei();<br /><br />   while(1){<br /><br /><br />   if(flaga==1){<br />   flaga=0;<br />   czujniki_cnt = search_sensors();<br />   }<br /><br /><br /><br />    if(flaga==2){<br />   flaga=0;<br />   DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />      }<br /><br /><br /><br />   if(flaga == 3){<br />   flaga=0;<br /><br />   if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ){<br /><br />   uart_puts_P(clear_terminal_screen);<br />   uart_puts_P(powrot_do_1_linii);<br /><br />  if(subzero) uart_putc('-');<br /><br /><br />   uart_putint(cel,10);<br />   uart_putc(',');<br />   uart_putint(cel_fract_bits,10);<br /><br />   uart_puts_P(cursor_hide);<br />   }<br /><br /><br />   }<br /><br /><br />   } //koniec while<br /><br />} //koniec main<br /><br /><br /><br />ISR(TIMER1_COMPA_vect){ //przerwanie z rejestru porównaia<br /><br /><br />sekunda++;<br /><br />if(sekunda==1) flaga = 1;<br />if(sekunda==2) flaga = 2;<br />if(sekunda==3) flaga = 3;<br /><br />if(sekunda&gt;=4) sekunda=0;<br /><br />}[/syntax]<br /><br /><br />Można też jak w BB na zasadzie modulo % ,ale tak dla mnie jest prościej i czytelniej. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 2 sie 2015, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-02T14:50:44+01:00</updated>
<published>2015-08-02T14:50:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136137#p136137</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136137#p136137"/>
<title type="html"><![CDATA[Re: 1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136137#p136137"><![CDATA[
im dłużej będziesz stosował takie kocie zapisy<br /><br />[syntax=c]PORTB = 0b11111111;[/syntax]<br /><br />tym dłużej będziesz popełniał takie błędy .....<br /><br />postaraj się jak najszybciej korzystać z ustawień typu<br /><br />[syntax=c]PORTB |= (1&lt;&lt;PB3);[/syntax]<br /><br />tu widać od razu jakiego pinu dotykam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 sie 2015, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2015-08-02T13:47:57+01:00</updated>
<published>2015-08-02T13:47:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136130#p136130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136130#p136130"/>
<title type="html"><![CDATA[Re: 1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136130#p136130"><![CDATA[
Poprawiłem na:<br /><br />[syntax=c]//Attiny 2313 ,kwarc 11,059MHz, czujnik DS18B20 ,wysyłanie temperatury na terminal<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 />#include &quot;UART_advavce_by_Mario_ver2.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br /> <br />uint8_t subzero, cel, cel_fract_bits;<br />uint8_t czujniki_cnt;<br /> <br />const char powrot_do_1_linii&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;;H&quot;};  //powrot cursora do 1 linii<br />const char clear_terminal_screen&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;2J&quot;}; //clear entire screen<br />const char cursor_hide&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;?25l&quot;};<br /> <br />int main(void){<br /> <br />        DDRB = 0b00000000;<br />   PORTB = 0b11111111;    // DS18B20 do PB3 ,pin 13 procka<br /> <br />        DDRD = 0b0000000;<br />   PORTD = 0b1111111;<br /> <br />   USART_Init( __UBRR );<br /> <br />sei();<br /> <br />   while(1){<br /> <br />            czujniki_cnt = search_sensors();<br />   _delay_ms(850);<br />           <br />           DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />           _delay_ms(850);<br /> <br />          if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ){<br /> <br /> <br />                           uart_puts_P(clear_terminal_screen);<br />                           uart_puts_P(powrot_do_1_linii);<br /> <br />                          if(subzero) uart_putc('-');<br /> <br />                           uart_putint(cel,10);<br />                           uart_putc(',');<br />                           uart_putint(cel_fract_bits,10);<br /> <br />                           uart_puts_P(cursor_hide);<br />                           }<br /> <br />           _delay_ms(850);<br /> <br /> <br /> <br /> } //koniec while<br /> <br />} //koniec main[/syntax]<br /><br /><br />Dalej to samo wynik 0,0.<br /><br />Próbowałem też  funkcji read_meas_single  ,bez powodzenia <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 34 minutach ]</span></strong><br /><br />Znalazłem błąd ,ale mi wstyd  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br /><br />Banalny <br /><br />[syntax=c]PORTB = 0b11111111;    // DS18B20 do PB3 ,pin 13 procka[/syntax]<br /><br />ma być<br /><br />[syntax=c]PORTB = 0b11111111;    // DS18B20 do PB3 ,pin 15 procka[/syntax]<br /><br />,kabelek z 1Wire do 15 pinu procka ,a nie do 13   <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />    ,wybaczcie ,taki oczywisty błąd.<br /><br /><br />Ale nic może temat przyda się komuś ,kto będzie kiedyś też walczył z 1Wire chcąc wysyłać po UARCIE ma już szkielet,<br /><br />dodałem nawet timer programowy i śmiga.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 2 sie 2015, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-02T13:28:44+01:00</updated>
<published>2015-08-02T13:28:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136129#p136129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136129#p136129"/>
<title type="html"><![CDATA[Re: 1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136129#p136129"><![CDATA[
Dokładnie - w BB masz na początku wyszukanie czujników a ty sobie to pominąłeś radośnie <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> — 2 sie 2015, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2015-08-02T13:10:52+01:00</updated>
<published>2015-08-02T13:10:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136126#p136126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136126#p136126"/>
<title type="html"><![CDATA[1Wire DS18B20 ,pomiar temperatury + terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12506&amp;p=136126#p136126"><![CDATA[
Witam ,próbuję opanować magistralę 1Wire ,napisałem prosty program do obsługi jednego czujnika Dallas DS18B20<br /><br />Kod poniżej:<br /><br />[syntax=c]//Attiny 2313 ,kwarc 11,059MHz, czujnik DS18B20 ,wysyłanie temperatury na terminal<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 />#include &quot;UART_advavce_by_Mario_ver2.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br /><br />uint8_t subzero, cel, cel_fract_bits;<br /><br />const char powrot_do_1_linii&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;;H&quot;};  //powrot cursora do 1 linii<br />const char clear_terminal_screen&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;2J&quot;}; //clear entire screen<br />const char cursor_hide&#91;&#93; PROGMEM = {&quot;\x1b&quot;&quot;&#91;?25l&quot;};<br /><br />int main(void){<br /><br />DDRB = 0b00000000;<br />   PORTB = 0b11111111;    // DS18B20 do PB3 ,pin 13 procka<br /><br />DDRD = 0b0000000;<br />   PORTD = 0b1111111;<br /><br />   USART_Init( __UBRR );<br /><br />sei();<br /><br />   while(1){<br /><br /><br />   <br />   DS18X20_start_meas( DS18X20_POWER_EXTERN, NULL );<br />   _delay_ms(850);<br /><br />  if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ){<br /><br /><br />           uart_puts_P(clear_terminal_screen);<br />     uart_puts_P(powrot_do_1_linii);<br /><br />    if(subzero) uart_putc('-');<br /><br />     uart_putint(cel,10);<br />     uart_putc(',');<br />     uart_putint(cel_fract_bits,10);<br /><br />     uart_puts_P(cursor_hide);<br />     }<br /><br />   _delay_ms(850);<br /><br /><br /><br /> } //koniec while<br /><br />} //koniec main[/syntax]<br /><br /><br />Problem w tym ,że czujnik nie mierzy temperatury ,odczyt jest ciągle 0,0.   <br /><br />Nie jest to wina _delay_ms(850);  ,nawet z timerem programowym nie działa.<br /><br />Zmiany odnośnie portu na PB3 w pliku onewire.h wprowadzone,<br />oraz w DS18x20.h zmienione na max sensors  1.<br /><br />Używam oryginalnej biblioteki Mirka z BB, miał ktoś podobne problemy? ,pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 2 sie 2015, o 13:10</p><hr />
]]></content>
</entry>
</feed>