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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-02-19T17:25:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=21980&amp;mode</id>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2019-02-19T17:25:11+01:00</updated>
<published>2019-02-19T17:25:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216779#p216779</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216779#p216779"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216779#p216779"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />I po tym wywołaniu jak dojdzie do OCR1B muszę ręcznie kasować stan licznika tak? Bo tak próbowałem że dałem OCR1A na 60000 a OCR1B na 15000, był TIMER1_COMPB_vect ale liczyło cały czas do OCR1A<br /></div><br />To do jakiej wartości będzie zliczał licznik ściśle zależy od wybranego trybu pracy.<br /><a href="https://obrazkiforum.atnel.pl/6265/a954c2d3c742d67ce977d1de0eee040f.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/6265/a954c2d3c742d67ce977d1de0eee040f.png" alt="Obrazek" /></a><br />Tryby CTC dla tego licznika są dwa, w jednym licznik zlicza do wartości &quot;OCR1A&quot; w drugim do wartości &quot;ICR1&quot; więc tylko w tych dwóch przypadkach licznik jest resetowany w momencie porównania.<br />Porównanie od rejestru OCR1B NIE resetuje licznika. Może jedynie wywołać osobne przerwanie od porównanie OCR1B.<br />Generalnie licznik ten ma dwa porównania głównie z zamysłem o trybach PWM - w oparciu o ten licznik dzięki dwum porównaniom można uruchomić 2 kanały PWM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 19 lut 2019, o 17:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2019-02-19T16:11:17+01:00</updated>
<published>2019-02-19T16:11:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216775#p216775</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216775#p216775"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216775#p216775"><![CDATA[
W rejestrze TIFR jest flaga OCF1B od porównania OCR1B - nie wiem, jak ją odczytać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 19 lut 2019, o 16:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2019-02-19T15:01:27+01:00</updated>
<published>2019-02-19T15:01:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216770#p216770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216770#p216770"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216770#p216770"><![CDATA[
No tak, będzie zliczało do OCR1A.<br />Jeśli chcesz, żeby licznik zerował się sam, użyj przerwania TIMER1_COMPA_vect<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 19 lut 2019, o 15:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczu18]]></name></author>
<updated>2019-02-19T14:44:46+01:00</updated>
<published>2019-02-19T14:44:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216769#p216769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216769#p216769"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216769#p216769"><![CDATA[
I po tym wywołaniu jak dojdzie do OCR1B muszę ręcznie kasować stan licznika tak? Bo tak próbowałem że dałem OCR1A na 60000 a OCR1B na 15000, był TIMER1_COMPB_vect ale liczyło cały czas do OCR1A<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20567">miszczu18</a> — 19 lut 2019, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2019-02-19T14:32:34+01:00</updated>
<published>2019-02-19T14:32:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216768#p216768</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216768#p216768"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216768#p216768"><![CDATA[
Kanały oznaczają, że możesz sterować dwoma pinami - opisanymi jako OC1A, OC1B. To, o czym pisałem wcześniej:<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />możesz ustawić bitu COM1A0 (w rejestrze TCCR1A), żeby stan pinu sam się zmieniał<br /></div>dotyczy właśnie pinu OC1A (PB1?).<br />Licznik zlicza do wartości OCR1A. Jeżeli OCR1B będzie mniejsze niż OCR1A, to po osiągnięciu tej wartości wywołana zostanie funkcja obsługi przerwania TIMER1_COMPB_vect, którą możesz wykorzystać.<br /><br />Nazwy rejestrów i funkcji piszę bez dokumentacji, możliwe, że zrobiłem jakąś literówkę albo coś pomieszałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 19 lut 2019, o 14:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczu18]]></name></author>
<updated>2019-02-19T14:13:02+01:00</updated>
<published>2019-02-19T14:13:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216766#p216766</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216766#p216766"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216766#p216766"><![CDATA[
Czyli tylko OCR1A reaguje na przerwanie i zeruje licznik?<br />Bo próbowałem obsłużyć to tak że OCR1B&lt;OCR1A ale tak jakby działało tylko na OCR1A a drugą wartość ignorowało. I nie wiem jak skorzystać z tej drugiej wartości. I co to są te kanały? Tak jakby licznik liczy ale mogę obsłużyć dwa różne przerwania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20567">miszczu18</a> — 19 lut 2019, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2019-02-19T13:52:31+01:00</updated>
<published>2019-02-19T13:52:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216765#p216765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216765#p216765"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216765#p216765"><![CDATA[
OCR1A bierze decydujący udział w pracy licznika i wynik porówna może wysłać do pinu OC1A jeśli wyjście jest ustawione.<br />Porównanie TCNT1 z OCR1B obsługuje tylko drugi kanał, czyli OC1B.<br />Należy pamiętać, by wartość OCR1A była większa od wartości OCR1B.<br />Oto schemat blokowy Timera1:<br /><a href="https://obrazkiforum.atnel.pl/9272/c480bbcd87bf282a93d1fd1d3eaac6cf.PNG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9272/c480bbcd87bf282a93d1fd1d3eaac6cf.PNG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 19 lut 2019, o 13:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczu18]]></name></author>
<updated>2019-02-19T13:07:26+01:00</updated>
<published>2019-02-19T13:07:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216764#p216764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216764#p216764"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216764#p216764"><![CDATA[
Okej ale w takim razie po co jest OCR1B skoro liczy do OCR1A bo nie bardzo czaje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20567">miszczu18</a> — 19 lut 2019, o 13:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2019-02-19T12:46:47+01:00</updated>
<published>2019-02-19T12:46:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216763#p216763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216763#p216763"/>
<title type="html"><![CDATA[Re: ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216763#p216763"><![CDATA[
Ale to nie do końca tak działa. TCCR1 jest podzielony na dwa rejestry, ponieważ jest zbyt dużo nastaw jak na jeden 8-bitowy rejestr.<br />TCCR1A nie odnosi się tylko do kanału A!<br />Zauważ: w rejestrze TCCR1A bity 7 i 6 dotyczą kanału A, bity 5 i 4 dotyczą kanału B.<br />Bit 3 dotyczy kanału A, bit 2 - kanału B.<br />Bity 1 i 0 razem z bitami 4 i 3 z rejestru TCCR1B! służą do wyboru trybu pracy.<br /><br />W Twoim przypadku, jeśli chcesz ustawić tryb 4 (CTC), ustawiasz bit WGM12, który jest w rejestrze TCCR1B.<br /><br /><div class="quotetitle">miszczu18 napisał(a):</div><div class="quotecontent"><br />dwa tryby CTC ( też nie wiem zbytnio czemu)<br /></div>Różnią się maksymalną wartością - poczytaj dobrze.<br /><br />Tak mi przyszło do głowy, a nie możesz ustawić bitu COM1A0 (w rejestrze TCCR1A), żeby stan pinu sam się zmieniał? (To tylko taka luźna myśl, poprawcie mnie, jeśli się mylę).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 19 lut 2019, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczu18]]></name></author>
<updated>2019-02-19T12:07:30+01:00</updated>
<published>2019-02-19T12:07:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216762#p216762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216762#p216762"/>
<title type="html"><![CDATA[ATmega8- przerwania w trybie CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21980&amp;p=216762#p216762"><![CDATA[
Cześć. Chciałem skonfigurować sobie przerwanie (na razie zmiana stanu diody) na mojej ATmedze w oparciu o niebieską książkę tylko, że pojawił się problem. W nocie katalogowej znalazłem że mam tylko jeden timer z trybem CTC, który ma dwa kanały (nie bardzo wiem co to znaczy). No to patrzę dalej, chcę ustawić tryb. Na stronie 97 jest tabelka tylko, że tam są dwa tryby CTC ( też nie wiem zbytnio czemu) no ale wybrałem ten pierwszy. Chcę ustawić preskaler. W TCCR1A nie ma takiej możliwości ale jest w TCCR1B. No to skoro tu użyłem kanału B no to wszędzie go użyję. Wyszło na to, że wszędzie mogę mieć te rejestry z dopiskiem B ale wartość którą ma porównywać musi być w w OCR1A. Dlaczego nie w OCR1B?<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />int main(void){<br />DDRC|=(1&lt;&lt;PC3);<br />PORTC|=(1&lt;&lt;PC3);<br /><br />TCCR1B|=(1&lt;&lt;WGM12); //USTAWIAM TRYB CTC<br />TCCR1B|=(1&lt;&lt;CS12);//PRESKALER NA 256<br />OCR1A=15624;//ZEBY WYSZLO 0.5Hz<br />TIMSK=(1&lt;&lt;OCIE1A);//ODBLOKOWANIE PRZERWANIA<br /><br />sei();<br /><br />while(1){}<br />}<br /><br />ISR(TIMER1_COMPA_vect){<br />PORTC^=(1&lt;&lt;PC3);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20567">miszczu18</a> — 19 lut 2019, o 12:07</p><hr />
]]></content>
</entry>
</feed>