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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-12-17T08:40:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=5059&amp;mode</id>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2013-12-17T08:40:18+01:00</updated>
<published>2013-12-17T08:40:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61461#p61461</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61461#p61461"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61461#p61461"><![CDATA[
<div class="quotetitle">Zinyx napisał(a):</div><div class="quotecontent"><br />Źle masz podłączony LM335, tak podłącz(pierwsza nóżka nie podłączona):<br />na PIN AREF tak samo 5V co na LM335.<br /></div><br />Tego to bym nie polecał... Zobacz poradnik Mirka o ADC. Tam jest uzasadnienie dlaczego<br />takiego połączenia robić nie należy <img src="https://forum.atnel.pl/images/smilies/icon_exclaim.gif" alt=":!:" title="Wykrzyknik" /> <br /><br /><div class="quotetitle">Zinyx napisał(a):</div><div class="quotecontent"><br />Aż dziw że Ci Eclipse błędami nie sypie...<br /></div><br />Jeśli to Eclips to na pewno sypie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> dlatego pytałem wcześniej w jakim środowisku kolega pisze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 17 gru 2013, o 08:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zinyx]]></name></author>
<updated>2013-12-17T06:39:12+01:00</updated>
<published>2013-12-17T06:39:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61457#p61457</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61457#p61457"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61457#p61457"><![CDATA[
Źle masz podłączony LM335, tak podłącz(pierwsza nóżka nie podłączona):<br /><img src="http://fyp.memebot.com/LM335circuit.jpg" alt="Obrazek" /><br />AN0 do PC5 w Atmedze a na VCC musisz dać 5V, na PIN AREF tak samo 5V co na LM335.<br /><br />ADMUX ustaw na zewnętrzne napięcie odniesienia<br />Prescaler możesz ustawić na 64<br />i pomiar zamiast 0.0024 daj na 0.0050<br /><br />I w ogóle masz złą obsługę od wyświetlacza. Tą co masz jest do PCD8544 (wyświetlacz od Nokii) zapewne z mojego tematu.<br /><br />Bezmyślnie kopiujesz i wklejasz.<br /><br />Aż dziw że Ci Eclipse błędami nie sypie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=847">Zinyx</a> — 17 gru 2013, o 06:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-16T23:22:10+01:00</updated>
<published>2013-12-16T23:22:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61450#p61450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61450#p61450"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61450#p61450"><![CDATA[
<div class="quotetitle">MirkoT napisał(a):</div><div class="quotecontent"><br />I mam taki pomysł. Nie pisz wszystkiego na raz. Jak chcesz dodać obsługę kilku rzeczy to<br />najpierw skup się na jednym np. wyświetlacz.<br />Diody migają to dokładasz obsługę wyświetlacza. Nie działa to wiesz gdzie szukać błędu.<br />Diody migają i wyświetlacz działa. Super. To teraz dodajesz ADC i znowu małymi kroczkami<br />do przodu.<br /></div><br /><br />MirkoT --&gt; mówi świętą prawdę - to NAJLEPSZA porada w tej sytuacji .... (taki post warto byłoby normalnie gdzieś na CZEROWNO na forum zaznaczyć) .... <br /><br />tak więc polarczn jak zaczniesz tymi mniejszymi kroczkami i nawet napotkasz pierwszy błąd którego np nie będziesz w stanie sam rozwiązać, to wtedy śmiało pokaż taki mniejszy fragment kodu a nam będzie łatwiej pomóc ... naprowadzić, podpowiedzieć<br /><br />ta porada kolegi wyżej - to właśnie SZTUKA PROGRAMOWANIA. Bo samo czyste pisanie kodu na pewno nie jest sztuką programowania samą w sobie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 gru 2013, o 23:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2013-12-16T20:45:12+01:00</updated>
<published>2013-12-16T20:45:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61428#p61428</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61428#p61428"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61428#p61428"><![CDATA[
<div class="quotetitle">polarczn napisał(a):</div><div class="quotecontent"><br />Dalsza część mojej męki z pisaniem kodu. Do migających diod chciałem dodać obsługę hd44780 i adc. Wkleiłem kod odpowiedzialny za ADC to mi już diody nie mrugają, pomimo, że kod był poprawny. Dodałem funkcję przerwanie, jednak to nie pomogło. ADC też mi źle działa, bo wyświetla liczbę - 163 i nie reaguje jak przyłożę palec. Mam kondensator pomiędzy GND i AREF, więc korzystam z napięcia odniesienia 2,56V co uwzględniłem w kodzie.<br />Korzystam z czujnika LM335. GND w czujniki podłączone jest pod GND całego zasilania, a VCC pod rezystor 10 k i do VCC. Ostatnia nóżka do ADC5. Macie jakieś pomysły?<br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt; <br />#include &lt;avr/pgmspace.h.&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;math.h&gt; <br />#include &quot;HD44780.c&quot; <br /> int i;<br /> float pomiar;<br />  char str&#91;8&#93;; <br />  char dioda1 &#91;&#93; = &quot;Dioda 1 aktywna&quot;;<br />  char dioda2 &#91;&#93; = &quot;Dioda 2 aktywna&quot;;<br />   char dioda3 &#91;&#93; = &quot;Dioda 3 aktywna&quot;;<br />  char dioda4 &#91;&#93; = &quot;Dioda 4 aktywna&quot;;<br />  void przerwanie()<br />  {<br />  <br />   TCNT0 = 5; //ladujemy wartosc poczatkowa<br /><br /> _delay_ms(500); <br />          DDRD = 0xff; //ustawiamy PD0 jako wyjscie<br />     <br />          TCCR0 |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00); //preskaler ustawiony na 64<br />          TIMSK |= (1&lt;&lt;TOIE0); //wlaczenie przerwan po przepelnieniu<br />  sei(); //globalne wlaczenie przerwan<br />   }<br /> ISR(TIMER0_OVF_vect)<br />  {<br />    //OVF-OVERFLOW-przepelnienie, czyli atmega zliczy 250 impulsow<br />     i++; // zwiększ jego wartość<br /><br />        <br />}<br /><br />    int main()<br />    {<br /><br />  LCD_Initalize(); <br />    ADMUX |= (1 &lt;&lt; MUX0);  // wybor wejscia<br />  ADMUX |= (1 &lt;&lt; MUX2);  // dla przetwornika<br /> <br />  ADMUX |= (1 &lt;&lt; REFS0);  // ustaw wewnetrzne napiecie<br />  ADMUX |= (1 &lt;&lt; REFS1); // odniesienia na AVCC<br /> <br />  ADCSRA |= (1 &lt;&lt; ADPS0); // wybór czestotliwosci<br />  ADCSRA |= (1 &lt;&lt; ADPS1); // pracy przetwornika<br />    ADCSRA |= (1 &lt;&lt; ADPS2); // pracy przetwornika<br /><br /> <br />  ADCSRA |= (1 &lt;&lt;ADEN);  // zezwolenie na prace ADC<br /> <br />  while(1)<br />  {<br /> <br />    ADCSRA |= (1 &lt;&lt; ADSC); // rozpocznij przetwarzanie<br />    while(bit_is_set(ADCSRA, ADSC))<br />                 // czekaj na koniec przetwarzania<br /> <br />    pomiar = ADCW;<br /> pomiar *= 0.0024; // bity na volty<br />    pomiar *= 100; // volty na kelwiny<br />    pomiar -= 273; // kelwiny na celsjusze <br /><br />   LCD_Clear();<br />   dtostrf(pomiar, 8, 1, str);<br />   LCD_WriteText(str);<br /><br /><br /> }<br /> <br />   <br />      <br />        <br />          while(1);<br />    <br /><br /><br /><br />if ((i&gt;5) &amp;&amp; (i&lt;2500)) // jeżeli i jest większa od 5 i mniejsze od 2500<br />{<br />PORTD |= (1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD1); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD3); // zapal diodę PD0<br /><br />}<br />else if (i&lt; 3500) // <br />{<br />PORTD |= (1&lt;&lt;PD1);<br />PORTD &amp;= ~(1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD3); // zapal diodę PD0<br />}<br />else if (i&lt;4500)<br />{<br />PORTD |= (1&lt;&lt;PD2);<br />PORTD &amp;= ~((1&lt;&lt;PD0)|(1&lt;&lt;PD1));<br />PORTD &amp;= ~(1&lt;&lt;PD3);<br />}<br />else if ((i&gt;6000) &amp;&amp; (i&lt;7000))<br />{ <br />PORTD |= (1&lt;&lt;PD3);<br />PORTD &amp;= ~(1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD1); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br /><br />}<br />else if (i&gt;7001)<br />i=0;<br />}[/syntax]<br /></div><br />Co do stosowania odpowiednich typów to gorąco polecam lekturę tego postu:<br /><a href="http://forum.atnel.pl/topic3687-120.html#p54795"  class="postlink">http://forum.atnel.pl/topic3687-120.html#p54795</a><br />I mam taki pomysł. Nie pisz wszystkiego na raz. Jak chcesz dodać obsługę kilku rzeczy to<br />najpierw skup się na jednym np. wyświetlacz.<br />Diody migają to dokładasz obsługę wyświetlacza. Nie działa to wiesz gdzie szukać błędu.<br />Diody migają i wyświetlacz działa. Super. To teraz dodajesz ADC i znowu małymi kroczkami<br />do przodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 gru 2013, o 20:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-16T20:23:24+01:00</updated>
<published>2013-12-16T20:23:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61424#p61424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61424#p61424"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61424#p61424"><![CDATA[
do tego co napisał kolega wyżej dodam ....<br /><br />Zdaje się że już była o tym mowa - weź ty spójrz na wcięcia w swoim programie, na totalny bałagan w kodzie - w ogóle nie wiadomo co do czego - i dziwisz się, że coś nie działa ? Ja się nie dziwię ... Przyznam, że ciężko w ogóle dostrzec o co chodzi w twoim kodzie. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />dlatego :<br /><br />1. zrób poprawne wcięcia<br />2. oddziel funkcje pomiędzy sobą (daj też komentarze)<br />3. popraw kod w main() bo to co jest na dole - to myślę że i tobie nawet ciężko rozpoznać o co tam chodzi<br /><br />a potem zadaj pytania do konkretnych części kodu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 gru 2013, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2013-12-16T20:22:32+01:00</updated>
<published>2013-12-16T20:22:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61423#p61423</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61423#p61423"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61423#p61423"><![CDATA[
takie małe pytanko. W jakim środowisku programujesz?<br />Może warto używać typów jakie oferuje avr-gcc? Zdecydowanie warto!<br /><br />program jak wejdzie w pętle zaczynającą się w linii 53 a kończącej się w 69 to już z niej nie wyjdzie.<br />Nie będzie Ci więc migał diodami co masz zrealizowane w liniach od 79 do 110. Ten fragment nigdy Ci się<br />nie wykona.<br />Do sprawdzania stanu bitów nie używaj kociego makra bit_is_set <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=189">MirkoT</a> — 16 gru 2013, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2013-12-16T19:12:53+01:00</updated>
<published>2013-12-16T19:12:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61419#p61419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61419#p61419"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=61419#p61419"><![CDATA[
Dalsza część mojej męki z pisaniem kodu. Do migających diod chciałem dodać obsługę hd44780 i adc. Wkleiłem kod odpowiedzialny za ADC to mi już diody nie mrugają, pomimo, że kod był poprawny. Dodałem funkcję przerwanie, jednak to nie pomogło. ADC też mi źle działa, bo wyświetla liczbę - 163 i nie reaguje jak przyłożę palec. Mam kondensator pomiędzy GND i AREF, więc korzystam z napięcia odniesienia 2,56V co uwzględniłem w kodzie.<br />Korzystam z czujnika LM335. GND w czujniki podłączone jest pod GND całego zasilania, a VCC pod rezystor 10 k i do VCC. Ostatnia nóżka do ADC5. Macie jakieś pomysły?<br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt; <br />#include &lt;avr/pgmspace.h.&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;math.h&gt; <br />#include &quot;HD44780.c&quot; <br /> int i;<br /> float pomiar;<br />  char str&#91;8&#93;; <br />  char dioda1 &#91;&#93; = &quot;Dioda 1 aktywna&quot;;<br />  char dioda2 &#91;&#93; = &quot;Dioda 2 aktywna&quot;;<br />   char dioda3 &#91;&#93; = &quot;Dioda 3 aktywna&quot;;<br />  char dioda4 &#91;&#93; = &quot;Dioda 4 aktywna&quot;;<br />  void przerwanie()<br />  {<br />  <br />   TCNT0 = 5; //ladujemy wartosc poczatkowa<br /><br /> _delay_ms(500); <br />          DDRD = 0xff; //ustawiamy PD0 jako wyjscie<br />     <br />          TCCR0 |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00); //preskaler ustawiony na 64<br />          TIMSK |= (1&lt;&lt;TOIE0); //wlaczenie przerwan po przepelnieniu<br />  sei(); //globalne wlaczenie przerwan<br />   }<br /> ISR(TIMER0_OVF_vect)<br />  {<br />    //OVF-OVERFLOW-przepelnienie, czyli atmega zliczy 250 impulsow<br />     i++; // zwiększ jego wartość<br /><br />        <br />}<br /><br />    int main()<br />    {<br /><br />  LCD_Initalize(); <br />    ADMUX |= (1 &lt;&lt; MUX0);  // wybor wejscia<br />  ADMUX |= (1 &lt;&lt; MUX2);  // dla przetwornika<br /> <br />  ADMUX |= (1 &lt;&lt; REFS0);  // ustaw wewnetrzne napiecie<br />  ADMUX |= (1 &lt;&lt; REFS1); // odniesienia na AVCC<br /> <br />  ADCSRA |= (1 &lt;&lt; ADPS0); // wybór czestotliwosci<br />  ADCSRA |= (1 &lt;&lt; ADPS1); // pracy przetwornika<br />    ADCSRA |= (1 &lt;&lt; ADPS2); // pracy przetwornika<br /><br /> <br />  ADCSRA |= (1 &lt;&lt;ADEN);  // zezwolenie na prace ADC<br /> <br />  while(1)<br />  {<br /> <br />    ADCSRA |= (1 &lt;&lt; ADSC); // rozpocznij przetwarzanie<br />    while(bit_is_set(ADCSRA, ADSC))<br />                 // czekaj na koniec przetwarzania<br /> <br />    pomiar = ADCW;<br /> pomiar *= 0.0024; // bity na volty<br />    pomiar *= 100; // volty na kelwiny<br />    pomiar -= 273; // kelwiny na celsjusze <br /><br />   LCD_Clear();<br />   dtostrf(pomiar, 8, 1, str);<br />   LCD_WriteText(str);<br /><br /><br /> }<br /> <br />   <br />      <br />        <br />          while(1);<br />    <br /><br /><br /><br />if ((i&gt;5) &amp;&amp; (i&lt;2500)) // jeżeli i jest większa od 5 i mniejsze od 2500<br />{<br />PORTD |= (1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD1); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD3); // zapal diodę PD0<br /><br />}<br />else if (i&lt; 3500) // <br />{<br />PORTD |= (1&lt;&lt;PD1);<br />PORTD &amp;= ~(1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD3); // zapal diodę PD0<br />}<br />else if (i&lt;4500)<br />{<br />PORTD |= (1&lt;&lt;PD2);<br />PORTD &amp;= ~((1&lt;&lt;PD0)|(1&lt;&lt;PD1));<br />PORTD &amp;= ~(1&lt;&lt;PD3);<br />}<br />else if ((i&gt;6000) &amp;&amp; (i&lt;7000))<br />{ <br />PORTD |= (1&lt;&lt;PD3);<br />PORTD &amp;= ~(1&lt;&lt;PD0); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD1); // zapal diodę PD0<br />PORTD &amp;= ~(1&lt;&lt;PD2); // zapal diodę PD0<br /><br />}<br />else if (i&gt;7001)<br />i=0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 16 gru 2013, o 19:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-12-08T15:36:26+01:00</updated>
<published>2013-12-08T15:36:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60088#p60088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60088#p60088"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60088#p60088"><![CDATA[
Dodatkowo proszę o wstawianie kodów w znaczniku [syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 gru 2013, o 15:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-12-08T14:52:49+01:00</updated>
<published>2013-12-08T14:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60081#p60081</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60081#p60081"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60081#p60081"><![CDATA[
<div class="quotetitle">polarczn napisał(a):</div><div class="quotecontent"><br />Bingo. Kod działa tak jak powinien.<br /></div><br /><br />to wypada chyba kliknąć klawisz &quot;Pomógł&quot; ? prawda ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 gru 2013, o 14:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2013-12-08T16:10:06+01:00</updated>
<published>2013-12-08T14:39:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60079#p60079</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60079#p60079"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60079#p60079"><![CDATA[
Bingo. Kod działa tak jak powinien.<br />Jak rozumieć taką operację?<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">PORTD &amp;= ~(1&lt;&lt;PD2);<br /></div><br />Znalazłem taką stronę:<br /><!-- m --><a class="postlink" href="http://www.elektroda.pl/rtvforum/topic2277003.html" >http://www.elektroda.pl/rtvforum/topic2277003.html</a><!-- m --><br />Na PD2 jest ustawiona 1. Operator &amp; oznacza, że tam gdzie jest jedynka będzie jedynka, a tam gdzie zero 0. ~ oznacza zmianę z 0 na 1 i z 1 na 0. Dobrze już wiem. Tak się ustala 0 bez wcześniejszego sprawdzania jaki stan był na porcie.<br />Nie zauważyłem takiej opcji. Już to poprawiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 8 gru 2013, o 14:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mik]]></name></author>
<updated>2013-12-08T01:50:06+01:00</updated>
<published>2013-12-08T01:50:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60048#p60048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60048#p60048"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60048#p60048"><![CDATA[
Krótko mówiąc spróbuj np. tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /> <br />volatile int sekunda = 0;<br />int main()<br />{<br />      DDRD = 0xff; //ustawiamy PD0 jako wyjscie<br /> <br />      TCCR0 |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00); //preskaler ustawiony na 64<br />      TIMSK |= (1&lt;&lt;TOIE0); //wlaczenie przerwan po przepelnieniu<br /><br />      sei(); //globalne wlaczenie przerwan<br />      while(1);<br />}<br /> <br />ISR(TIMER0_OVF_vect) //OVF-OVERFLOW-przepelnienie, czyli atmega zliczy 250 impulsow<br />{<br />     sekunda++;<br />     TCNT0 = 0; //ladujemy wartosc poczatkowa<br />     if(sekunda &lt; 1200)<br />      {<br />           PORTD |= (1&lt;&lt;PD1); // ustawiam stan wysoki na porcie PD1<br />           PORTD &amp;= ~(1&lt;&lt;PD2);<br />       }<br />     else if(sekunda &lt; 2500)<br />       {<br />           PORTD &amp;= ~(1&lt;&lt;PD1);<br />           PORTD |= (1&lt;&lt;PD2); // ustawiam stan wysoki na porcie PD2<br />        }<br />     else<br />       {<br />           sekunda=0;<br />       }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2187">mik</a> — 8 gru 2013, o 01:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[karol901]]></name></author>
<updated>2013-12-08T00:27:43+01:00</updated>
<published>2013-12-08T00:27:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60042#p60042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60042#p60042"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60042#p60042"><![CDATA[
Tak na moje oko to warunek masz do poprawy, chyba że te klamerki rzeczywiście źle przekopiowane. Teraz to wygląda, że sekunda&gt;2500 zadziała gdy sekunda &lt;1200<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1374">karol901</a> — 8 gru 2013, o 00:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2013-12-07T22:13:23+01:00</updated>
<published>2013-12-07T22:13:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60036#p60036</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60036#p60036"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60036#p60036"><![CDATA[
Zmienię z char na unsigned int. Klamerki celowo tak dałem, wzorując się na innych przykładach kodów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 7 gru 2013, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mik]]></name></author>
<updated>2013-12-07T21:47:02+01:00</updated>
<published>2013-12-07T21:47:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60034#p60034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60034#p60034"/>
<title type="html"><![CDATA[Re: Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60034#p60034"><![CDATA[
Po pierwsze to chyba trzeba &quot;volatile char sekunda&quot; dać. Poza tym char zmieści liczby tylko 8-bitowe, czyli do 1200 nie doliczy. Klamerki się też coś nie zgadzają, ale może to źle skopiowałeś.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2187">mik</a> — 7 gru 2013, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[polarczn]]></name></author>
<updated>2013-12-07T21:10:14+01:00</updated>
<published>2013-12-07T21:10:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60029#p60029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60029#p60029"/>
<title type="html"><![CDATA[Timer0 - nie działa tak jak chcę.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5059&amp;p=60029#p60029"><![CDATA[
Mam Atmegę8 taktowaną zewnętrznym kwarcem 12 Mhz. Chcę przy pomocy Timera0 mrugać co kilka sekund jedną diodą, a później drugą. Siedzę na tym kilka godzin i nie mam efektów. Wybieram preskaler 64. Podliczyłem, że będę miał przepełnienie co około 754 przerwania.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /> <br />char sekunda = 0;<br />int main()<br />{<br />      DDRD = 0xff; //ustawiamy PD0 jako wyjscie<br /> <br />      TCCR0 |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00); //preskaler ustawiony na 64<br />      TIMSK |= (1&lt;&lt;TOIE0); //wlaczenie przerwan po przepelnieniu<br /><br />      sei(); //globalne wlaczenie przerwan<br />      while(1);<br />}<br /> <br />ISR(TIMER0_OVF_vect) //OVF-OVERFLOW-przepelnienie, czyli atmega zliczy 250 impulsow<br />{<br />sekunda++;<br />   TCNT0 = 0; //ladujemy wartosc poczatkowa<br />     if(sekunda &lt; 1200)<br />      {<br />           PORTD |= (1&lt;&lt;PD1); // ustawiam stan wysoki na porcie PD1<br />  <br />if(sekunda &gt; 2500)<br />  PORTD |= (1&lt;&lt;PD2); // ustawiam stan wysoki na porcie PD2<br /><br />          <br />         } <br /> TCNT0 = 0; //ladujemy wartosc poczatkowa<br />      }[/syntax]<br />Dioda PD1 powinna się palić co koło 1,5 sekundy, później przez kilka sekund dioda PD2 i potem cały cykl powinien się powtarzać od nowa.<br /><br /><span style="color: #FF0000"><strong>Proszę czytać czerwony napis nad oknem pisania posta i sie stosować  -- poprawiłem --&gt; SunRiver</strong></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1714">polarczn</a> — 7 gru 2013, o 21:10</p><hr />
]]></content>
</entry>
</feed>