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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-09T19:42:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=20579&amp;mode</id>
<entry>
<author><name><![CDATA[bmenot]]></name></author>
<updated>2018-04-09T19:42:31+01:00</updated>
<published>2018-04-09T19:42:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206664#p206664</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206664#p206664"/>
<title type="html"><![CDATA[Re: [atmega8] pwm 16bitowy nie działa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206664#p206664"><![CDATA[
dzięki wielkie za pomoc, żle zinterpretowałem note katalogowom.<br /><br />A czy można dla każdego kanału wpisywać wartość do którego licznik liczy czyli do ICR1A i ICR1B??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9341">bmenot</a> — 9 kwi 2018, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-04-09T19:19:56+01:00</updated>
<published>2018-04-09T19:19:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206662#p206662</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206662#p206662"/>
<title type="html"><![CDATA[Re: [atmega8] pwm 16bitowy nie działa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206662#p206662"><![CDATA[
A czemu się dziwisz. Masz ustawiony tryb FastPWM w którym licznik liczy do wartości wpisanej do rejestru ICR1 (jest to wartość TOP licznika w tym trybie i po doliczeniu do tej wartości jest sprzętowo resetowany)). I teraz porównania masz na początku na 500. I wszystko jest OK - przerwanie się wywołuje bo licznik liczy do 986 (tyle wpisałeś do ICR1). Teraz sukcesywnie zwiększasz wartość porównania OCR1A wpisując wartość zmiennej vok do OCR1A w przerwaniu - a od tego porównania wykonuje się przerwanie. W momencie gdy wartość OCR1A jest już większa od ICR1 czyli od 986 przerwanie się przestaje wykonywać i cała reszta przestaje działać bo przecież wartość ze zmiennej vok jest ładowana do OCR1A w samym przerwaniu które przecież już się nie może wywołać bo wartość porównania jest większa od wartości do której zlicza licznik! (zawartość w OCR1A stanie na wartości 987 i już nie ma jak być zmienione bo porównanie nigdy nie nastąpi ponieważ licznik liczy tylko do 986)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 9 kwi 2018, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bmenot]]></name></author>
<updated>2018-04-09T18:51:04+01:00</updated>
<published>2018-04-09T18:51:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206661#p206661</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206661#p206661"/>
<title type="html"><![CDATA[[atmega8] pwm 16bitowy nie działa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20579&amp;p=206661#p206661"><![CDATA[
Witam, mam taki problem że dioda led podpięta pod pin PB1 rozjaśnia się tylko za pierwrszym razem aż do osiągnięcia wartosci 1023, potem nie gasnie tylko świeci czały czas a n na mierniku częstotliwość spada do 0. <br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include &lt;stdint.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;hd44780.h&quot;<br /><br />volatile uint16_t vok = 0;<br /><br />int main( void ){<br /><br /><br />        DDRB |= (1&lt;&lt;PB1);<br />DDRB |= (1&lt;&lt;PB2);<br /><br />LCD_Initalize();<br />LCD_Clear();<br /><br />TCCR1A |= (1&lt;&lt;WGM11);//|(1&lt;&lt;WGM10);//Fast PWM tryb 14<br />TCCR1B |= (1&lt;&lt;WGM13)|(1&lt;&lt;WGM12);<br /><br />TCCR1A |= (1&lt;&lt;COM1A1)|(1&lt;&lt;COM1B1);<br />TCCR1B |= (1&lt;&lt;CS11);//prescaler8<br /><br />ICR1=986; //&#91;***wewnętrzy  rezonator 1mhz ***1khz***ICR=986***CS11***&#93;<br /><br />OCR1A=500;<br />OCR1B=500;<br /><br />uint16_t temp=0;<br /><br />TIMSK |= (1&lt;&lt;OCIE1A);<br /><br />sei();<br /><br /> while(1){<br /><br />temp+=1;<br />if(temp&gt;=1023)<br />{<br />temp=0;<br />LCD_Clear();<br />}<br /><br /><br />vok=temp;<br /><br />LCD_GoTo(1,0);<br />LCD_Write(temp);<br /><br />LCD_GoTo(1,1);<br />LCD_Write(vok);<br /><br /> }<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />OCR1A=vok;<br />OCR1B=vok;<br />}[/syntax]<br /><br />Dodam jeszcze tyle że kod działa poprawnie jeśli nie ma przerwań.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9341">bmenot</a> — 9 kwi 2018, o 18:51</p><hr />
]]></content>
</entry>
</feed>