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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-09-13T21:52:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4162&amp;mode</id>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-09-13T21:52:51+01:00</updated>
<published>2013-09-13T21:52:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49498#p49498</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49498#p49498"/>
<title type="html"><![CDATA[Re: 16bit timer CompA i CompB]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49498#p49498"><![CDATA[
Dzięki. Teraz jestem w domu. Dla DS'a Mega8A parzyłem w tabelkę 17-5 jak sroka w kość i niedopatrzyłem do ilu liczy timer. Czyli przykładowo Mode 5 to PWM liczący do 255 tak jak Timer2. Tylko po drodze może sterować dwoma wyjściami OC1 i OC1B. Czy przy takim trybie można obsłużyć oba przerwania CompareMatchX?  Pytanie teoretyczne, bo na razie nie widzę zastosowania w przeciwieństwie do Overflow które może faktycznie robić dodatkowo za softowy timer.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 13 wrz 2013, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-09-13T15:09:26+01:00</updated>
<published>2013-09-13T15:09:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49450#p49450</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49450#p49450"/>
<title type="html"><![CDATA[Re: 16bit timer CompA i CompB]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49450#p49450"><![CDATA[
<div class="quotetitle">perlon napisał(a):</div><div class="quotecontent"><br />Ja się podepnę troszkę może temat obok. Który tryb timera 1 wybrać, żeby sterować dwoma wyjściami PWM OC1A/OC1B  niezależnie. Czyli że raz rejestr A jest większy a raz mniejszy od B bez zerowania licznika TCNT1. Chodzi w szczególności o niezależne sterowanie dwoma silnikami DC PWM'em.<br /></div><br /><br />No właśnie któryś z trybów PWM <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> obojętnie czy FastPWM czy Phase Correct PWM. To nie są tryby CTC więc nie ma tego o czym pisałem wyżej. Gwyn też pisał.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 wrz 2013, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2013-09-13T14:25:22+01:00</updated>
<published>2013-09-13T14:25:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49448#p49448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49448#p49448"/>
<title type="html"><![CDATA[Re: 16bit timer CompA i CompB]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49448#p49448"><![CDATA[
Ja się podepnę troszkę może temat obok. Który tryb timera 1 wybrać, żeby sterować dwoma wyjściami PWM OC1A/OC1B  niezależnie. Czyli że raz rejestr A jest większy a raz mniejszy od B bez zerowania licznika TCNT1. Chodzi w szczególności o niezależne sterowanie dwoma silnikami DC PWM'em.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 13 wrz 2013, o 14:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-09-13T10:05:03+01:00</updated>
<published>2013-09-13T10:05:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49419#p49419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49419#p49419"/>
<title type="html"><![CDATA[Re: 16bit timer CompA i CompB]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49419#p49419"><![CDATA[
oczywiście że tak .... po co inaczej miałyby być te dwa przerwania <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale UWAGA! jeśli OCR1B będzie miało większą wartość niż OCR1A to przerwanie TIMER1_COMPB_vect nigdy się nie wykona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 wrz 2013, o 10:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2013-09-13T09:30:25+01:00</updated>
<published>2013-09-13T09:30:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49415#p49415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49415#p49415"/>
<title type="html"><![CDATA[16bit timer CompA i CompB]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4162&amp;p=49415#p49415"><![CDATA[
Witam,<br />Mam problem ze zrozumieniem timera 16bitowego. Nie wiem dlaczego ale wydaje mi się (Na pewno błędnie) że w tym timerze są niejako 2 przerwania...<br />Jak wiadomo, możemy skorzystać z przerwania <strong>TIMER1_COMPA_vect</strong> i <strong>TIMER1_COMPB_vect</strong><br /><br />Żeby skorzystać z wektora przerwania COMPA możemy napisać taki kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />int main (void)<br />{<br />   DDRB |= (1 &lt;&lt; 0); // Set LED as output<br />   TCCR1B |= (1 &lt;&lt; WGM12); // Configure timer 1 for CTC mode<br />   TIMSK |= (1 &lt;&lt; OCIE1A); // Enable CTC interrupt<br />   sei(); //  Enable global interrupts<br />   OCR1A   = 15624; // Set CTC compare value to 1Hz at 1MHz AVR clock, with a prescaler of 64<br />   TCCR1B |= ((1 &lt;&lt; CS10) | (1 &lt;&lt; CS11)); // Start timer at Fcpu/64<br />   for (;;)<br />   {<br />   }<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />   PORTB ^= (1 &lt;&lt; 0); // Toggle the LED<br />}[/syntax]<br /><br />A co jeśli zrobimy coś takiego i do rejestru TIMSK wpiszemy<br /><strong> TIMSK |= (1 &lt;&lt; OCIE1A) | (1&lt;&lt;OCIE1B); // Enable CTC interrupt</strong><br />Wtedy domyślam się, że zostanie odblokowany wektor przerwania <br /><strong>ISR(TIMER1_COMPB_vect)</strong><br /><br />No ale jeśli tak jest to co?<br />Możemy wpisać <strong> OCR1B   = 666;</strong> // Set CTC compare <br /><br />I mamy tak jakby wykonywane dwa przerwania używając tylko 1 timera??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 13 wrz 2013, o 09:30</p><hr />
]]></content>
</entry>
</feed>