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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-23T19:10:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7638&amp;mode</id>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-23T19:10:11+01:00</updated>
<published>2014-09-23T19:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96486#p96486</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96486#p96486"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96486#p96486"><![CDATA[
Witam,<br /><br /><div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />Dzięki wielkie kolego damian89 za precyzyjna odpowiedz  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> taka sobie właśnie wymarzyłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />A odnośnie przerwań to teraz mi do głowy przyszło że dużo bardziej praktyczne  raczej są te zewnętrzne pochodządze od innych ukłądów czy przełączników, jednak &quot;majdrowanie &quot;  tymi wszystkimi rejestrami i bitami jest niesamowicie męczące dla mnie :/  i  na razie jeszcze nie mam pojęcia jak je ustawić ale będę szukał a jak nie znajde to pytał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo niestety w BB jak dotąd nie spotkałem się z wyjaśnieniem tego zagadnienia , chyba że w wydaniu II jest coś o tym ? (niestety jak na razie nie posiadam )<br /></div><br /><br />Kolega na przyszłość doman89 nie damian89 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Przerwania są różne, bo różne są potrzeby. Lepsze przerwania mogą być do konkretnego problemu, do innego bezużyteczne <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Co do męczenia rejestrów to niestety, ale programowanie mikrokontrolerów to właśnie zabawa z różnymi rejestrami. Nawet ustawianie DDRx to już zabawa z rejestrem <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Wszystko z czasem przychodzi, jedna zasada, jeżeli chce się być programistą to trzeba po prostu pisać, a gdy staje się wszystko ciężkie i niezrozumiałe, to ważne aby się nie poddawać i zawsze zrobić ten jeden mały krok do przodu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Ja też jestem początkujący, choć jak to mówi pan Mirek, jeden kroczek przed Tobą.<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 23 wrz 2014, o 19:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-09-23T18:32:16+01:00</updated>
<published>2014-09-23T18:32:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96485#p96485</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96485#p96485"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96485#p96485"><![CDATA[
<div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />Dzięki wielkie kolego damian89 za precyzyjna odpowiedz  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> taka sobie właśnie wymarzyłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />A odnośnie przerwań to teraz mi do głowy przyszło że dużo bardziej praktyczne  raczej są te zewnętrzne pochodządze od innych ukłądów czy przełączników, jednak &quot;majdrowanie &quot;  tymi wszystkimi rejestrami i bitami jest niesamowicie męczące dla mnie :/  i  na razie jeszcze nie mam pojęcia jak je ustawić ale będę szukał a jak nie znajde to pytał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo niestety w BB jak dotąd nie spotkałem się z wyjaśnieniem tego zagadnienia , chyba że w wydaniu II jest coś o tym ? (niestety jak na razie nie posiadam )<br /></div><br />Oczywiście, że jest w BB i to na każdym kroku. Jednak BB to tylko &quot;drogowskaz&quot; a szczegóły masz w nocie. I bez połączenia jednego z drugim się po prostu NIE DA <img src="https://forum.atnel.pl/images/smilies/icon_exclaim.gif" alt=":!:" title="Wykrzyknik" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 23 wrz 2014, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xardes]]></name></author>
<updated>2014-09-23T18:19:57+01:00</updated>
<published>2014-09-23T18:19:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96484#p96484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96484#p96484"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96484#p96484"><![CDATA[
Dzięki wielkie kolego damian89 za precyzyjna odpowiedz  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> taka sobie właśnie wymarzyłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />A odnośnie przerwań to teraz mi do głowy przyszło że dużo bardziej praktyczne  raczej są te zewnętrzne pochodządze od innych ukłądów czy przełączników, jednak &quot;majdrowanie &quot;  tymi wszystkimi rejestrami i bitami jest niesamowicie męczące dla mnie :/  i  na razie jeszcze nie mam pojęcia jak je ustawić ale będę szukał a jak nie znajde to pytał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> bo niestety w BB jak dotąd nie spotkałem się z wyjaśnieniem tego zagadnienia , chyba że w wydaniu II jest coś o tym ? (niestety jak na razie nie posiadam )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5876">xardes</a> — 23 wrz 2014, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-23T17:42:10+01:00</updated>
<published>2014-09-23T17:42:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96475#p96475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96475#p96475"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96475#p96475"><![CDATA[
Witam,<br /><br /><div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />Witam. Mam pytanie odnośnie tego fragmentu kodu czyli wykonania podprogramu przerwania :<br />[syntax=c]ISR(TIMER0_OVF_vect){<br />                static uint16_t licznik = 0 ;<br /> <br />                licznik++;<br />                if(licznik &gt; 1000){<br />                                MIGAJ_LED;<br />                                licznik = 0;<br />                }<br />}[/syntax]<br /></div><br /><br />Kod:<br />1 linijka: Rejestrowanie zmiennej statycznej uint16_t licznik (na starcie wyzerowana, można przypisanie zera pominąć. Tak jest przy zmiennych statycznych oraz globalnych)<br />2 linijka: Podczas przerwania zwiększ zmienną licznik o 1.<br />3 linijka: Jeżeli zmienna licznik jest większa od 1000 to:<br />a) wykonaj MIGAJ_LED;<br />b) wyzeruj zmienną licznik (czyli tak jakby wracamy do punktu 1).<br /><br /><div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />Gdyż według BB i instrukcji tam zawartych głównie na temat odszukania niezbędnych informacji w nocie katalogowej na temat uruchomienia przerwania, nie zauważyłem informacji na temat trybu CTC oraz odpowiednich nazw bitów dla atmegi8 - ale okej możliwe że mój angielski i moja niewiedza mnie zaskoczyła.<br /></div><br /><br />Datasheet to podstawa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Po pierwsze jeżeli kolega szukał przy Timerze0 to jak ktoś wcześnej napisał - Mega8 nie posiada trybu CTC w Timer0.<br />W Timerze1 np. można już znaleźć taki tryb w tabeli nr 39 (wg DS który posiadam) która jest opisana jako: <em> Waveform Generation Mode Bit Description</em>.<br /><br /><div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />Jednak bardziej chciałem się  upewnić czy dobrze rozumiem co się dzieje w tym podprogramie czyli :<br />Przerwanie z tego co wyczytałem działa tak że leci sobie licznik jeśli osiągnie jakąś tam wartość (w BB było ona ładnie dobierana i zapisana w &quot;OCR0&quot; , tutaj nie wiem jaka jest ? ) następuje wyzerowanie tego  licznika i wykonanie podprogramu , czyli tutaj stworzona jest jakaś zmienna która całkiem osobno liczy nam tutaj do wartości 1000 , i jeśli osiągnie wartość 1000 następuje zmiana stanu diody - zgadza się ?<br /></div><br /><br />Kolega dobrze myśli tylko OCR0 - w Medze8 nie ma jak już wspomniałem. Tutaj korzysta się z TCNT0, który trzeba ustawiać od nowa w każdym przerwaniu. Odsyłam do BB - w II wydaniu strona nr 39.<br /><br /><div class="quotetitle">xardes napisał(a):</div><div class="quotecontent"><br />I teraz tak się zastanawiam jeśli dalej sami sobie odliczamy jakiś tam czas za pomocą zmiennej &quot;licznik&quot; czy to jest odpowiednie wykorzystanie odliczania czasu przerwania ? Czy powszechny sposób zwiększenia możliwości czasu w jakim sie wykona przerwanie, ponieważ na 8-bitowym Liczniku chyba się nie da z tego co się nagłowiłem osiągnąć czasu 1s ?<br />I jeszcze jedno już krótkie pytanie, czy jest możliwość wykonania wewnętrznego przerwania w zależności od stanu zmiennej (np: wystąpienie  przerwania gdy &quot;volatile zmienna = 1&quot;) ??<br />Przepraszam za ten esej ale będę wdzięczny za każdą pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Czas możesz uzyskać dowolny, np. przerwanie wykona się co 1 ms, czekamy aż licznik naliczy do 1000, więc dioda mignie co 1s - z dokładnością jaką oferuje źródło taktowania. Wewnętrzny oscylator nie grzeszy dokładnością, więc jak by chciał kolega na bazie tego zegarek stworzyć, to życzę powodzenia <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Przerwanie od zmiany zmiennej nie słyszałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Można w przerwaniu zmienić zmienną np. na 1 i w kodzie programu na to zareagować. Wtedy to nazywasz flagami <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 23 wrz 2014, o 17:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xardes]]></name></author>
<updated>2014-09-23T16:13:00+01:00</updated>
<published>2014-09-23T16:13:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96466#p96466</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96466#p96466"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=96466#p96466"><![CDATA[
Witam. Mam pytanie odnośnie tego fragmentu kodu czyli wykonania podprogramu przerwania :<br />[syntax=c]ISR(TIMER0_OVF_vect){<br />                static uint16_t licznik = 0 ;<br /> <br />                licznik++;<br />                if(licznik &gt; 1000){<br />                                MIGAJ_LED;<br />                                licznik = 0;<br />                }<br />}[/syntax]<br /><br />Gdyż według BB i instrukcji tam zawartych głównie na temat odszukania niezbędnych informacji w nocie katalogowej na temat uruchomienia przerwania, nie zauważyłem informacji na temat trybu CTC oraz odpowiednich nazw bitów dla atmegi8 - ale okej możliwe że mój angielski i moja niewiedza mnie zaskoczyła. <br /><br />Jednak bardziej chciałem się  upewnić czy dobrze rozumiem co się dzieje w tym podprogramie czyli :<br />Przerwanie z tego co wyczytałem działa tak że leci sobie licznik jeśli osiągnie jakąś tam wartość (w BB było ona ładnie dobierana i zapisana w &quot;OCR0&quot; , tutaj nie wiem jaka jest ? ) następuje wyzerowanie tego  licznika i wykonanie podprogramu , czyli tutaj stworzona jest jakaś zmienna która całkiem osobno liczy nam tutaj do wartości 1000 , i jeśli osiągnie wartość 1000 następuje zmiana stanu diody - zgadza się ? <br />I teraz tak się zastanawiam jeśli dalej sami sobie odliczamy jakiś tam czas za pomocą zmiennej &quot;licznik&quot; czy to jest odpowiednie wykorzystanie odliczania czasu przerwania ? Czy powszechny sposób zwiększenia możliwości czasu w jakim sie wykona przerwanie, ponieważ na 8-bitowym Liczniku chyba się nie da z tego co się nagłowiłem osiągnąć czasu 1s ?<br />I jeszcze jedno już krótkie pytanie, czy jest możliwość wykonania wewnętrznego przerwania w zależności od stanu zmiennej (np: wystąpienie  przerwania gdy &quot;volatile zmienna = 1&quot;) ??<br />Przepraszam za ten esej ale będę wdzięczny za każdą pomoc <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=5876">xardes</a> — 23 wrz 2014, o 16:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-07-01T19:47:05+01:00</updated>
<published>2014-07-01T19:47:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86394#p86394</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86394#p86394"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86394#p86394"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />No w moim odczuciu to zmienna licznik za każdym razem po wejściu w przerwanie jest inicjalizowana zerem. Dlatego nie ma szansy dojść do 31250.<br /></div><br />Zmienne statyczne w przerwaniach czy funkcjach są inicjowane daną wartością przy pierwszym wejściu programu w przerwanie czy funkcję. Tak więc to zero niczemu nie przeszkadzało. <br />Poprawiony program kolegi <strong>matiwegr</strong> z pierwszego postu<br />[syntax=c]//dołączenie potrzebnych plików nagłówkowych<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED (1&lt;&lt;PB0)<br />#define MIGAJ_LED PORTB ^= LED<br /><br />int main(void){<br /><br />DDRB |= LED;            //LED jako wyjście<br />PORTB |= (1&lt;&lt;PB0);<br /><br />TCCR0 |= (1&lt;&lt;CS00);             //preskaler = 256<br />TIMSK |= (1&lt;&lt;TOIE0);               //Overflow Interrupt Enable<br /><br /><br />sei();<br />while(1){<br /><br />}<br />}<br /><br />ISR(TIMER0_OVF_vect){<br />static uint16_t licznik = 0 ;<br /><br />licznik++;<br />if(licznik &gt; 1000){<br />MIGAJ_LED;<br />licznik = 0;<br />}<br />}[/syntax]<br /><br />A program koledze nie działał bo nie zostały odblokowane przerwania Overflow. <br />Zamiast [syntax=c]TIMSK |= (1&lt;&lt;TOIE0);[/syntax]<br />było[syntax=c]TIMSK |= (TOIE0);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 1 lip 2014, o 19:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matiwegr]]></name></author>
<updated>2014-07-01T18:47:53+01:00</updated>
<published>2014-07-01T18:47:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86376#p86376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86376#p86376"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86376#p86376"><![CDATA[
No ATmega8 jest trochę biedna <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> , ale np. już ATmega88, lub 328, to fajne zamienniki tego wysłużonego staruszka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3833">matiwegr</a> — 1 lip 2014, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-07-01T18:09:56+01:00</updated>
<published>2014-07-01T18:09:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86366#p86366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86366#p86366"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86366#p86366"><![CDATA[
Timer0 w AT8 nie ma trybu CTC, nie ma też PWM. Ma tylko normal. <br /><br />Co do zmiennej volatile. To w problematycznym przykładzie zmienna licznik była używana tylko w przerwaniu. Miganie odbywało się wprost z przerwania, więc nie musi być, moim zdaniem volatile.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 1 lip 2014, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2014-07-01T18:04:10+01:00</updated>
<published>2014-07-01T18:04:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86364#p86364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86364#p86364"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86364#p86364"><![CDATA[
Nie ma za co ,cieszę się że choć raz mogłem komuś pomóc.<br /><br />Tym bardziej ,że sam dopiero co się uczę i nieraz korzystam również z pomocy kolegów na forum.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><br /><br />P.S. Nie wiem czy wiesz ,ale bardzo fajnym trybem dla Timera jest tryb CTC ,który nie raz się przydaje nawet bardziej niż OVF.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 1 lip 2014, o 18:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matiwegr]]></name></author>
<updated>2014-07-01T17:28:39+01:00</updated>
<published>2014-07-01T17:28:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86361#p86361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86361#p86361"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86361#p86361"><![CDATA[
Dzięki bardzo! Dioda już miga. Sam zapomniałem o tym, że w procedurach obsługi przerwań używa się specyfikatora volatile, przy zmiennych.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3833">matiwegr</a> — 1 lip 2014, o 17:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2014-07-01T16:44:29+01:00</updated>
<published>2014-07-01T16:44:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86359#p86359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86359#p86359"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86359#p86359"><![CDATA[
To powinno pomóc:<br /><br />[syntax=c]/*<br /> <br />//Attiny2313 ,kwarc 8MHz ,miganie z TimeaO<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#define LED (1&lt;&lt;PB0)                           //dioda do portu PB0<br />#define toogle_LED PORTB ^=LED<br /><br />volatile uint8_t sekunda;                                  <br /><br />int main(void){<br /><br />DDRB = 0b00000001;                          //Port PB.0 jako wyjcie<br />PORTB = 0b11111110;                         //podciąganie reszty nieużywanych pinów<br /><br />PORTD = 0b1111111;                          //podciągnięcie całego portu D<br /><br /><br /><br /><br />sei();                                    //odblokowanie globalnych przerwań<br /><br />TCCR0B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);            //preskaler 1024<br />TIMSK |= (1&lt;&lt;TOIE0);                        //zezwolenie na przerwanie z przepełniena timera ,tryb normal<br /><br /><br /><br />   sekunda=0;                                       //początkowa wartoć sekundy<br /><br /><br /><br />while(1){<br />if(sekunda==30){<br />toogle_LED;                                    // jeli zmienna globalna ma wartoć 30 ,zmień stan LED<br />sekunda=0;<br />}<br /><br /><br />}<br />}<br /><br /><br /><br /><br /><br />ISR(TIMER0_OVF_vect){                                //przerwanie<br />sekunda++;                                       // zwiększanie wartoci sekunda o 1 co przerwanie<br />}[/syntax]<br /><br />ogólnie daj zmienną jako volatile i nie inicjuj jej w przerwaniu. <br /><br />Kod pod Attiny 2313 ,łatwo przerobić na Atmega 8    <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=3077">mac34</a> — 1 lip 2014, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-07-01T14:13:05+01:00</updated>
<published>2014-07-01T14:13:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86348#p86348</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86348#p86348"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86348#p86348"><![CDATA[
Może miga, tylko za krótko czekasz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak na oko to licznik osiągnie wartość 31250 po około 2,5 minuty. Czyli po takim czasie dioda się zapali lub zgaśnie po czym po kolejnych 2,5 minutach stan diody zmieni się na przeciwny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 1 lip 2014, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matiwegr]]></name></author>
<updated>2014-07-01T13:23:50+01:00</updated>
<published>2014-07-01T13:23:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86344#p86344</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86344#p86344"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86344#p86344"><![CDATA[
Tak, mój błąd z tą zmienną static, już poprawiłem. Jednak dioda nie miga. Bym zapomniał, taktowanie procesora = 8MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3833">matiwegr</a> — 1 lip 2014, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-07-01T13:09:11+01:00</updated>
<published>2014-07-01T13:09:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86343#p86343</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86343#p86343"/>
<title type="html"><![CDATA[Re: Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86343#p86343"><![CDATA[
No w moim odczuciu to zmienna licznik za każdym razem po wejściu w przerwanie jest inicjalizowana zerem. Dlatego nie ma szansy dojść do 31250. Usuń to zero, zmienna static inicjuje się sama.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 1 lip 2014, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matiwegr]]></name></author>
<updated>2014-07-01T12:35:20+01:00</updated>
<published>2014-07-01T12:35:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86338#p86338</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86338#p86338"/>
<title type="html"><![CDATA[Miganie diodą- TIMER0 ATmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7638&amp;p=86338#p86338"><![CDATA[
Witam!<br />Jestem nowy na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />. Napisałem prosty program do migania diodą co 1 sekundę za pomocą TIMERA0 w ATmedze8. <br />[syntax=c]//dołączenie potrzebnych plików nagłówkowych<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED (1&lt;&lt;PB0)<br />#define MIGAJ_LED PORTB ^= LED<br /><br />int main(void){<br /><br />DDRB |= LED;//LED jako wyjscie<br />TCCR0 |= (1&lt;&lt;CS02);//preskaler = 256<br />TIMSK |= (TOIE0);//Overflow Interrupt Enable<br /><br />sei();<br />while(1){<br /><br /><br />}<br />}<br /><br />ISR(TIMER0_OVF_vect){<br />static uint16_t licznik = 0;<br />licznik++;<br />if(licznik == 31250){<br />MIGAJ_LED;<br />licznik = 0;<br />}<br />}[/syntax]<br /><br />Dioda podłączona do pinu PB0, program się wgrywa jednak nie działa <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> .  Gdy migałem diodą za pomocą delay-ów, to dioda ochoczo migała. Jednak nie wiem dlaczego to nie działa za pomocą TIMERA0.<br />Z góry dziękuję za odpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3833">matiwegr</a> — 1 lip 2014, o 12:35</p><hr />
]]></content>
</entry>
</feed>