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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-08T10:55:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11310&amp;mode</id>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-04-08T10:55:45+01:00</updated>
<published>2015-04-08T10:55:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125906#p125906</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125906#p125906"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125906#p125906"><![CDATA[
A no faktycznie nie posiada... tak dawno z nich nie korzystałem, że o tym zapomniałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Sorki za zamieszanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 8 kwi 2015, o 10:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[OdeOn]]></name></author>
<updated>2015-04-07T21:02:07+01:00</updated>
<published>2015-04-07T21:02:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125872#p125872</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125872#p125872"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125872#p125872"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />No to wyłącz może na początek CKDIV (dzielenie przez 8) w fusach, bo procek pewnie pracuje Ci 8 x wolniej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Atmega8 nie posiada CKDIV8<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1407">OdeOn</a> — 7 kwi 2015, o 21:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-04-07T19:48:25+01:00</updated>
<published>2015-04-07T19:48:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125864#p125864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125864#p125864"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125864#p125864"><![CDATA[
Trochę namieszałeś tutaj<br />[syntax=c]TCCR1B |= (1&lt;&lt;WGM10);<br />TCCR1B |= (1&lt;&lt;CS10);<br />TCCR0 |= (1&lt;&lt;WGM13);<br />TCCR2 |= (1&lt;&lt;COM21);<br />OCR2=255;[/syntax]<br />Sprawdź w jakim rejestrze leży bit WGM10.<br /><br />Rejestr TCCR0 w Atmedze8 nie posiada bitu WGM13. Tym zapisem TCCR0 |= (1&lt;&lt;WGM13); próbujesz ustawić piąty (licząc od zera) w rejestrze TCCR0. A rejestr ten posiada tylko 3 bity.<br /><br />Ustawienia Timera2  też nieprawidłowe bo nie włączyłeś trybu PWM, preskalera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 7 kwi 2015, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-04-07T19:23:58+01:00</updated>
<published>2015-04-07T19:23:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125859#p125859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125859#p125859"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125859#p125859"><![CDATA[
No to wyłącz może na początek CKDIV (dzielenie przez 8) w fusach, bo procek pewnie pracuje Ci 8 x wolniej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 7 kwi 2015, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qismo]]></name></author>
<updated>2015-04-07T19:19:22+01:00</updated>
<published>2015-04-07T19:19:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125858#p125858</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125858#p125858"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125858#p125858"><![CDATA[
Zegar na 8000000Hz, a fusów nie ruszałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Do tej pory wszystko na płytce uruchamiałem na atmega32 i nie musiałem nic kombinować. Tylko dopisywałem swoje linie...<br />A na atmega8 pierwszy raz siedzę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5241">qismo</a> — 7 kwi 2015, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-04-07T19:10:01+01:00</updated>
<published>2015-04-07T19:10:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125856#p125856</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125856#p125856"/>
<title type="html"><![CDATA[Re: Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125856#p125856"><![CDATA[
A zegar i fusy ustawione prawidłowo ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 7 kwi 2015, o 19:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qismo]]></name></author>
<updated>2015-04-07T18:16:06+01:00</updated>
<published>2015-04-07T18:16:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125853#p125853</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125853#p125853"/>
<title type="html"><![CDATA[Przestawienie bitów z atmega32 na atmega8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11310&amp;p=125853#p125853"><![CDATA[
Witam. Otóż mam problem. Chciałem przenieść kod z atmega32 na atmega8.<br />Dokładnie to chodzi o program z bluebooka 05_PWM. Przerobiłem go trochę i na atmega32 śmiga jak należy. <br />Ale szczerze to nie chciałbym go tu wrzucać tutaj bo wygląda tragicznie, w 5 min i zrobiony metodą ctrl+c, ctrl+v <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Program ma za zadanie wyświetlanie na diodzie RGB kolorów R,G,B,R+B,R+G,B+G, R+G+B.<br />Na atmedze32 z odpowiednimi ustawieniami bitów działa jak należy. Natomiast na atmega8 &quot;działa&quot; to wszystko strasznie wooolno i połowicznie... Dodam,że ma być to na &quot;projekt&quot; do szkoły. Siedzę już nad tym od rana i nie mogę dojść o co kaman... Oryginalny kod na samym dole.<br />Coś schrzaniłem w zmianie bitów w atmega8... <br /><br />Chodzi o zmianę bitów przy PWM. Oryginalnie wyglądają one tak (atmega32):<br /><br /><br />[syntax=c]TCCR0 |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// tryb Fast PWM<br />TCCR0 |= (1&lt;&lt;COM01);// clear at TOP<br />TCCR0 |= (1&lt;&lt;CS00);// preskaler = 1<br />OCR0=255;// wygaszenie diody w kanale PWM[/syntax]<br /><br />Ja &quot;udoskonaliłem&quot; to na wersję atmega8:<br /><br /><br />[syntax=c]TCCR1B |= (1&lt;&lt;WGM10);<br />TCCR1B |= (1&lt;&lt;CS10);<br />TCCR0 |= (1&lt;&lt;WGM13);<br />TCCR2 |= (1&lt;&lt;COM21);<br />OCR2=255;[/syntax]<br /><br /><br /><br />[syntax=c]*<br /> *  Created on: 2010-04-05<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />// definicje zmiennych do sterowania 6 kanałami programowych PWM<br />// zmienne typu uint8_t, rozdzielczość 8-bitowa<br />volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6;<br /><br />// główna funkcja programu main()<br />int main(void)<br />{<br />//***** SPRZĘTOWY PWM - 1 KANAŁ OC0 (PB3) *******<br />// ustawienie końcówki OC0 (PB3) sprzętowy PWM jako WYJŚCIE<br />DDRB |= (1&lt;&lt;PB3);<br />// ustawienia TIMER2 w Fast PWM<br />TCCR0 |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// tryb Fast PWM<br />TCCR0 |= (1&lt;&lt;COM01);// clear at TOP<br />TCCR0 |= (1&lt;&lt;CS00);// preskaler = 1<br />OCR0=255;// wygaszenie diody w kanale PWM<br /><br /><br />//***** PROGRAMOWY PWM - 6 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />DDRD |= (1&lt;&lt;PD7)|(1&lt;&lt;PD6)|(1&lt;&lt;PD2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />PORTD |= (1&lt;&lt;PD7)|(1&lt;&lt;PD6)|(1&lt;&lt;PD2);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);// preskaler = 1<br />OCR2 = 199;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />sei();// odblokowanie globalne przerwań<br />uint8_t i;// definicja zmiennej i na potrzeby pętli for()<br /><br /><br />while(1)<br />{<br />// pętla rozjaśniająca 6 diod LED<br />for(i=0;i&lt;255;i++)<br />{<br />OCR0=i;// ta dioda będzie ulegała ściemnianiu w tej pętli<br />pwm1=i;<br />pwm2=i;<br />pwm3=i;<br />pwm4=i;<br />pwm5=i;<br />pwm6=i;<br /><br />// W związku z dużą nieliniowością zależności prądu diod LED<br />// i jasności świecenia, wprowadzone jest zmienne opóźnienie<br />// przy wartościach bliskich zera aby zminimalizować ten efekt<br />if(i&gt;50) _delay_ms(3);<br />else _delay_ms(10);<br />}<br />// całkowite rozjaśnienie diody LED przez 100ms<br />OCR0=255;<br />// rozświetlenie na maksimum przez 100ms<br />pwm1=255;<br />pwm2=255;<br />pwm3=255;<br />pwm4=255;<br />pwm5=255;<br />pwm6=255;<br />_delay_ms(500);<br /><br />// pętla stopniowo ściemniająca 6 diod LED<br />for(i=255;i;i--)<br />{<br />OCR0=i;// ta dioda będzie ulegała rozjaśnianiu w tej pętli<br />pwm1=i;<br />pwm2=i;<br />pwm3=i;<br />pwm4=i;<br />pwm5=i;<br />pwm6=i;<br /><br />// W związku z dużą nieliniowością zależności prądu diod LED<br />// i jasności świecenia, wprowadzone jest zmienne opóźnienie<br />// przy wartościach bliskich zera aby zminimalizować ten efekt<br />if(i&gt;50) _delay_ms(3);<br />else _delay_ms(10);<br />}<br />// całkowite rozjaśnienie diody LED przez 100ms<br />OCR0=0;<br />// całkowite wygaszenie diod LED przez 100ms<br />pwm1=0;<br />pwm2=0;<br />pwm3=0;<br />pwm4=0;<br />pwm5=0;<br />pwm6=0;<br />_delay_ms(500);<br />}<br /><br />}<br /><br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTC |= (1&lt;&lt;PC0); else PORTC &amp;= ~(1&lt;&lt;PC0);<br />if(cnt&gt;=pwm2) PORTC |= (1&lt;&lt;PC1); else PORTC &amp;= ~(1&lt;&lt;PC1);<br />if(cnt&gt;=pwm3) PORTC |= (1&lt;&lt;PC2); else PORTC &amp;= ~(1&lt;&lt;PC2);<br />if(cnt&gt;=pwm4) PORTD |= (1&lt;&lt;PD7); else PORTD &amp;= ~(1&lt;&lt;PD7);<br />if(cnt&gt;=pwm5) PORTD |= (1&lt;&lt;PD6); else PORTD &amp;= ~(1&lt;&lt;PD6);<br />if(cnt&gt;=pwm6) PORTD |= (1&lt;&lt;PD2); else PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br />cnt++;// zwiększanie licznika o 1<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5241">qismo</a> — 7 kwi 2015, o 18:16</p><hr />
]]></content>
</entry>
</feed>