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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-04T09:37:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20345&amp;mode</id>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-04T09:37:48+01:00</updated>
<published>2018-03-04T09:37:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204900#p204900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204900#p204900"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204900#p204900"><![CDATA[
<div class="quotetitle">Harry napisał(a):</div><div class="quotecontent"><br />Naprawdę?<br />Przyjrzyj się uważnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Fakt. Poprawka zrobiona.Ale to raczej nie był główny powód spóźnienia. Zrobiłem aktualizacje temp co min i jest ok, choć fajnie jak by była bieżącą. Bo w pętli on ciągle ją pobierał i widocznie dużo czasu mu to zajmowało.<br />Teraz mam tak i przez całą noc nie cała 1s różnicy, czyli ok.<br />[syntax=c]#include &lt;string.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;HD44780.h&quot;<br />#include &quot;ds18b20/ds18b20.h&quot;<br /><br />char buforek&#91;100&#93;;<br />char buforsekunda&#91;100&#93;;<br />char buforminuta&#91;100&#93;;<br />char buforgodzina&#91;100&#93;;<br />//TEMP<br />char bufor&#91;100&#93;;<br />float temperatura;<br /><br /><br />//USTAW CZAS<br />uint8_t sekunda=57;<br />uint8_t minuta=59;<br />uint8_t godzina=24;<br />uint8_t l=13;<br />uint8_t ALARMON;<br />uint8_t SET,s;<br />uint8_t cnt=0;<br /><br />uint8_t *wsk_sekunda = &amp;sekunda;<br /><br /><br /><br />void guziki();<br />void sek_fun();<br />void minuta_show();<br />void godzina_show();<br />void sek_fun();<br />void min_fun();<br />void pok_temp();<br /><br /><br />void timer2_init()<br /> {<br />sei();<br />TCCR1B |= (1 &lt;&lt; WGM12) | (1 &lt;&lt; CS12);<br />TCCR1A |= 0;<br />TCNT1 = 0;<br />OCR1A=31249;<br />TIMSK |= (1&lt;&lt;OCIE1A);<br /> }<br /><br />int main(void)<br />{<br />LCD_Initalize();<br />LCD_Clear();<br />ALARMON=1;<br />SET=0;<br /><br />//FORMATKA<br />LCD_GoTo(6,0);<br />LCD_WriteText(&quot;00&quot;);<br /><br /><br />LCD_GoTo(5,0);<br />LCD_WriteText(&quot;,&quot;);<br />LCD_GoTo(0,1);<br />LCD_WriteText(&quot;Alarm&#91;&quot;);<br />LCD_GoTo(9,1);<br />LCD_WriteText(&quot;&#93;&quot;);<br /><br />    DDRB |= (1&lt;&lt;PB1) | (1&lt;&lt;PB2);<br />    PORTB |= ((1&lt;&lt;PB1) | (1&lt;&lt;PB2));<br /><br />    timer2_init();<br /><br /> DDRC &amp;= ~(1&lt;&lt;PC0);<br />    //PORTY    - MICROSWITCH<br />DDRC &amp;= ~(1&lt;&lt;PC4);<br />PORTC |=(1&lt;&lt;PC4);<br />DDRC &amp;= ~(1&lt;&lt;PC5);<br />PORTC |=(1&lt;&lt;PC5);<br /><br />DDRD &amp;= ~(1&lt;&lt;PD4);<br />PORTD |=(1&lt;&lt;PD4);<br /><br />DDRB &amp;= ~(1&lt;&lt;PB0); //set<br />PORTB |=(1&lt;&lt;PB0);<br /><br />LCD_GoTo(13,1);<br />LCD_WriteText(&quot;&#91;&quot;);<br />LCD_GoTo(15,1);<br />LCD_WriteText(&quot;&#93;&quot;);<br />//*****************************************************************************<br />minuta_show();<br />godzina_show();<br /><br />while(1)<br />   {<br />sek_fun();<br />guziki();<br />//pok_temp();  W TYM MIEJSCU DRAMAT 3 S DO TYŁU NA 10<br /><br />if (TCNT1&gt;=16137)<br />{<br /> LCD_GoTo(2,0);<br /> LCD_WriteText(&quot;:&quot;);<br />}<br />else<br />{<br /> LCD_GoTo(2,0);<br /> LCD_WriteText(&quot; &quot;);<br />}<br />   }<br />}<br /><br /><br />void pok_temp(){<br />temperatura=ds18b20_gettemp();<br />dtostrf(temperatura,2,2, bufor);<br />LCD_GoTo(9,0);<br />LCD_WriteText(bufor);<br /> LCD_GoTo(14,0);<br />LCD_WriteData(223);<br />LCD_GoTo(15,0);<br />    LCD_WriteText(&quot;C&quot;);<br />}<br /><br /><br />void sek_fun()<br />{<br /><br />itoa(sekunda, buforsekunda, 10);<br />if(sekunda&lt;10 || sekunda==0)<br />{<br />LCD_GoTo(7,0);<br />LCD_WriteText(buforsekunda);<br />LCD_GoTo(6,0);<br />LCD_WriteText(&quot;0&quot;);<br />}<br />else<br />{<br />LCD_GoTo(6,0);<br />LCD_WriteText(buforsekunda);<br />}<br />if(sekunda&gt;59)<br />{<br />LCD_GoTo(6,0);<br />LCD_WriteText(&quot;00&quot;);<br />min_fun();<br />sekunda=0;<br />pok_temp();   //AKTUALIZACJA OBECNIE CO MINUTE I JEST OK<br />}<br />}<br /><br />void minuta_show(){<br /> itoa(minuta, buforminuta, 10);<br />if(minuta&lt;10)<br />{<br />LCD_GoTo(4,0);<br />LCD_WriteText(buforminuta);<br />LCD_GoTo(3,0);<br />LCD_WriteText(&quot;0&quot;);<br />}<br />else<br />{<br />LCD_GoTo(3,0);<br />LCD_WriteText(buforminuta);<br />}<br />if(minuta&gt;59)<br />{<br />LCD_GoTo(3,0);<br />LCD_WriteText(&quot;00&quot;);<br />minuta=0;<br />}<br />}<br /><br />void godzina_show(){<br /><br />itoa(godzina, buforgodzina, 10);<br /><br />if(godzina&lt;10)<br />{<br />LCD_GoTo(1,0);<br />LCD_WriteText(buforgodzina);<br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;0&quot;);<br />}<br />else<br />{<br />LCD_GoTo(0,0);<br />LCD_WriteText(buforgodzina);<br />}<br /><br />   if (godzina == 24)<br />    {<br />   LCD_GoTo(0,0);<br />   LCD_WriteText(&quot;00&quot;);<br />   godzina=0;<br />    }<br />}<br /><br /><br />void min_fun(){<br />      minuta++;<br />      if(minuta&gt;59)<br /> {<br />minuta=0;<br />godzina++;<br />godzina_show();<br />     }<br />minuta_show();<br />}<br /><br />void guziki(){<br />if ( !(PINC &amp; (1&lt;&lt;PC5)) )<br />{<br />_delay_ms(125);<br />if ( !(PINC &amp; (1&lt;&lt;PC5)) )<br />{<br />if(SET==1)<br />{<br />godzina++;<br />godzina_show();<br />}<br />else{<br />ALARMON = 0;<br />}<br />}<br />}<br /><br />if ( !(PINC &amp; (1&lt;&lt;PC4)) )<br />{<br />_delay_ms(125);<br />if ( !(PINC &amp; (1&lt;&lt;PC4)) )<br />{<br />if(SET==1)<br />{<br />minuta++;<br />minuta_show();<br />}<br />else{<br />ALARMON = 1;<br />}<br />}<br />}<br /><br /><br /><br />if((godzina&gt;=0) &amp;&amp;  (sekunda&gt;=0) &amp;&amp; (sekunda&lt;=25) &amp;&amp; (ALARMON==1)   )<br />{<br />PORTB ^= (1&lt;&lt;PB1);<br />}<br />else{<br />PORTB |= (1&lt;&lt;PB1);<br />}<br />if(ALARMON==1)<br />{<br />LCD_GoTo(6,1);<br />LCD_WriteText(&quot;ON &quot;);}<br />else<br />{<br />LCD_GoTo(6,1);<br />LCD_WriteText(&quot;OFF&quot;);<br />}<br /><br /><br /><br /><br />if ( !(PINB &amp; (1&lt;&lt;PB0)) )<br />{<br />_delay_ms(150);<br />if ( !(PINB &amp; (1&lt;&lt;PB0)) )<br />{<br />if(SET==1)<br />{<br />LCD_GoTo(10,1);<br />LCD_WriteText(&quot;   &quot;);<br />SET=0;<br />}<br /><br />else//if(SET==0)<br />{<br />LCD_GoTo(10,1);<br />LCD_WriteText(&quot;SET&quot;);<br />SET=1;<br /><br />}}}<br /><br />}<br /><br /><br /><br /><br /><br />ISR (TIMER1_COMPA_vect)<br />{<br />TCNT1 = 0;<br />s=*wsk_sekunda;<br />s++;<br />*wsk_sekunda = s;<br />//pok_temp(); JAK BYŁO URUCHAMIANE STĄD CHODZIŁO OK<br />}[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />Już widzę o co kaman, w przerwaniu robił aktualizację co sekundę, w pętli non top i to go dobiło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 4 mar 2018, o 09:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2018-03-04T03:57:41+01:00</updated>
<published>2018-03-04T03:57:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204895#p204895</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204895#p204895"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204895#p204895"><![CDATA[
<div class="quotetitle">mircoLab napisał(a):</div><div class="quotecontent"><br />ale jak wstawię kod do głównej pętli, a przerwa będzie tylko inkrementować sekundę to już ostro spóźnia.<br /></div><br />To może pokaż ten kod<br /><div class="quotetitle">mircoLab napisał(a):</div><div class="quotecontent"><br />A delaye tylko do guzikow.<br />//Kasowanie Sekundy 2 micros razem<br />[syntax=c]if ( (!(PINC &amp; (1&lt;&lt;PC5)))  &amp;&amp; (!(PINC &amp; (1&lt;&lt;PC4))))<br />                {<br />                }<br />                                _delay_ms(5);<br />                        if ( (!(PINC &amp; (1&lt;&lt;PC5)))  &amp;&amp; (!(PINC &amp; (1&lt;&lt;PC4))))<br />                        {<br />                                sekunda=0;<br /> <br />                        }[/syntax]<br /></div><br />Naprawdę?<br />Przyjrzyj się uważ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=14685">Harry</a> — 4 mar 2018, o 03:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-03T21:26:02+01:00</updated>
<published>2018-03-03T21:26:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204885#p204885</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204885#p204885"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204885#p204885"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />W przerwaniu umieszczasz zmienną która zmienia się jak zostało wykonane przerwania. W pętli głównej cyklicznie sprawdzasz tę zmienną i jak się zmieni to wykonujesz akcję.<br />Proponuję Ci poczytać BB <!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m -->, bo tak masz wszystko ładnie i po kolei potłumaczone.<br /></div><br />Tak zrobiłem, dalej opóźniało, ale doszedłem do tego co to powoduje.<br />Pobranie i wyświetlenie temp jak jest wykonywane z głównej pętli powoduje opóźnienie, natomiast jak z przerwania tj ok.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 3 mar 2018, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-03-03T15:52:12+01:00</updated>
<published>2018-03-03T15:52:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204862#p204862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204862#p204862"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204862#p204862"><![CDATA[
W przerwaniu umieszczasz zmienną która zmienia się jak zostało wykonane przerwania. W pętli głównej cyklicznie sprawdzasz tę zmienną i jak się zmieni to wykonujesz akcję.<br />Proponuję Ci poczytać BB <!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m -->, bo tak masz wszystko ładnie i po kolei potłumaczone.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 mar 2018, o 15:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-03T15:05:50+01:00</updated>
<published>2018-03-03T15:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204859#p204859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204859#p204859"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204859#p204859"><![CDATA[
<div class="quotetitle">rskup napisał(a):</div><div class="quotecontent"><br />Powiem tak - MASAKRA. W przerwaniu, które powinno trwać maksymalnie krótko wrzucasz całą logikę a w pętli głównej nie masz nic. Jeszcze te delaye w przerwaniu ...<br />Czyli zrobiłeś odwrotnie niż powinno się programować.<br /></div><br />No właśnie, już wiem że źle, ale o dziwo czas płynie ok,ale jak chcę dobrze i wrzucam to do pętli głównej to się spóźnia. A delaye tylko do guzikow.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 3 mar 2018, o 15:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-03-03T15:02:19+01:00</updated>
<published>2018-03-03T15:02:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204858#p204858</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204858#p204858"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204858#p204858"><![CDATA[
Powiem tak - MASAKRA. W przerwaniu, które powinno trwać maksymalnie krótko wrzucasz całą logikę a w pętli głównej nie masz nic. Jeszcze te delaye w przerwaniu ...<br />Czyli zrobiłeś odwrotnie niż powinno się programować.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 mar 2018, o 15:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-03T14:50:19+01:00</updated>
<published>2018-03-03T14:50:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204856#p204856</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204856#p204856"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204856#p204856"><![CDATA[
[syntax=c]#include &lt;string.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br />#include &quot;ds18b20/ds18b20.h&quot;<br /><br /><br /><br />#include &lt;avr/io.h&gt;<br /><br /><br />#include &lt;stdlib.h&gt;<br /><br /><br /><br />char buforek&#91;100&#93;;<br />char buforsekunda&#91;100&#93;;<br />char buforminuta&#91;100&#93;;<br />char buforgodzina&#91;100&#93;;<br />//TEMP<br />char bufor&#91;100&#93;;<br />float temperatura;<br /><br /><br />//-----------------------------------------------USTAW CZAS<br />uint8_t sekunda=30;<br />uint8_t minuta=31;<br />uint8_t godzina=8;<br />uint8_t l=13;<br />uint8_t ALARMON;<br />uint8_t SET;<br /><br />// TIMER0 overflow interrupt service routine<br />// called whenever TCNT0 overflows<br /><br />void timer2_init()<br />{<br />sei();<br />//cli() wylacza<br />TCCR1B |= (1 &lt;&lt; WGM12) | (1 &lt;&lt; CS12);// | (1 &lt;&lt; CS11) ;<br />//TCCR1B |= (1 &lt;&lt; WGM12) | (1 &lt;&lt; CS10) | (1 &lt;&lt; CS11) ; //Pre 64<br />TCCR1A |= 0;<br />TCNT1 = 0;<br />OCR1A=31249;<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />}<br /><br />int main(void)<br />{<br />LCD_Initalize();<br />LCD_Clear();<br />ALARMON=1;<br />SET=0;<br /><br />//FORMATKA<br />LCD_GoTo(6,0);<br />LCD_WriteText(&quot;00&quot;);<br /><br /><br />LCD_GoTo(5,0);<br />LCD_WriteText(&quot;,&quot;);<br />LCD_GoTo(0,1);<br />LCD_WriteText(&quot;Alarm&#91;&quot;);<br />LCD_GoTo(9,1);<br />LCD_WriteText(&quot;&#93;&quot;);<br /><br />    DDRB |= (1&lt;&lt;PB1) | (1&lt;&lt;PB2);<br />    PORTB |= ((1&lt;&lt;PB1) | (1&lt;&lt;PB2));<br /><br />    timer2_init();<br /><br /> DDRC &amp;= ~(1&lt;&lt;PC0);<br />    //PORTY    - MICROSWITCH<br />DDRC &amp;= ~(1&lt;&lt;PC4);<br />PORTC |=(1&lt;&lt;PC4);<br />DDRC &amp;= ~(1&lt;&lt;PC5);<br />PORTC |=(1&lt;&lt;PC5);<br /><br />DDRD &amp;= ~(1&lt;&lt;PD4);<br />PORTD |=(1&lt;&lt;PD4);<br /><br />DDRB &amp;= ~(1&lt;&lt;PB0); //set<br />PORTB |=(1&lt;&lt;PB0);<br /><br />LCD_GoTo(13,1);<br />LCD_WriteText(&quot;&#91;&quot;);<br />LCD_GoTo(15,1);<br />LCD_WriteText(&quot;&#93;&quot;);<br />//*****************************************************************************<br />    while(1)<br /><br />    {<br />    }<br /><br />}<br />void lcd_przerwa()<br />{<br />sekunda++;<br />if(SET==1)<br />{<br />sekunda++;<br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;  &quot;);<br />LCD_GoTo(3,0);<br />LCD_WriteText(&quot;  &quot;);<br />LCD_GoTo(6,0);<br />//LCD_WriteText(&quot;00&quot;);<br />//sekunda=0;<br />}<br /><br /><br />    LCD_GoTo(2,0);<br />LCD_WriteText(&quot; &quot;);<br /><br />temperatura=ds18b20_gettemp();<br /><br />dtostrf(temperatura,3,2, bufor);<br />LCD_GoTo(9,0);<br />LCD_WriteText(bufor);<br /> LCD_GoTo(14,0);<br /> LCD_WriteData(223);<br />LCD_GoTo(15,0);<br />LCD_WriteText(&quot;C&quot;);<br /><br />if (TCNT1&gt;=16137)<br />{<br />LCD_GoTo(2,0);<br />LCD_WriteText(&quot;:&quot;);<br />}<br /><br /><br />itoa(sekunda, buforsekunda, 10);<br />if(sekunda&lt;10 || sekunda==0)<br />{<br />LCD_GoTo(7,0);<br />LCD_WriteText(buforsekunda);<br />LCD_GoTo(6,0);<br />LCD_WriteText(&quot;0&quot;);<br /><br />}<br />else<br />{<br />LCD_GoTo(6,0);<br />LCD_WriteText(buforsekunda);<br />}<br /><br />    if(sekunda&gt;59)<br />{<br />    LCD_GoTo(6,0);<br /> LCD_WriteText(&quot;00&quot;);<br /><br />    minuta++;<br />    sekunda=0;<br />}<br />//--------------------------------------KONIEC SEKUNDA<br />    itoa(minuta, buforminuta, 10);<br />if(minuta&lt;10)<br />{<br />LCD_GoTo(4,0);<br />LCD_WriteText(buforminuta);<br />LCD_GoTo(3,0);<br />LCD_WriteText(&quot;0&quot;);<br />}<br />else<br />{<br />LCD_GoTo(3,0);<br />LCD_WriteText(buforminuta);<br />}<br />    if(minuta&gt;59)<br />{<br />LCD_GoTo(3,0);<br />LCD_WriteText(&quot;00&quot;);<br />minuta=0;<br />godzina++;<br />}<br /><br />itoa(godzina, buforgodzina, 10);<br />if(godzina&lt;10)<br />{<br />LCD_GoTo(1,0);<br />LCD_WriteText(buforgodzina);<br />LCD_GoTo(0,0);<br />LCD_WriteText(&quot;0&quot;);<br />}<br />else<br />{<br />LCD_GoTo(0,0);<br />LCD_WriteText(buforgodzina);<br />}<br /><br />   if (godzina == 24)<br />    {<br />   LCD_GoTo(0,0);<br />   LCD_WriteText(&quot;00&quot;);<br />   godzina=0;<br />    }<br /><br />  //Koniec minuta<br /><br /><br /><br />/* zalacz diody<br /><br />PORTB ^= (1&lt;&lt;PB2);<br />PORTB ^= (1&lt;&lt;PB1);<br />*/<br /><br />   //_______________________________ALARM<br /><br /> if ( !(PINC &amp; (1&lt;&lt;PC5)) )<br />           {<br />_delay_ms(5);<br />if ( !(PINC &amp; (1&lt;&lt;PC5)) )<br />{<br /><br /><br />if(SET==1)<br />{<br />godzina++;<br />}<br />else{<br />ALARMON = 0;<br />}<br /><br /><br />}<br />}<br /><br />   if ( !(PINC &amp; (1&lt;&lt;PC4)) )<br />{<br />_delay_ms(5);<br />if ( !(PINC &amp; (1&lt;&lt;PC4)) )<br />{<br />if(SET==1)<br />{<br />minuta++;<br />}<br />else{<br />ALARMON = 1;<br />}<br />}<br />}<br /><br /><br /><br />   if((godzina&gt;=0) &amp;&amp;  (sekunda&gt;=0) &amp;&amp; (sekunda&lt;=25) &amp;&amp; (ALARMON==1)   )<br />   {<br />   PORTB ^= (1&lt;&lt;PB1);<br />   }<br />   else{<br />   PORTB |= (1&lt;&lt;PB1);<br />   }<br />   if(ALARMON==1)<br />   {<br />   LCD_GoTo(6,1);<br />   LCD_WriteText(&quot;ON &quot;);}<br />   else<br />   {<br />   LCD_GoTo(6,1);<br />  LCD_WriteText(&quot;OFF&quot;);<br />   }<br /><br /><br /><br /><br /> if ( !(PINB &amp; (1&lt;&lt;PB0)) )<br />{<br />_delay_ms(5);<br />if ( !(PINB &amp; (1&lt;&lt;PB0)) )<br />{<br /><br />if(SET==1)<br />{<br />LCD_GoTo(10,1);<br />LCD_WriteText(&quot;   &quot;);<br />SET=0;<br /><br />}<br /><br />else//if(SET==0)<br />{<br />LCD_GoTo(10,1);<br />LCD_WriteText(&quot;SET&quot;);<br />SET=1;<br /><br />}<br />}<br />}<br /><br /><br /><br /><br /><br /><br />if ((temperatura)&gt;26)<br />{<br />LCD_GoTo(14,1);<br />LCD_WriteText(&quot;H&quot;);<br />PORTB ^= (1&lt;&lt;PB2);<br />}<br />  else<br />  {<br /><br />LCD_GoTo(14,1);<br />LCD_WriteText(&quot;*&quot;);<br />PORTB |= (1&lt;&lt;PB2);<br />  }<br /><br />//Kasowanie Sekundy 2 micros razem<br />if ( (!(PINC &amp; (1&lt;&lt;PC5)))  &amp;&amp; (!(PINC &amp; (1&lt;&lt;PC4))))<br />           {<br />           }<br />_delay_ms(5);<br />           if ( (!(PINC &amp; (1&lt;&lt;PC5)))  &amp;&amp; (!(PINC &amp; (1&lt;&lt;PC4))))<br />           {<br />           sekunda=0;<br /><br />           }<br /><br /><br />}<br /><br />ISR (TIMER1_COMPA_vect)<br />{<br /><br />TCNT1 = 0;<br />lcd_przerwa();<br />}[/syntax]<br /><br />I o dziwo czas idzie ok, ale jak wstawię kod do głównej pętli, a przerwa będzie tylko inkrementować sekundę to już ostro spóźnia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 3 mar 2018, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-02T21:17:31+01:00</updated>
<published>2018-03-02T21:17:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204832#p204832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204832#p204832"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204832#p204832"><![CDATA[
<div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />Tutaj chodziło kolegom żebyś więcej tego kodu pokazał a nie takie skrawki, nie bój się nie sprzedamy go do NASA <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />Nie o to chodzi.<br />I tak są jaja, może zamieszcze jutro ten kod bo obecnie nie jestem w chacie, tylko obawiam sie o wasze bezpieczeństwo, choć chyba ze śmiechu nikt nie umarł, ale kto to wie <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=18293">mircoLab</a> — 2 mar 2018, o 21:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-02T15:00:45+01:00</updated>
<published>2018-03-02T15:00:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204819#p204819</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204819#p204819"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204819#p204819"><![CDATA[
<div class="quotetitle">mircoLab napisał(a):</div><div class="quotecontent"><br />Nie mam pojęcia w jak inny sposób wyświetlać aktualny czas<br /></div><br />Dlatego wspominałem, że warto zacząć od tej książki ponieważ borykasz się na razie z brakiem mega podstawowych technik programowania a do tego jeszcze nie rozumiesz jak działają przerwania w prockach. Dlatego obejrzyj też koniecznie ten poradnik wideo...<br /><br />Co do istoty rzeczy, to wyświetlanie na LCD organizuje się z poziomu pętli głównej programu czy innych funkcji, w przerwaniach zaś wykonujesz tylko krótkie konieczne operacje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 mar 2018, o 15:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-02T14:27:07+01:00</updated>
<published>2018-03-02T14:27:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204818#p204818</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204818#p204818"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204818#p204818"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">mircoLab napisał(a):</div><div class="quotecontent"><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /></div></div><br />Dzięki! Chyba bez tego się nie obejdzie<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Harry napisał(a):</div><div class="quotecontent"><br />Wyświetlanie czegokolwiek na lcd w przerwaniu to nie jest najlepszy pomysł, pokaż kod bo tak to wróżenie z fusów.<br /></div><br /><br />Nie mam pojęcia w jak inny sposób wyświetlać aktualny czas <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 2 mar 2018, o 14:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-02T14:19:37+01:00</updated>
<published>2018-03-02T14:19:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204816#p204816</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204816#p204816"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204816#p204816"><![CDATA[
<div class="quotetitle">mircoLab napisał(a):</div><div class="quotecontent"><br />Cały kod jest zawarty w funkcji lcd_przerwa() wywołanej przez timer<br /></div><br />Panie kolego jeśli już robisz TAK karkołomne rzeczy to proszę obejrzyj sobie to:<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />a tak w ogóle to polecam zacznij od książki:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 mar 2018, o 14:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Harry]]></name></author>
<updated>2018-03-02T14:14:49+01:00</updated>
<published>2018-03-02T14:14:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204814#p204814</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204814#p204814"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204814#p204814"><![CDATA[
Wyświetlanie czegokolwiek na lcd w przerwaniu to nie jest najlepszy pomysł, pokaż kod bo tak to wróżenie z fusów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14685">Harry</a> — 2 mar 2018, o 14:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-02T13:08:45+01:00</updated>
<published>2018-03-02T13:08:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204810#p204810</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204810#p204810"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204810#p204810"><![CDATA[
Dobra działa, wyświetlenie wyniku na LCD pokazało co się dzieje. Tak jak miałem wciśnięty swich to on dodawał non top. I nie wiedziałem dlaczego zamiast 1 dodał np 47, teraz wiem że on po prostu 47 razy dodał 1. Tak przy okazji mam inne pytanko :<br /><br />Napisałem kod zegarka, długo siedziałem nad obliczeniem sekundy. Jest powiedzmy ok, tam ma dobie sie może trochę rozjedzie.<br />O co chodzi.<br />Cały kod jest zawarty w funkcji lcd_przerwa() wywołanej przez timer<br />[syntax=c]ISR (TIMER1_COMPA_vect)<br />{<br /><br />TCNT1 = 0;<br />lcd_przerwa();<br />}[/syntax]<br /><br />Jak w funkcji lcd_przerwa zostawię tylko by dodawał mi sekundę,<br />a całą resztę zostawiam w głównej pętli while(1) to zaczyna mi napradę widocznie się spóźniać chyba ok 3 sekund na 10.<br />Nie wiem dlaczego.<br />A chciałem dać ten kod włąśnie do głównej pętli bo wtedy na biezaco mogę operować na godzinie, a tak tylko jak jest przerwanie czyli co 1s.<br />Dlaczego to zwalnia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 2 mar 2018, o 13:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2018-03-02T12:47:32+01:00</updated>
<published>2018-03-02T12:47:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204807#p204807</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204807#p204807"/>
<title type="html"><![CDATA[Re: Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204807#p204807"><![CDATA[
Wstaw Kod w cywilizowany sposób. Wtedy pomyślimy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 2 mar 2018, o 12:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mircoLab]]></name></author>
<updated>2018-03-02T12:36:02+01:00</updated>
<published>2018-03-02T12:36:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204806#p204806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204806#p204806"/>
<title type="html"><![CDATA[Wskaźniki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20345&amp;p=204806#p204806"><![CDATA[
Witam,<br />Nie ogarniam tego. <br /><br />uint8_t godzina=10;<br />*<br />*<br />uint8_t *wsk_godzina = &amp;godzina; <br /><br />No i oki.<br />Tworzę sobie funkcję<br /><br />void godzina_plus()<br />{<br />g=*wsk_godzina;<br /><br />g1 = g+1;<br /><br />*wsk_godzina = g1;<br /><br />}<br />I wszystko się sypie, ale jak pominę *wsk_godzina = g1;, to jak wyświetlam zmienną g1 to liczy i wyświetla ją dobrze.<br />Jak po operacji chcę tą wartość zapisać do pamięci wskazanej wszystko się sypie. Jak przypisuję konkretną cyfrę np *wsk_godzina = 8; to jest ok.<br />Nie wiem o co kaman.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18293">mircoLab</a> — 2 mar 2018, o 12:36</p><hr />
]]></content>
</entry>
</feed>