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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-05-07T20:16:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=18352&amp;mode</id>
<entry>
<author><name><![CDATA[elmuerto]]></name></author>
<updated>2017-05-07T20:16:29+01:00</updated>
<published>2017-05-07T20:16:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188638#p188638</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188638#p188638"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188638#p188638"><![CDATA[
Witam.<br />Program napisany i oscyloskop pokazuje że wszystko działa.<br />Cały program nie jest bardzo skomplikowany i działa tak:<br />Timer  0 generuje częstotliwość nośną 36Khz w trybie PWM<br />Timer 1 kluczuje tę częstotliwość tak aby zadziałał odbiornik podczerwieni TSOP<br />[syntax=c]DDRD |= (1 &lt;&lt; PD6);// PD6 is now an output<br /><br />                OCR0A = 30; //wypelnienie<br />              TCCR0A |= (1 &lt;&lt; COM0A1); // set none-inverting mode<br /><br />    TCCR0A |= (1 &lt;&lt; WGM00);<br /><br /> // TCCR0A |= (1&lt;&lt;WGM01);                                   <br />   TCCR0A |= (1 &lt;&lt; WGM02);<br /><br /><br />    TCCR0B |= (1&lt;&lt;CS00);<br />    // set prescaler to 0 and starts PWM<br />---------------------------------------------------------------------------------------------------------<br /><br />               DDRB |= (1 &lt;&lt; DDB1);<br />       ICR1 = 9800;<br />       OCR1A = 4000;<br />       TCCR1A |= (1 &lt;&lt; COM1A1)|(1 &lt;&lt; COM1B1);<br />       TCCR1A |= (1 &lt;&lt; WGM11);<br />       TCCR1B |= (1 &lt;&lt; WGM12)|(1 &lt;&lt; WGM13);<br />       TCCR1B |= (1 &lt;&lt; CS10);<br />                TIMSK1 |=(1&lt;&lt;TOIE1)|(1&lt;&lt;OCIE1A);//zezwolenie na przerwanie od przepełnienia i porównania<br /><br /><br />     sei();<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br /><br /><br /> TCCR0A &amp;= ~(1 &lt;&lt; COM0A1);<br /><br /><br />}<br />ISR(TIMER1_OVF_vect)<br />{<br /><br /><br /> TCCR0A |= (1 &lt;&lt; COM0A1);<br /><br />}[/syntax]<br /><br /><a href="https://obrazkiforum.atnel.pl/15076/4ce8701545e2b43d8788cabc6c01883f.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/15076/4ce8701545e2b43d8788cabc6c01883f.jpg" alt="Obrazek" /></a><br /><br />Wiem że te przerwania trochę obciążają procesor ale wiele się w nich nie dzieje więc na razie może tak zostać.<br />Mogę na wyjście PWM Timera 1 dać tranzystor i tak kluczować PWM TIMERA 0 wtedy pozbędę się przerwań wewnętrznych.<br /><br />Bardzo dziękuję za zainteresowanie i pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15076">elmuerto</a> — 7 maja 2017, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-07T19:41:13+01:00</updated>
<published>2017-05-07T19:41:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188637#p188637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188637#p188637"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188637#p188637"><![CDATA[
To co &quot;kicajek&quot; napisał to ważna informacja.<br />Ja zakładam że to tylko do testów sprzętowego PWM'a.<br />Między przerwaniami (OCR1A=4000) coś tam można jeszcze zmieścić razem z obsługą tego przerwania. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 23 minutach ]</span></strong><br /><br />np. lcd'ek działa. wyświetlam na nim TCNT1.<br />Widać że wartości się zmieniają w szybkim tempie.(jedna wielka mrygawka) <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 25 minutach ]</span></strong><br /><br />co prawda w przerwaniach zmieniam tylko stan pinu z dodatkową diodą.<br />w jednym przerwaniu zapalam a w drugim gaszę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 7 maja 2017, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2017-05-07T19:28:14+01:00</updated>
<published>2017-05-07T19:28:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188636#p188636</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188636#p188636"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188636#p188636"><![CDATA[
Witam<br /><div class="quotetitle">elmuerto napisał(a):</div><div class="quotecontent"><br />Chcę zainicjować jakąś akcję przy każdej zmianie stanu na pinie...<br /></div><br />Tak nie fachowo, ale obrazowo:<br />Jest to możliwe lecz jest jedno &quot;ale&quot; - takie coś miałoby rację bytu jeśli częstotliwość PWM'a będzie odpowiednio malutka; przy Twoim ustawieniu nie zadziała bo &quot;się zatka&quot;.<br />Pomyśl co ile taktów zegara miało by nastąpić samo &quot;zgłoszenie przerwania&quot;; teraz te Twoje przerwania od przerwania też zajmą trochę tyknięć - a to wszystko powinno mieć dość zapasu taktów aby pracowało bez zakłóceń.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 7 maja 2017, o 19:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-07T18:41:19+01:00</updated>
<published>2017-05-07T18:41:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188631#p188631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188631#p188631"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188631#p188631"><![CDATA[
należy dodatkowo włączyć zezwolenie na przerwanie,  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />TOIE1(od ICR'a) oraz OCIE1A(od OCR1A).<br />i uruchomić procedury w przerwaniach.<br />ISR(TIMER1_COMPA_vect) {....<br />oraz<br />ISR(TIMER1_OVF_vect) {....<br />pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 7 maja 2017, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elmuerto]]></name></author>
<updated>2017-05-07T17:58:15+01:00</updated>
<published>2017-05-07T17:58:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188628#p188628</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188628#p188628"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188628#p188628"><![CDATA[
WITAM.<br />Udało mi się wymęczyć taki kod który działa wg założeń<br /><br />[syntax=c]DDRB |= (1 &lt;&lt; PB1);// ustawienie pinu jako wyjście<br />     <br /><br />       ICR1 = 9800;//wartość TOP wyznaczająca częstotliwość<br />       <br /><br />       OCR1A = 4000;//wartość wypełnienia<br />      <br /><br />     <br /><br />       TCCR1A |= (1 &lt;&lt; COM1A1)|(1 &lt;&lt; COM1B1);//   tryb none-inverting <br />       <br /><br />       TCCR1A |= (1 &lt;&lt; WGM11);<br />       TCCR1B |= (1 &lt;&lt; WGM12)|(1 &lt;&lt; WGM13);  tryb 14 Fast PWM  TOP  ICR1<br />      <br /><br />       TCCR1B |= (1 &lt;&lt; CS10);// prescaler 1[/syntax]<br /><br /><br /><br />Mam jeszcze jedno pytanie czy można wywołać przerwanie wewnętrzne gdy ICR osiąga TOP lub ZERO  i gdy OCR osiąga swą wartość.<br />Chcę zainicjować jakąś akcję przy każdej zmianie stanu na pinie(przy każdym zboczu narastającym i  każdym opadającym)<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15076">elmuerto</a> — 7 maja 2017, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-07T17:17:56+01:00</updated>
<published>2017-05-07T17:17:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188626#p188626</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188626#p188626"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188626#p188626"><![CDATA[
tak, można ten tryb zastosować.<br />Na wyjściu OC1A(PB1) generować ustalony sygnał.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 7 maja 2017, o 17:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elmuerto]]></name></author>
<updated>2017-05-07T16:50:31+01:00</updated>
<published>2017-05-07T16:50:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188625#p188625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188625#p188625"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188625#p188625"><![CDATA[
Te wytyczne nie są aż tak wiążące.<br />Chodziło mi raczej o zasady.<br />Jak zrozumiem zasadę i będę umiał to zapisać to czasy sobie dobiorę.<br /><br />czy rozwiązaniem może być: tryb 10 - PWM, Phase Correct - ICR'em określam częstotliwość, a OCR'em wypełnienie?<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15076">elmuerto</a> — 7 maja 2017, o 16:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-07T11:37:38+01:00</updated>
<published>2017-05-07T11:37:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188618#p188618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188618#p188618"/>
<title type="html"><![CDATA[Re: Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188618#p188618"><![CDATA[
witam,<br />założenia są trochę rozbieżne.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br />dla 650us ---&gt; 1538Hz<br />dla 1666Hz ---&gt; 600us<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 7 maja 2017, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elmuerto]]></name></author>
<updated>2017-05-07T09:22:31+01:00</updated>
<published>2017-05-07T09:22:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188610#p188610</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188610#p188610"/>
<title type="html"><![CDATA[Pytanie o tryb PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18352&amp;p=188610#p188610"><![CDATA[
Witam.<br />Dopiero zaczynam poznawać timery i tryby PWM i mam takie pytanko:<br /><br />czy jest możliwe uzyskanie przebiegu jak na obrazku w trybie PWM.<br /><br /><a href="https://obrazkiforum.atnel.pl/15076/20294c33dd6d994d6cda0b2cfcc8087b.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/15076/20294c33dd6d994d6cda0b2cfcc8087b.jpg" alt="Obrazek" /></a><br /><br /><br />Procesor to Atmega 328 kwarc 18 432 000.<br /><br />W tej chwili poradziłem sobie wywołując przerwanie wewnętrzne co 50us i programowo zmieniając stan wyjścia ale wydaje mi się to mało eleganckie.<br /><br />[syntax=c]ISR(TIMER2_COMPA_vect)<br />{<br />if(licznik&lt;6){<br />DDRC |= (1 &lt;&lt; PC5);<br />}<br />else{<br />                 DDRC &amp;=  ~(1 &lt;&lt; PC5);<br />}<br />licznik++;<br />if(licznik==13){<br />licznik=0;<br />}<br /><br />}[/syntax]<br /><br />Wartości w warunku &quot;if&quot; są o przykładowe.<br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15076">elmuerto</a> — 7 maja 2017, o 09:22</p><hr />
]]></content>
</entry>
</feed>