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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-22T09:29:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13960&amp;mode</id>
<entry>
<author><name><![CDATA[fazowy]]></name></author>
<updated>2015-12-22T09:29:45+01:00</updated>
<published>2015-12-22T09:29:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148688#p148688</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148688#p148688"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148688#p148688"><![CDATA[
Dzięki panowie, zastosuje wasze porady, i dam znać o efektach. Co do dokładności, to wiem że zegar powinien być dokładny, ale całość ma zostać złóżona na płytce, i przedstawiona jako projekt na zaliczenie, poza tym głównie chodzi mi o ćwiczenie pisania kodu, niż super użyteczość urządzenia. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11542">fazowy</a> — 22 gru 2015, o 09:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tomson5]]></name></author>
<updated>2015-12-22T09:10:32+01:00</updated>
<published>2015-12-22T09:10:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148686#p148686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148686#p148686"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148686#p148686"><![CDATA[
Użyj przynajmniej kwarc zegarkowy. Zostaw go na dobę aby pochodził. Zobaczysz wtedy ile się późni czy spieszy  i można wtedy raz ma dobę zrobić programowo korektę. <br />Kiedyś udało mi się coś takiego spłodzić i działało. Oczywiście to taka proteza dedykowanego RTC. Wszystko zależy od potrzeb i oczekiwań.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2382">tomson5</a> — 22 gru 2015, o 09:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2015-12-22T07:21:38+01:00</updated>
<published>2015-12-22T07:21:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148681#p148681</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148681#p148681"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148681#p148681"><![CDATA[
W warunkach zastosuj podwójny ampersand (&amp;).<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />np. if(sec&lt;10 &amp; min&lt;10) zmień na if(sec&lt;10 &amp;&amp; min&lt;10)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 22 gru 2015, o 07:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[florekSi]]></name></author>
<updated>2015-12-22T02:49:20+01:00</updated>
<published>2015-12-22T02:49:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148679#p148679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148679#p148679"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148679#p148679"><![CDATA[
Chciałeś sugestii:<br />1. Usuń z przerwania operacje związane z obsługą LCD oraz sprintf(). One zajmują wiele czasu i całość nie będzie Ci działała poprawnie.<br />2. Zgromadź zmienne związane z czasem (sek, min, msec, god) w strukturze i usuń ją z przerwania. Opatrz zmienne te klasą pamięci volatile.<br />3. W przerwaniu pozostanie Ci jedynie &quot;inkrementowanie&quot; i obsługa &quot;rozbijania na części&quot; czasu.<br />4. W obsługi dostępu do atrybutów czasu (struktura którą sugerowałem), z main(), blokuj przerwania poprzez ATOMIC_BLOCK<br />5. Ja bym przemyślał przechowywanie czasu które Ty masz. Lepiej jest mieć 1 liczbę z ilością msec i w trakcie wyświetlania &quot;rozbijać ją&quot; na części związane z czasem.<br /><br />To tak na początek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11956">florekSi</a> — 22 gru 2015, o 02:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fazowy]]></name></author>
<updated>2015-12-22T01:53:07+01:00</updated>
<published>2015-12-22T01:53:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148676#p148676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148676#p148676"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148676#p148676"><![CDATA[
Ok, jutro to jakoś przemyślę, zarys całości jest taki, że ma to być taki jakby ekran główny, za pomocą przycisków będą opcje zmiany daty, godziny etc. A dlaczego niedokładny? Jak więc osiągnąć dokładną wartość, jeśli nie dzięki zastosowaniu rezonatora?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11542">fazowy</a> — 22 gru 2015, o 01:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marcin_G]]></name></author>
<updated>2015-12-22T01:44:19+01:00</updated>
<published>2015-12-22T01:44:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148675#p148675</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148675#p148675"/>
<title type="html"><![CDATA[Re: Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148675#p148675"><![CDATA[
Obsługa LCD w przerwaniu to chyba nie najlepszy pomysł. Możesz więc zacząć optymalizację od przeniesienia obsługi LCD do pętli głównej.<br />A tak w ogóle to zegar ten chyba za dokładny nie będzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=758">Marcin_G</a> — 22 gru 2015, o 01:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fazowy]]></name></author>
<updated>2015-12-22T00:35:11+01:00</updated>
<published>2015-12-22T00:35:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148674#p148674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148674#p148674"/>
<title type="html"><![CDATA[Pomysł na optymalizację, zegarek na AVR]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13960&amp;p=148674#p148674"><![CDATA[
Witam, chciałem stworzyć, zegar na atmega16, z wykorzystaniem LCD. Procesor podpięty pod kwarc 16 MHz, do odliczania czasu wykorzystuję Timer0, biblioteki do lcd za strony radzio.dxp.pl. Zegar działa ale patrząc na kod wydaje mi się że coś by się tu przydało zoptymalizować. <br />poniżej fragment kodu odpowiadający za wyświetlanie, warunków typu if(sec&lt;10 &amp; min&lt;10) wyszło by mi 8, jeśli ich nie stosuje, w momencie przejścia sekund z 9 na 10 na wyświetlaczu się mi wszystko rozjeżdża. Proszę o jakąś wskazówkę jak to poprawić;), w razie jakichś niejasności kodu, proszę pytać;)<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">ISR(TIMER0_OVF_vect) <br />{<br />    LCD_GoTo(4,0);<br />    TCNT0=6;<br />    msec++;<br />   if(min==60)<br />   {<br />      min=0;<br />      sec=0;<br />      msec=0;<br />      god++;      <br />   }<br />   if(sec==60)<br />   {<br />      sec=0;<br />      msec=0;      <br />      min++;      <br />   }      <br />    if(msec==1000)<br />    {<br />       msec=0;<br />       <br />      if(sec&lt;10 &amp; min&lt;10)<br />      {<br />       sprintf(bufor, &quot;0%d:0%d:0%d&quot;,god,min,sec);<br />       LCD_WriteText(bufor);<br />      }<br />      else if(sec&lt;10 &amp; min&gt;=10)<br />      {<br />         sprintf(bufor, &quot;0%d:%d:0%d&quot;,god,min,sec);<br />         LCD_WriteText(bufor);   <br />      }<br />      else if(sec&gt;=10 &amp; min&lt;10)<br />      {<br />         sprintf(bufor, &quot;0%d:0%d:%d&quot;,god,min,sec);<br />         LCD_WriteText(bufor);<br />      }<br />      else<br />      {<br />         sprintf(bufor, &quot;0%d:%d:%d&quot;,god,min,sec);<br />         LCD_WriteText(bufor);<br />      }               <br />      sec++;               <br />    }   <br />}<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11542">fazowy</a> — 22 gru 2015, o 00:35</p><hr />
]]></content>
</entry>
</feed>