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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-02-13T21:01:57+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17604&amp;mode</id>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2017-02-13T21:01:57+01:00</updated>
<published>2017-02-13T21:01:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182587#p182587</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182587#p182587"/>
<title type="html"><![CDATA[Re: Atmega16 - Timer1 FastPwm tryb 14]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182587#p182587"><![CDATA[
Super! Dzieki wielkie <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=738">LogTeam</a> — 13 lut 2017, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2017-02-12T03:44:45+01:00</updated>
<published>2017-02-12T03:44:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182451#p182451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182451#p182451"/>
<title type="html"><![CDATA[Re: Atmega16 - Timer1 FastPwm tryb 14]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182451#p182451"><![CDATA[
<div class="quotetitle">LogTeam napisał(a):</div><div class="quotecontent"><br />Widzicie gdzie jest błąd?<br /></div><br />Przy takim ustawieniu będziesz miał PWM'a tylko na OC1A (PD5). PD4 będzie się zachowywał jak normalny pin ustawiony jako wyjście.<br /><br /><div class="quotetitle">kicajek napisał(a):</div><div class="quotecontent"><br />Jakby co to nie wiem dlaczego, ale u mnie tylko tak działa<br /></div><br />Tak też zadziała:  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />[syntax=c]TCCR1A = (1&lt;&lt;WGM11) | (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1B1);//Clear OC1A/OC1B on compare match, set at BOTTOM (normal mode)<br />//TCCR1A = (1&lt;&lt;WGM11) | (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1A0) | (1&lt;&lt;COM1B1) | (1&lt;&lt;COM1B0);//Set OC1A/OC1B on compare match, clear at BOTTOM (inverting mode)[/syntax]<br /><br />Poniżej kodzik z komentarzami i wzorami:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define MAX 15625<br />//0xFF - 8bits, 0x1FF - 9bits, 0x3FF-10bits, 0x7FF-11bits, 0xFFF-12bits, ... , 0xFFFF-16bits<br /><br />int main(void) {<br /><br />DDRD |= (1&lt;&lt;PD4) | (1&lt;&lt;PD5);//PD5-OC1A, PD4-OC1B must be set as output<br /><br />// *** Mode 14, TOP-ICR1, OCR1x-BOTTOM, TOV1 Flag Set on TOP ****<br />TCCR1A |= (1&lt;&lt;WGM11);<br />TCCR1B |= (1&lt;&lt;WGM13) | (1&lt;&lt;WGM12);<br /><br />// *** Compare Output Mode, Fast PWM ***<br />TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1B1);//Clear OC1A/OC1B on compare match, set at BOTTOM (normal mode)<br />//TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1B1) | (1&lt;&lt;COM1A0) | (1&lt;&lt;COM1B0);//Set OC1A/OC1B on compare match, clear at BOTTOM (inverting mode)<br /><br />// *** Clock Select Bit Description ***<br />//TCCR1B |= (1&lt;&lt;CS10);//Prescaler 1<br />TCCR1B |= (1&lt;&lt;CS11);//Prescaler 8<br />//TCCR1B |= (1&lt;&lt;CS11) | (1&lt;&lt;CS10);//Prescaler 64<br /><br />ICR1  = MAX;<br /><br />//*** How to calculate ***<br />//PWMfreq = FCPU / N / (1+TOP)<br />//TOP = (FCPU / N / PWMfreq) - 1;<br />//N - prescaler divider (1, 8, 64, 256, 1024)<br />//TOP - ICR1<br /><br />//*** Examples ***<br />//FCPU=8MHz, N=8, ICR1 = 15625, PWMfreq -&gt; 64Hz<br />//FCPU=8MHz, N=1, PWMfreq=400Hz, ICR1 -&gt; 20000 - 1 = 19999<br />//FCPU=8MHz, PWMfreq=100Hz, N=1, ICR1 = 80000 - 1 = 79999 &gt; 65535, for N=8 -&gt; ICR1 = 10000 - 1 = 9999<br /><br />while(1)<br />{<br />// *** test of PWM ***<br />uint16_t i=0;<br />for(i=0; i&lt;MAX; i++){<br />OCR1A = i;<br />OCR1B = MAX - OCR1A;<br />_delay_us(100);<br />}<br />for(i=MAX; i&gt;0; i--){<br />OCR1A = i;<br />OCR1B = MAX - OCR1A;<br />_delay_us(100);<br />}<br /><br />// *** or set PWM with const duty ***<br />//OCR1A = MAX / 8;<br />//OCR1B = MAX - OCR1A;<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 12 lut 2017, o 03:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-02-12T00:36:23+01:00</updated>
<published>2017-02-12T00:36:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182449#p182449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182449#p182449"/>
<title type="html"><![CDATA[Re: Atmega16 - Timer1 FastPwm tryb 14]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182449#p182449"><![CDATA[
Witam<br />[syntax=c]TCCR1A = (1&lt;&lt;WGM11)| (1&lt;&lt;COM1A1) |(1&lt;&lt;COM1A0)|(1&lt;&lt;COM1B1)|(1&lt;&lt;COM1B0);[/syntax]<br />Jakby co to nie wiem dlaczego, ale u mnie tylko tak działa  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 12 lut 2017, o 00:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LogTeam]]></name></author>
<updated>2017-02-12T00:01:05+01:00</updated>
<published>2017-02-12T00:01:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182448#p182448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182448#p182448"/>
<title type="html"><![CDATA[Atmega16 - Timer1 FastPwm tryb 14]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17604&amp;p=182448#p182448"><![CDATA[
Witam<br /><br />Potrzebuję regulować częstotliwość sygnału. W tym celu chciałem zastosować timer1 fast pwm (w trybie 14). Wykonuje inicjalizacje tak jak poniżej, ale na oscyloskopie nic nie ma.<br />[syntax=c]DDRD |= (1&lt;&lt;PD4) | (1&lt;&lt;PD5);                                    <br />TCCR1A = (1&lt;&lt;WGM11) | (1&lt;&lt;COM1A1);                        <br />TCCR1B = (1&lt;&lt;WGM13) | (1&lt;&lt;WGM12) | (1&lt;&lt;CS11);     <br />ICR1  = 15625;  //freq = CLK/(ICR1<br />OCR1A =  7813;<br />OCR1B =  7813;[/syntax]<br />Widzicie gdzie jest błąd?<br /><br /><br />Wcześniej do zmiany częstotliwości używałem CNT i zmieniałem OCRx, ale przeskoki częstotliwości były za duże.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=738">LogTeam</a> — 12 lut 2017, o 00:01</p><hr />
]]></content>
</entry>
</feed>