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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-20T16:30:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=9763&amp;mode</id>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-12-20T16:30:37+01:00</updated>
<published>2014-12-20T16:30:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109684#p109684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109684#p109684"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109684#p109684"><![CDATA[
<div class="quotetitle">pbmaster napisał(a):</div><div class="quotecontent"><br />Ale czy te 2 delaye mogą zrobić opóźnienie 1sek? Czy przy próbie nie wpisywania ich program chodzi prawidłowo? Wiadomo powstaną drgania styków, ale przynajmniej będzie wiadomo czy to przez delaye są problemy.<br />Poza tym unsigned int czy zwykły int to i tak zajmuje 2 bajty pamięci ram, więc zmiana ta niewiele wnosi. A nie można w c++ zastosować np. uint8_t? Jak mówię jestem też początkujący i też się uczę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br /><br />Owszem kolego mogą zakładając że kolega ustawił w projekcie kwarc 8.000.000 a w fuse bitach ma ustawiony oscylator na 1.000.000<br /><br /><br />hmm już gołym okiem widać że program wykona się 8x wolniej a co z tym idzie ?<br /><br />80 ms * 8 = 640ms dla jednego delaya <br /><br />a że są dwa delaye w projekcie to <br /><br />640ms * 2 = 1280 ms czyli ponad sekundę co oznacza opis kolegi że około 1 sek blokuje się projekt<br /><br />więc posprawdzałbym fuse bity jak i ustawienia częstotliwości taktowania w projekcie<br /><br />pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 20 gru 2014, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-12-20T14:14:24+01:00</updated>
<published>2014-12-20T14:14:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109654#p109654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109654#p109654"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109654#p109654"><![CDATA[
No tak ale zamiast delay możesz użyć timer programowy.<br /><br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 20 gru 2014, o 14:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skotipi]]></name></author>
<updated>2014-12-20T13:30:16+01:00</updated>
<published>2014-12-20T13:30:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109639#p109639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109639#p109639"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109639#p109639"><![CDATA[
wielkie dzięki kolego &quot;majster&quot; właśnie pomogłeś mi coś zauważyć zmieniłem czas &quot;delaji&quot; z 80 ms na 20ms  i już działa super dokładnie tak jak chciałem wielkie dzięki za pomoc pozdrawiam<br /><br />ps jakaś obsługa drgań styków musi być więc bez &quot;delaji&quot; działa źle to tak dla zainteresowanych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7081">skotipi</a> — 20 gru 2014, o 13:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pbmaster]]></name></author>
<updated>2014-12-20T13:30:30+01:00</updated>
<published>2014-12-20T13:26:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109638#p109638</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109638#p109638"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109638#p109638"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Kolego pbmaster wlasnie gdyby kol skotipi kozystal z przerwan i timerow to by mu wszystko smigalo.<br /></div><br />Ale czy te 2 delaye mogą zrobić opóźnienie 1sek? Czy przy próbie nie wpisywania ich program chodzi prawidłowo? Wiadomo powstaną drgania styków, ale przynajmniej będzie wiadomo czy to przez delaye są problemy.<br />Poza tym unsigned int czy zwykły int to i tak zajmuje 2 bajty pamięci ram, więc zmiana ta niewiele wnosi. A nie można w c++ zastosować np. uint8_t? Jak mówię jestem też początkujący i też się uczę <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=2093">pbmaster</a> — 20 gru 2014, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skotipi]]></name></author>
<updated>2014-12-20T13:22:47+01:00</updated>
<published>2014-12-20T13:22:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109634#p109634</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109634#p109634"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109634#p109634"><![CDATA[
no a może jakaś podpowiedz na co albo jak zamienić &quot;delaje&quot;??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7081">skotipi</a> — 20 gru 2014, o 13:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-12-20T13:19:38+01:00</updated>
<published>2014-12-20T13:19:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109632#p109632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109632#p109632"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109632#p109632"><![CDATA[
Kolego pbmaster wlasnie gdyby kol skotipi kozystal z przerwan i timerow to by mu wszystko smigalo. Jednak kolega skotipi uzywa delay_ms co blokuje program. Postaraj sie pojsc w timery.<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 20 gru 2014, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skotipi]]></name></author>
<updated>2014-12-20T13:20:20+01:00</updated>
<published>2014-12-20T13:10:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109629#p109629</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109629#p109629"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109629#p109629"><![CDATA[
Zmieniłem &quot;unsigned int&quot; na int ale nic to nie zmieniło dalej muszę czekać 1 sec żeby do licznika dodała się 1 może ktoś wie jak przerobić ten program żeby pozbyć się tej zwłoki czasowej jak narazie ten program jest bezużyteczny, może te  &quot;_delay_ms(80);&quot; mu tak przeszkadzają ale muszę je mieć żeby pozbyć się drgania styków. Ma ktoś jeszcze jakieś pomysły.<br /><br />A odnośnie bluebooka to muszę czekać na cały zestaw startowy dopiero w połowie stycznia będzie dostępny więc lipa.<br />Pozdrawiam i czekam na jakieś podpowiedzi.<br /><br />Chyba że atmega8 jest do tego za słaba i trzeba użyć albo 2 procesorów atmega8 jeden liczący jeden wyświetlający albo np atmegi16??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7081">skotipi</a> — 20 gru 2014, o 13:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pbmaster]]></name></author>
<updated>2014-12-19T14:44:04+01:00</updated>
<published>2014-12-19T14:44:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109498#p109498</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109498#p109498"/>
<title type="html"><![CDATA[Re: licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109498#p109498"><![CDATA[
Też jestem początkujący i powiem co mi się wydaję złe <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Otóż niepotrzebnie używasz unsigned int do zmiennych co zajmuje niepotrzebnie tyle pamięci. Można użyć innych typów zmiennych, żeby zajmowały, mniej pamięci.<br />Poza tym wykorzystujesz aż 2 przerwania a co się z tym wiąże, kiedy jedno jest wykonywane to drugie czeka na swoją kolej i blokuje program główny. Wszystko odbywa się w przerwaniach zbyt długo! Musisz ograniczyć się do jak najmniejszej ilości operacji w przerwaniu.<br />Na szybko nie podsunę podpowiedzi jak rozwiązać cały problem. Jeśli masz bluebooka, to zajrzyj jak tam jest wykonane multipleksowanie, jeśli nie masz, to uwierz mi warto go zakupić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2093">pbmaster</a> — 19 gru 2014, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skotipi]]></name></author>
<updated>2014-12-19T14:11:37+01:00</updated>
<published>2014-12-19T14:11:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109490#p109490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109490#p109490"/>
<title type="html"><![CDATA[licznik na atmega8 z wyświetlaczem i przyciskami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9763&amp;p=109490#p109490"><![CDATA[
Witam jest to mój pierwszy post więc proszę o wyrozumiałość<br /><br />Chciałbym do atmegi8 podłączyć trzy cyfry z wyświetlacza siedmiosegmentowego poprzez multupleksowanie przeskakuje pomiędzy liczbami  i to działa 3 liczby się wyświetlają.<br />Jeżeli włączę licznik to on sam może liczyć wolno albo szybko tak jak go ustawie i to też działa.<br />Do tego wszystkiego podłączam dwa przyciski i jednym dodaje 10 do liczby a drugim 1 i to tez działa ale niestety z opóźnieniem około 1 sekundy. <br />Moje pytanie to czy można przerobić jakoś ten mój program żeby  zniwelować opóźnienie i żeby liczby dodawały się od razu. Jeśli mógł by mi też ktoś wytłumaczyć skąd bierze się ta zwłoka czasowa, dlaczego tak się dzieje skoro sam licznik potrafi dodawać liczby bardzo szybko.<br /><br />porty od PD0 do PD7 sterują odpowiednimi segmentami w 7 segmentowym wyświetlaczu.<br />porty PB0 PB1 i PB2 sterują kolejno całymi segmentami<br />a porty PC0 i PC1 to przyciski które są podłączane do GND<br /><br />z góry dziękuję a oto mój kod z C++<br /><br />[syntax=cpp]#include &lt;avr/io.h&gt; <br />#include &lt;avr/interrupt.h&gt; <br />#include &lt;util/delay.h&gt;  <br />        <br />/* <br />cyfry na wyświetlaczu <br /><br />/////////////////<br />0 0b11000000 192<br />1 0b11111001 249<br />2 0b10100100 164<br />3 0b10110000 176<br />4 0b10011001 153<br />5 0b10010010 146<br />6 0b10000010 130<br />7 0b11111000 248<br />8 0b10000000 128<br />9 0b10010000 144<br />*/ <br /><br />volatile unsigned int cyfra&#91;10&#93;={192,249,164,176,153,146,130,248,128,144}; <br />volatile unsigned int i,j,wysw,liczba,setki,dziesiatki,jednosci,licznik; <br /><br /><br />int main(void) <br />{ <br />    <br />   DDRC  = 0x00;<br />   PORTC = 0b00000011; <br />   DDRB=0b11111111;   //port B wyjscia <br />   DDRD=0b11111111;   //port D wyjscia <br />   TCCR1B=(1 &lt;&lt; CS10 |1 &lt;&lt; CS11 | 1&lt;&lt; WGM12);   //ustaw timer1 z preskalerem 64 //ustaw timer1 w tryb CTC <br />   TCCR2=(1 &lt;&lt; WGM21 | 1 &lt;&lt; CS22);   //ustaw timer2 z preskalerem 64; timer2 na CTC <br />   OCR2=125;   //timer2, częstotliwość wyświetlaczy 125HZ <br />   OCR1A=1562;   //do ilu liczy timer1 dla odmierzenia 1s <br />   SREG=(1 &lt;&lt; 7);   //zezwolenie na przerwania <br />   TIMSK=(1 &lt;&lt; OCIE1A | 1 &lt;&lt; OCIE2);   //zezwolenia na przerwania dla CTC <br />    <br />   while(1)<br />   {<br /> <br />  // Jeśli pierwszy przycisk wciśnięty <br />if (!(PINC &amp;(1&lt;&lt;PC0)) )<br />//if(!(PINC &amp; 0x01))<br />{<br /><br />  // opóżnienie aż drgania na stykach ustaną <br />  _delay_ms(80);<br />  <br />liczba++;  //dodaj 1<br /><br />   }<br /><br />// Jeśli drugi przycisk wciśnięty <br />if (!(PINC &amp;(1&lt;&lt;PC1)) )<br />//if(!(PINC &amp; 0x02))<br />{<br />  // opóżnienie aż drgania na stykach ustaną <br />   _delay_ms(80);<br />  <br />liczba= liczba+10; //dodaj 10<br />   }<br /><br />   } <br />} <br /> <br />   <br />ISR(TIMER1_COMPA_vect) <br />{ <br />   setki=liczba/100; <br />   dziesiatki=liczba/10; <br />   jednosci=liczba%10; <br />   <br />   <br />   if (liczba&gt;=100) //jezeli liczba wieksza rowna 100<br />   {<br />   dziesiatki= (liczba-(setki*100))/10;<br />   }<br />   <br />   <br />   if(liczba&gt;=999) //jezeli liczba wieksza rowna 999<br />   {<br />   liczba=0;<br />   }<br />   <br />   else <br />   {<br />  liczba++;    //dodawanie liczb automatycznie dziala jak stoper<br />   } <br />} <br /><br /><br />ISR(TIMER2_COMP_vect) <br />{ <br />   <br />   //unsigned char a;<br /><br />switch(wysw)<br />{<br />  case 0:<br />    {<br />PORTB=0b11111110;   //wł pierwszy wyświetlacz <br />    PORTD=cyfra&#91;setki&#93;; <br />      wysw=1; <br />  <br />  <br />  break;}<br /> <br /> case 1:<br />    {<br />PORTB=0b11111101;   //wł drugi wyświetlacz <br />     // PORTD=192;<br />  PORTD=cyfra&#91;dziesiatki&#93;; <br />      wysw=2; <br />  <br />  break;}<br /> <br /> case 2:<br />     {<br /> PORTB=0b11111011;   //wł trzeci wyświetlacz <br />      PORTD=cyfra&#91;jednosci&#93;; <br />      wysw=0; <br /> <br />  break; }<br /> <br /><br />  default:<br />  {}<br />  /* jeśli żaden z wcześniejszych wariantów */<br />}<br />   <br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7081">skotipi</a> — 19 gru 2014, o 14:11</p><hr />
]]></content>
</entry>
</feed>