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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-20T19:01:57+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=20428&amp;mode</id>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-20T19:01:57+01:00</updated>
<published>2018-03-20T19:01:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205793#p205793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205793#p205793"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205793#p205793"><![CDATA[
Faktycznie uprzednie wyzerowanie rejestrów TCCR2A i TCCR2B pomogło!<br />Dzięki <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=19196">maru_9</a> — 20 mar 2018, o 19:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-03-20T08:32:11+01:00</updated>
<published>2018-03-20T08:32:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205777#p205777</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205777#p205777"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205777#p205777"><![CDATA[
A wiesz, w którym momencie arduino konfiguruje timer? Może być tak, że to arduino zmienia Twoją konfigurację.<br />Nie mam teraz możliwości, żeby to sprawdzić. Dawno temu sprawdzałem, jak jest zapisany plik arduino.h, tam szukaj konfiguracji timerów.<br />Jeszcze jedno, z tego, co widzę, rejestry ustawiasz za pomocą &quot;|=&quot;. Więc bity ustawione przez arduino dalej zostają ustawione. Spróbuj wyzerować dodatkowo bity w rejestrach, które powinny mieć wartość 0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 20 mar 2018, o 08:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-20T08:12:22+01:00</updated>
<published>2018-03-20T08:12:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205775#p205775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205775#p205775"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205775#p205775"><![CDATA[
No tak, timer2 jest wykorzystywany do funkcji tone(), ale spodziewałbym się, ze zmiany w konfiguracji timera spowodują złe działanie danej funkcji arduino, a nie brak działania timera <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=19196">maru_9</a> — 20 mar 2018, o 08:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-03-19T08:31:09+01:00</updated>
<published>2018-03-19T08:31:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205728#p205728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205728#p205728"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205728#p205728"><![CDATA[
Z tego, co wiem, arduino wykorzystuje niektóre timery, np. do funkcji delay(), millis(). Sprawdź, które masz dostępne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 19 mar 2018, o 08:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T23:22:55+01:00</updated>
<published>2018-03-18T23:22:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205725#p205725</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205725#p205725"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205725#p205725"><![CDATA[
Tak dla innych wartości OCR też nie świeci.<br /><br />Drugi kod został napisany właśnie dla środowiska arduino, ale może lepiej będzie pisać w klasycznym C<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 23:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T23:01:54+01:00</updated>
<published>2018-03-18T23:01:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205723#p205723</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205723#p205723"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205723#p205723"><![CDATA[
Potrzebuje od 2MHz do 4MHz, na razie chciałem zobaczyć jak wg uzyskać zadana czestotliwość.<br />No ja też specjalnie różnicy w kodzie nie widzę, oprócz jednej:<br />W drugim przypadku dioda nie świeci <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=19196">maru_9</a> — 18 mar 2018, o 23:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T22:18:32+01:00</updated>
<published>2018-03-18T22:18:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205721#p205721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205721#p205721"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205721#p205721"><![CDATA[
Dzięki, przy okazji odkryłem ciekawostkę:<br /><br />Kiedy zapisze kod tak: <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br /><br />void timer_init();<br /><br />int main(void)<br />{<br />    timer_init();<br />    while(1);<br />}<br /><br />void timer_init()<br />{<br />    TCCR2A|=_BV(COM2A0);// toggle<br />    TCCR2A|=_BV(WGM21);//ustaiwnie wgm21 -&gt; WGM&#91;2:0&#93; = 010 co oznacza tryb CTC<br />    OCR2A=255;//ustawienie wartości do ktorej licznik ma zliczac<br />    TCNT2 = 0;//wyzerowanie rejestru licznika<br />    TCCR2B|=(0x07 | _BV(FOC2A) );  //Force Output Compare + Prescaler 1024<br />    DDRB|=_BV(PB3);//wyjscie OC2A - PB3 - na Arduino UNO D11<br />}[/syntax]<br />to śmiga jak ta lala.<br /><br />Ale kiedy zapisze go tak:<br />[syntax=c]void setup() {<br />  timer_init();<br />}<br /><br />void loop() {<br />  <br />}<br /><br />void timer_init(){<br />    TCCR2A|=_BV(COM2A0);// toggle<br />    TCCR2A|=_BV(WGM21);//ustaiwnie wgm21 -&gt; WGM&#91;2:0&#93; = 010 co oznacza tryb CTC<br />    OCR2A=255;//ustawienie wartości do ktorej licznik ma zliczac<br />    TCNT2 = 0;//wyzerowanie rejestru licznika<br />    TCCR2B|=(0x07 | _BV(FOC2A) );  //Force Output Compare + Prescaler 1024<br />    DDRB|=_BV(PB3);//wyjscie OC2A - PB3 - na Arduino UNO D11<br />}[/syntax]<br /><br />to jest kaszana i dioda nie świeci.<br /><br />Dziękuję bardzo za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Jesteście super!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-03-18T21:37:07+01:00</updated>
<published>2018-03-18T21:37:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205718#p205718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205718#p205718"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205718#p205718"><![CDATA[
Twój kod z pierwszego postu wkleiłem żywcem do eclipse i wgrałem do arduino nano które posiadam (taktowanie 8MHz) i kod bez żadnych zmian działa, co prawda dioda praktycznie świeci ale to normalne przy takiej częstotliwości. Nie mam pojęcia dla czego u Ciebie dioda wcale się nie zaświeca. Mogę jeszcze wygrzebać UNO (gdzieś powinno się walać po szufladach jakieś) i przetestować na UNO<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 24 minutach ]</span></strong><br /><br />Przetestowane na UN0 (taktowanie kwarcem 16MHz, dioda świecąca podłączona w szereg z rezystorem 220Ohm między pin D11 a masę)<br />Na kodzie wklejonym w pierwszym poście dioda świeci.<br />Na kodzie nieznacznie zmodyfikowanym (preskaler 1024, OCR2A=254) dioda nieznacznie mruga<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />void timer_init(void);<br /><br />int main(void){<br />timer_init();<br />while(1){<br /><br />}<br />}<br />void timer_init(){<br />    TCCR2A|=_BV(COM2A0);// toggle<br />    TCCR2A|=_BV(WGM21);//ustaiwnie wgm21 -&gt; WGM&#91;2:0&#93; = 010 co oznacza tryb CTC<br />    OCR2A=254;//ustawienie wartości do ktorej licznik ma zliczac<br />    TCNT2 = 0;//wyzerowanie rejestru licznika<br />    TCCR2B|=(0x07 | _BV(FOC2A) );  //Force Output Compare + Prescaler 256<br />    DDRB|=_BV(PB3);//wyjscie OC2A - PB3 - na Arduino UNO D11<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 mar 2018, o 21:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T21:20:19+01:00</updated>
<published>2018-03-18T21:20:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205714#p205714</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205714#p205714"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205714#p205714"><![CDATA[
<div class="quotetitle">xentis napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">maru_9 napisał(a):</div><div class="quotecontent">Faktycznie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div>Uwierz mi że Twój kod z pierwszego postu również działa. Znając życie masz do pinu D11 swojego UNO podłączoną diodę więc przy taktowaniu 8MHz podziale przez 256 i zliczaniu do 10 to mrugania tej diody nie zauważysz bo mruga ona wtedy z częstotliwością około 3kHz. Nie wiem czy zauważyłeś że kolega zubik włączył preskaler 1024 - i to jest kluczowe ustawienie, dodatkowo włączył tryb PWM Phase Correct który to tryb powoduje w tym przypadku dodatkowy podział częstotliwości przez 2 (8000000/1024/250/2 =~15Hz co już oko na diodzie wychwyci).<br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />Kluczową rolę gra tutaj ustawienie bitu FOC2A w rejestrze TCCR2B<br /></div> tu to trochę herezję kolega głosi biorąc pod uwagę zapis w nocie:<br /><div class="quotetitle">Atmega328P_Datasheet napisał(a):</div><div class="quotecontent"><br />Bit 7 – FOC2A: Force Output Compare A<br />The FOC2A bit is only active when the WGM bits specify a non-PWM mode.<br /></div> Czyli bit ten działa <span style="color: #FF00FF">WYŁĄCZNIE</span> w trybie non_PWM!</div><br /><br />Wiesz było wręcz przeciwnie!!!<br />Dioda nie świeciła wcale ;(<br />Ale skoro mówisz że kod był dobry to może warto jeszcze raz się nad tym pochylić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-03-18T15:27:01+01:00</updated>
<published>2018-03-18T15:27:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205686#p205686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205686#p205686"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205686#p205686"><![CDATA[
<div class="quotetitle">maru_9 napisał(a):</div><div class="quotecontent"><br />Faktycznie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div>Uwierz mi że Twój kod z pierwszego postu również działa. Znając życie masz do pinu D11 swojego UNO podłączoną diodę więc przy taktowaniu 8MHz podziale przez 256 i zliczaniu do 10 to mrugania tej diody nie zauważysz bo mruga ona wtedy z częstotliwością około 3kHz. Nie wiem czy zauważyłeś że kolega zubik włączył preskaler 1024 - i to jest kluczowe ustawienie, dodatkowo włączył tryb PWM Phase Correct który to tryb powoduje w tym przypadku dodatkowy podział częstotliwości przez 2 (8000000/1024/250/2 =~15Hz co już oko na diodzie wychwyci).<br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />Kluczową rolę gra tutaj ustawienie bitu FOC2A w rejestrze TCCR2B<br /></div> tu to trochę herezję kolega głosi biorąc pod uwagę zapis w nocie:<br /><div class="quotetitle">Atmega328P_Datasheet napisał(a):</div><div class="quotecontent"><br />Bit 7 – FOC2A: Force Output Compare A<br />The FOC2A bit is only active when the WGM bits specify a non-PWM mode.<br /></div> Czyli bit ten działa <span style="color: #FF00FF">WYŁĄCZNIE</span> w trybie non_PWM!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 18 mar 2018, o 15:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T12:01:19+01:00</updated>
<published>2018-03-18T12:01:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205676#p205676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205676#p205676"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205676#p205676"><![CDATA[
Faktycznie działa <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=19196">maru_9</a> — 18 mar 2018, o 12:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T11:29:12+01:00</updated>
<published>2018-03-18T11:29:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205672#p205672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205672#p205672"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205672#p205672"><![CDATA[
Chciałbym uzyskać po prostu kontrolowaną częstotliwość na wyjściu.<br />Wydaje mi się że tryb CTC idealnie się do tego nadaje: licznik liczy do jakiejś wartości i zmienia stan na wyjściu(COM = 01)<br />WGM[2:0] = 101 daje mi przecież tryb PWN, którego w sumie nie chcę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 11:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T10:59:32+01:00</updated>
<published>2018-03-18T10:59:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205669#p205669</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205669#p205669"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205669#p205669"><![CDATA[
Ale przecież WGM2[2:0] = 100 to tryb zarezerwowany<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 10:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T10:30:30+01:00</updated>
<published>2018-03-18T10:30:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205667#p205667</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205667#p205667"/>
<title type="html"><![CDATA[Re: ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205667#p205667"><![CDATA[
Kurcze może nie umiem czytać, ale jak dla mnie np. na stronie 203 jest wyraźnie napisane Name : TCCR2A<br /><br />Czy chodzi o coś innego?<br /><br />Dodatkowo zbadałem, że niezależnie od tego co ustawię w rejestrze OCR2A licznik i tak liczy do pełnej wartości (255)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 10:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maru_9]]></name></author>
<updated>2018-03-18T21:18:20+01:00</updated>
<published>2018-03-18T09:57:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205664#p205664</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205664#p205664"/>
<title type="html"><![CDATA[ATmega328 timer2 CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20428&amp;p=205664#p205664"><![CDATA[
Witam,<br /><br />Chciałbym uruchonic timer2 w trybie CTC, ale niestety nic się nie dzieje. Dodam tylko, że nie chce wykorzystywać przerwania, tylko chciałbym żeby na wyjściu OC2A stan się samoistnie zmieniał, bez zaangażowania procesora<br /><br />[syntax=c]void timer_init()<br />{<br />    TCCR2A|=_BV(COM2A0);// toggle<br />    TCCR2A|=_BV(WGM21);//ustaiwnie wgm21 -&gt; WGM&#91;2:0&#93; = 010 co oznacza tryb CTC<br />    OCR2A=10;//ustawienie wartości do ktorej licznik ma zliczac<br />    TCNT2 = 0;//wyzerowanie rejestru licznika<br />    TCCR2B|=(0x03 | _BV(FOC2A) );  //Force Output Compare + Prescaler 256<br />    DDRB|=_BV(PB3);//wyjscie OC2A - PB3 - na Arduino UNO D11 <br />}[/syntax]<br /><br /><br />Dla porównania podobny kod na ATmega32 który działa: <br />[syntax=c]void timer_init()<br />{<br />TCCR1A|=_BV(COM1A0);// toggle<br />OCR1A=10000;<br />TCNT1 = 0;//wyzerowanie rejestru licznika<br />TCCR1B|=(_BV(CS12) | _BV(WGM12) );  //Preskaler 256 i WGM12 -&gt; tryb CTC<br />TCCR1A|=_BV(FOC1A);<br />DDRD|=_BV(PD5);//wyjscie OC1A<br />}[/syntax]<br /><br />Pozdrawiam,<br />Marek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19196">maru_9</a> — 18 mar 2018, o 09:57</p><hr />
]]></content>
</entry>
</feed>