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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-03T01:10:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10857&amp;mode</id>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-03-03T01:10:36+01:00</updated>
<published>2015-03-03T01:10:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121711#p121711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121711#p121711"/>
<title type="html"><![CDATA[Re: ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121711#p121711"><![CDATA[
Nie ma za co cieszę się że mogłem pomóc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 3 mar 2015, o 01:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[varaderas]]></name></author>
<updated>2015-03-02T13:46:04+01:00</updated>
<published>2015-03-02T13:46:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121613#p121613</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121613#p121613"/>
<title type="html"><![CDATA[Re: ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121613#p121613"><![CDATA[
Dziękuję za odpowiedźi, wszystko sobie jakoś sam doszedłem i wrzucę gotowy kod który ładnie działa dla dwóch czujniczków ds18b20 i lcd 2x8:<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 27-02-2015<br /> *      Author: n<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;lcd.h&quot;<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;onewire.h&quot;<br />#include &quot;ds18x20.h&quot;<br />#include &quot;crc8.h&quot;<br />void display_temp(uint8_t x);<br />void display_tempp(uint8_t y);<br />uint8_t czujniki_cnt;<br />volatile uint8_t s1_flag;<br />volatile uint8_t sekundy;<br /><br />uint8_t subzero, cel, cel_fract_bits;<br /><br /><br />int main(void){<br /><br /><br />TCCR2 |= (1&lt;&lt;WGM21);<br />     TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;&lt;CS20); // 8 000 000/1024 = 7812,5<br />     OCR2 = 78; //7812,5/150 = 52<br />     TIMSK |= (1&lt;&lt;OCIE2);<br />     lcd_init();<br />     czujniki_cnt = search_sensors();<br /><br />     DS18X20_start_meas ( DS18X20_POWER_EXTERN, NULL );///////////////////////////////<br /><br />     _delay_ms(750);<br /><br />   if(DS18X20_OK == DS18X20_read_meas( gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(3);<br />     else{<br />     lcd_locate(0,2);<br />     lcd_str(&quot;E&quot;);<br />         }<br />    if(DS18X20_OK== DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_tempp(3);<br /><br />     else{<br />         lcd_locate(1,2);<br />         lcd_str(&quot;E&quot;);<br />           }<br /><br />     sei();<br /><br />     lcd_locate(0,0);<br />     lcd_str_P(PSTR(&quot;IN&quot;));<br />   lcd_locate(1,0);<br />    lcd_str_P(PSTR(&quot;  &quot;));<br /><br />     while(1) {<br />     if(s1_flag) {<br />          if( 0 == (sekundy%3) ) czujniki_cnt = search_sensors();<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 />              /* 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 />             {<br />           if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(2);<br />             else<br />             {<br />              lcd_locate(0,4);<br />             lcd_str(&quot;r&quot;);<br />             }<br />           if(DS18X20_OK== DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_tempp(2);<br />            else<br />          {<br />          lcd_locate(1,0);<br />    lcd_str(&quot;r&quot;);<br />               }<br /><br />                                    }<br /><br />     }<br /><br />     s1_flag=0;<br />     }<br />}<br /><br /><br />void display_temp (uint8_t y) {<br />lcd_locate(0,y);<br /><br />if(subzero) lcd_str (&quot; -&quot;);<br />else lcd_str(&quot;  &quot;);//temp IN<br />if (cel&lt;10) lcd_str(&quot; &quot;);<br />lcd_int(cel);<br />lcd_str(&quot;.&quot;);<br />lcd_int(cel_fract_bits);<br />lcd_str(&quot; &quot;);<br />}<br />void display_tempp (uint8_t x) {<br />lcd_locate(1,x);<br /><br />if(subzero) lcd_str (&quot; -&quot;);<br />else lcd_str(&quot;  &quot;);//temp out<br />if (cel&lt;10) lcd_str(&quot; &quot;);<br />lcd_int(cel);<br />lcd_str(&quot;.&quot;);<br />lcd_int(cel_fract_bits);<br />lcd_str(&quot; &quot;);<br />}<br /><br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt=0;<br />if(++cnt&gt;99){<br />s1_flag=1;<br />sekundy++;<br />if(sekundy&gt;59) sekundy = 0;<br />cnt=0;<br />}<br />}[/syntax]  <br /><br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6283">varaderas</a> — 2 mar 2015, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-03-01T10:58:03+01:00</updated>
<published>2015-03-01T10:58:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121434#p121434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121434#p121434"/>
<title type="html"><![CDATA[Re: ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121434#p121434"><![CDATA[
<div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />[syntax=c]lcd_locate(x,y);[/syntax]<br /></div><br /><br /><div class="quotetitle">Antystatyczny napisał(a):</div><div class="quotecontent"><br />Dodam tylko, że w przypadku Mirka biblioteki do LCD do funkcji lcd_locate przekazujemy  najpierw y, a następnie x. <br /><br />[syntax=c]lcd_locate(y , x);[/syntax]<br /><br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br /><br />Tak tak dokładnie mój błąd<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 1 mar 2015, o 10:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-03-01T16:52:55+01:00</updated>
<published>2015-02-28T20:01:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121381#p121381</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121381#p121381"/>
<title type="html"><![CDATA[Re: ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121381#p121381"><![CDATA[
Zobacz w kod gdzie jest coś takiego jak: <br /><br />[syntax=c]lcd_locate(x,y);[/syntax]<br /><br />Co tu więcej mówić w BB jest wszystko napisane i gdyby autor tematu przeczytał rozdział o LCD 2x16 to by już wiedział o co mi chodzi.<br /><br />Pytanie nie jest zadane w dziale Gotowej Ryby tylko w języku C dla AVR więc odpowiedziałem.<br />Skoro autor zapodał kod na forum to wie co się w nim znajduje i wie że znajduje się w nim wspomniana funkcja ustawiająca kursor.<br /><br />zobacz na ten fragment.<br />[syntax=c]lcd_locate(0,0);<br />             lcd_str_P(PSTR(&quot;T1&quot;));<br />           lcd_locate(1,0);<br />            lcd_str_P(PSTR(&quot;T2&quot;));[/syntax]<br /><br />jak zaczynałem zabawę w C to zaczynałem też od LCD 2x16 i skoro na nim widzę całekiem po lewej stronie w 1 wierszu  T1 i całkiem po lewej stronie T2 to taki problem pobawić się wartościami funkcji<br /><br />[syntax=c]lcd_locate(x,y);[/syntax]<br /><br />i wpisać np<br />[syntax=c]lcd_locate(0,14);<br />lcd_str_P(PSTR(&quot;T1&quot;));[/syntax] <br /><br />co będzie oznaczało, że całkiem po prawej stronie wyświetli się T1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 28 lut 2015, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-02-28T14:39:51+01:00</updated>
<published>2015-02-28T14:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121344#p121344</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121344#p121344"/>
<title type="html"><![CDATA[Re: ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121344#p121344"><![CDATA[
Kolego a lcd locate nie laska pozmieniac?<br />Widać ze bb nie przeczytałeś a lecisz odrazu ze wsadami.<br /><br />Ps nie umieszczamy listingow z ksiazek<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 28 lut 2015, o 14:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[varaderas]]></name></author>
<updated>2015-02-28T12:27:41+01:00</updated>
<published>2015-02-28T12:27:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121319#p121319</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121319#p121319"/>
<title type="html"><![CDATA[ds18b20 atmega 8 lcd2x8  i prośba o pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10857&amp;p=121319#p121319"><![CDATA[
Witam, mam taki problem bo chcę zrobić program z bb z dwoma czujnikami temperatury na atmedze 8 i lcd 2x8 opartym na sterowniku hd44780. <br />Chcę by T1 wyświetlało się po lewo na górze a T2 po lewo na dole a po bokach temperatury i staram się jakoś modyfikować ten program ale nie wychodzi mi... Pomożecie? <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;lcd.h&quot;<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;onewire.h&quot;<br />#include &quot;ds18x20.h&quot;<br />#include &quot;crc8.h&quot;<br />void display_temp(uint8_t x);<br />uint8_t czujniki_cnt;<br />volatile uint8_t s1_flag;<br />volatile uint8_t sekundy;<br /><br />uint8_t subzero, cel, cel_fract_bits;<br /><br /><br />int main(void){<br /><br /><br />TCCR2 |= (1&lt;&lt;WGM21);<br />     TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS21) | (1&lt;&lt;CS20); // 8 000 000/1024 = 7812,5<br />     OCR2 = 78; //7812,5/150 = 52<br />     TIMSK |= (1&lt;&lt;OCIE2);<br />     lcd_init();<br />     czujniki_cnt = search_sensors();<br /><br />     DS18X20_start_meas ( DS18X20_POWER_EXTERN, NULL );///////////////////////////////<br /><br />     _delay_ms(750);<br /><br />   if(DS18X20_OK == DS18X20_read_meas( gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(1);<br />     else{<br />     lcd_locate(0,2);<br />     lcd_str(&quot;E&quot;);<br />         }<br />    if(DS18X20_OK== DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(2);<br /><br />     else{<br />         lcd_locate(1,2);<br />         lcd_str(&quot;E&quot;);<br />           }<br /><br />     sei();<br /><br />     lcd_locate(0,0);<br />     lcd_str_P(PSTR(&quot;T1&quot;));<br />   lcd_locate(1,0);<br />    lcd_str_P(PSTR(&quot;T2&quot;));<br /><br />     while(1) {<br />     if(s1_flag) {<br />          if( 0 == (sekundy%3) ) czujniki_cnt = search_sensors();<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 />              /* 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 />             {<br />           if( DS18X20_OK == DS18X20_read_meas(gSensorIDs&#91;0&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(1);<br />             else<br />             {<br />              lcd_locate(0,4);<br />             lcd_str(&quot;r&quot;);<br />             }<br />           if(DS18X20_OK== DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits) ) display_temp(2);<br />            else<br />          {<br />          lcd_locate(1,0);<br />    lcd_str(&quot;r&quot;);<br />               }<br /><br />                                    }<br /><br />     }<br /><br />     s1_flag=0;<br />     }<br />}<br /><br /><br />void display_temp (uint8_t x) {<br />lcd_locate(0,x);<br /><br />if(subzero) lcd_str (&quot;-&quot;);<br />else lcd_str(&quot; &quot;);<br />lcd_int(cel);<br />lcd_str(&quot;.&quot;);<br />lcd_int(cel_fract_bits);<br />lcd_str(&quot;C&quot;);<br />}<br /><br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t cnt=0;<br />if(++cnt&gt;99){<br />s1_flag=1;<br />sekundy++;<br />if(sekundy&gt;59) sekundy = 0;<br />cnt=0;<br />}<br />}[/syntax]<br /><br />Zmieniłem w lcd.h :<br />[syntax=c]// definicje adresów w DDRAM dla różnych wyświetlaczy<br />// inne są w wyświetlaczach 2wierszowych i w 4wierszowych<br />#if ( (LCD_ROWS == 4) &amp;&amp; (LCD_COLS == 8) )<br />#define LCD_LINE1 0x00// adres 1 znaku 1 wiersza<br />#define LCD_LINE2 0x28// adres 1 znaku 2 wiersza<br />#define LCD_LINE3 0x14  // adres 1 znaku 3 wiersza<br />#define LCD_LINE4 0x54  // adres 1 znaku 4 wiersza[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6283">varaderas</a> — 28 lut 2015, o 12:27</p><hr />
]]></content>
</entry>
</feed>