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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-03-18T17:34:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=17911&amp;mode</id>
<entry>
<author><name><![CDATA[Rafal_3695]]></name></author>
<updated>2017-03-18T17:34:04+01:00</updated>
<published>2017-03-18T17:34:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185082#p185082</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185082#p185082"/>
<title type="html"><![CDATA[Re: Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185082#p185082"><![CDATA[
Dzięki wielkie, pomogło. Ciągle mam jednak problem z tym timerem. Ustawiłem go nawet jak w książce na 200Hz, a moja zmienna ani drgnie w instrukcji przerwania. Podmieniałem nawet timery i dalej to samo. Z noty katalogowej korzystam zgodnej. Czy ma ktoś jakiś pomysł? Czy podczas przejrzenia mojego kodu Waszym, doświadczonym okiem coś ewidentnie kuje w oczy?<br /><br />EDIT:<br /><br /><strong><span style="text-decoration: underline">Problem rozwiązany! </span></strong><br /><br />Otóż w Atmedze 168/328, aby ustawić preskaler trzeba użyć takiej komendy:<br /><br /> <span style="color: #BF0000">TCCR0A</span> |= (1&lt;&lt;WGM01); //ustawienie timera w tryb CTC<br /><span style="color: #4040FF">TCCR0B</span> |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); //preskaler 1024<br /><br />Jeśli przy wyborze tego zegara ustawiam bit WGM01 (tryb CTC) w rejestrze TCCR0A, to ustawienie bitów preskalera musi się odbyć w rejestrze B.<br />Takie info znalazłem na zagranicznym forum i zresztą zgadza się to z notą, której jak widać super szczegółowo nie przejrzałem... mój błąd. <br /><br />Dziękuję za pomoc raz jeszcze!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16728">Rafal_3695</a> — 18 mar 2017, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zorro]]></name></author>
<updated>2017-03-18T17:14:33+01:00</updated>
<published>2017-03-18T17:14:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185081#p185081</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185081#p185081"/>
<title type="html"><![CDATA[Re: Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185081#p185081"><![CDATA[
<div class="quotetitle">Rafal_3695 napisał(a):</div><div class="quotecontent"><br />Tylko mam problem, ponieważ ustawiając w eclipsie taktowanie 8MHz mam błąd przy wgrywaniu programu na mikrokontroler. Jeśli za to dodam w zakładce OTHER -B375 (jak przy taktowaniu 1MHz) to problem znika, ale procesor zachowuje się 8 razy wolniej. Nie działa mi taktowanie 8MHz tak, jak pokazał to Mirekk na filmie. Czy ktoś się z tym spotkał? Fusy uproszczone wgrałem jak w instrukcji...<br /></div><br /><br />W zakładce  masz jeszcze bit CKDIV8 usuń tego ptaszka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14587">zorro</a> — 18 mar 2017, o 17:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-03-18T17:09:57+01:00</updated>
<published>2017-03-18T17:09:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185080#p185080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185080#p185080"/>
<title type="html"><![CDATA[Re: Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185080#p185080"><![CDATA[
Odpal MkAvrCalcculator i kilkniuj w przycisk &quot;Sprawdź podłączony AVR&quot;, a następnie przejdź do zakładki fusy uproszczone i sprawdź jaki ustawiony jest zegar. Bo mi to wygląda na 1Mhz a nie 8Mhz.<br />Nad opcjami wewnętrznego oscylatora masz opcję CKDIV8 - wyłącz ją! (jest to opcja która dodatkowo dzieli częstotliwość wewnętrznego oscylatora przez 8 co przy ustawieniu 8Mhz daje właśnie 1Mhz)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 mar 2017, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal_3695]]></name></author>
<updated>2017-03-18T16:55:07+01:00</updated>
<published>2017-03-18T16:55:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185077#p185077</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185077#p185077"/>
<title type="html"><![CDATA[Re: Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185077#p185077"><![CDATA[
Tylko mam problem, ponieważ ustawiając w eclipsie taktowanie 8MHz mam błąd przy wgrywaniu programu na mikrokontroler. Jeśli za to dodam w zakładce OTHER -B375 (jak przy taktowaniu 1MHz) to problem znika, ale procesor zachowuje się 8 razy wolniej. Nie działa mi taktowanie 8MHz tak, jak pokazał to Mirekk na filmie. Czy ktoś się z tym spotkał? Fusy uproszczone wgrałem jak w instrukcji...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16728">Rafal_3695</a> — 18 mar 2017, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-03-18T16:50:36+01:00</updated>
<published>2017-03-18T16:50:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185076#p185076</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185076#p185076"/>
<title type="html"><![CDATA[Re: Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185076#p185076"><![CDATA[
<div class="quotetitle">Rafal_3695 napisał(a):</div><div class="quotecontent"><br />może to ma wpływ na odliczanie czasu przez timer?)<br /></div><br />No nie może a na pewno ma wpływ na odmierzany czas, Przecież sam preskaler timera jest napędzany tym samym zegarem co sam procek...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 mar 2017, o 16:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal_3695]]></name></author>
<updated>2017-03-18T16:30:53+01:00</updated>
<published>2017-03-18T16:30:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185072#p185072</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185072#p185072"/>
<title type="html"><![CDATA[Problem z obsługą przerwania timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17911&amp;p=185072#p185072"><![CDATA[
Cześć,<br /><br />Mam mały problem z obsługa przerwania wywołanego przez Timer. Napisałem wszystko zgodnie z instrukcją z podręcznika, a samo przerwanie jakby nie wykonywało się. Dla pewności dodałem tam inkrementację zmiennej i IF'a w pętli głównej.<br /><br />Atmega 168, taktowanie w eclipse 1MHz (w MkAvrCalculator mam ustawione fuse bity uproszczone na 8MHz i nie mogę tego zmienić, może to ma wpływ na odliczanie czasu przez timer?)<br /> Oto kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />volatile unsigned int zmienna = 0;<br /><br />int main(void)<br />{<br /><br />TCCR0A |= (1&lt;&lt;WGM01); //ustawienie timera w tryb CTC<br />TCCR0A |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); //preskaler 1024<br />OCR0A = 98;<br />TIMSK0 |= (1&lt;&lt;OCIE0A); //odblokowanie przerwania od timera CTC<br /><br />DDRB |= (1&lt;&lt;PB0); //dioda led sterowana minusem<br />PORTB |= (1&lt;&lt;PB0);//dioda led sterowana minusem<br /><br /><br /><br />sei(); //globalne zezwolenie na przerwania<br />while(1)<br />{<br /><br />if(zmienna&gt;2)<br />{<br />PORTB &amp;= ~(1&lt;&lt;PB0); //załączenie diody<br />}<br />}<br />}<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br />zmienna++;<br />}[/syntax]<br />Czy ma ktoś pomysł, co tu może być źle? Juz próbowałem zamieniać wektory przerwań i zero efektu. Z moich wyliczeń przerwanie powinno odbywać się jakieś 10 razy na sekundę...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16728">Rafal_3695</a> — 18 mar 2017, o 16:30</p><hr />
]]></content>
</entry>
</feed>