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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-10-29T19:36:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1720&amp;mode</id>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T19:36:15+01:00</updated>
<published>2012-10-29T19:36:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17898#p17898</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17898#p17898"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17898#p17898"><![CDATA[
Dzięki za zwrócenie uwagi :]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 29 paź 2012, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T17:33:55+01:00</updated>
<published>2012-10-29T17:33:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17892#p17892</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17892#p17892"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17892#p17892"><![CDATA[
No no no - spójrz na ten kod u góry i porównaj jaki typ dałeś zmiennym Timer1, Timer2<br /><br />a na jakim typie pracujesz w przerwaniu - bo nigdy te timery programowe nie będą ci działać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> (to ten kolejny błąd o którym pisałem wcześniej)<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />a pytania - śmiało zadawaj<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2012, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T17:26:49+01:00</updated>
<published>2012-10-29T17:26:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17891#p17891</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17891#p17891"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17891#p17891"><![CDATA[
No jak zwykle działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Ja nie wiem..<br />Ty to jesteś guru <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />)<br /><br />Dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Myślę, że więcej pytań miał nie będę <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 29 paź 2012, o 17:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T17:21:15+01:00</updated>
<published>2012-10-29T17:21:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17888#p17888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17888#p17888"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17888#p17888"><![CDATA[
Jak WGM1 jest w TCCR1A to ja jestem księdzem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />czytaj dokładniej noty <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=54">mirekk36</a> — 29 paź 2012, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T16:56:44+01:00</updated>
<published>2012-10-29T16:56:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17886#p17886</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17886#p17886"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17886#p17886"><![CDATA[
Ok,<br />Teraz ruszyło, ale coś te czasy nie takie:D<br />Postanowiłem napisać prościutki, program, aby sprawdzić w czym rzecz:<br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />int main(void){<br /><br />DDRD |=(1&lt;&lt;PD5); // koncowki PWM jako wyjscia<br />/********* KONFIGHURACJA TIMERA **/<br />TCCR1A|=(1&lt;&lt;WGM12); //tryb CTC<br />TCCR1B|=(1&lt;&lt;CS12 | 1&lt;&lt;CS10); //prescalet 1024<br />TIMSK1|=(1&lt;&lt;OCIE1A);  //Timer/Counter1, output compare A match interrupt enable<br /><br />OCR1A=18000;          // 18432000/1024/18000 =1Hz<br />sei();<br /><br />while(1){<br />  ;<br />}<br />}<br /><br />ISR(TIMER1_COMPA_vect){<br />PORTD ^=(1&lt;&lt;PD5);<br />}[/syntax]<br /><br />No ale zamiast migania co 1 sek, miga co 3,5sek<br /><br />Żeby nie było, że to fusy, załączam screen z Bootloadera:<br /><a href="http://forum.atnel.pl/_obrazki/o/74_f29a17144cf356591b050154a45ecd84.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/74_f29a17144cf356591b050154a45ecd84.png" alt="Obrazek" /></a><br /><br />Czyżbym coś źle liczył?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 29 paź 2012, o 16:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T13:29:41+01:00</updated>
<published>2012-10-29T13:29:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17876#p17876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17876#p17876"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17876#p17876"><![CDATA[
<div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />I pewnie problem się rozwiąże, a jeśli nie to znowu zacznę was męczyć..<br /></div><br /><br />dokładnie - tzn ja liczę na to, że sam znajdziesz jeszcze JEDEN błąd OK ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .....<br /><br />ale jeśli nie to śmiało męcz - po to tu jesteśmy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br /><div class="quotetitle">worner napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent">To tak samo powoduje ciągłe resetowanie procka - jak każde odblokowane przerwanie, które nie ma procedury swojej obsługi w kodzie<br /></div><br /><br />Nawet nie wiedziałem, że tak się zachowuje procek.</div><br /><br />worner to troszkę nie tak jak piszesz ale doprecyzuję.<br /><br />To nie procek się tak zachowuje - sam z siebie .... To jest tak, że jeśli programista czyli ty - odblokujesz jakieś przerwanie w odpowiednim rejestrze - ale nie napiszesz odpowiedniego makra ISR( vector ) bo np zapomniałeś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> jak w tym przypadku ... to pomyśl co kompilator ma sobie pomyśleć ??? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />otóż kompilator gdy zobaczy, że nie ma chociażby takiego PUSTEGO makra - to pod adres obsługi tego wektora przerwania wstawi adres obsługi błędnych przerwań <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a tam będzie skok na wszelki wypadek do początku programu. Więc to jest CELOWE działanie kompilatora - że taki kod wygeneruje.<br /><br />Dlatego OBOWIĄZKIEM programisty jest zadbać o dodanie makra ISR() od razu jak odblokowujesz jakieś przerwanie. Ja zawsze od razu kolejną rzeczą którą robię za pamięci to daję<br /><br />[syntax=c]ISR( nazwa_wektora ) {<br /><br />}[/syntax]<br /><br />i potem nawet jak zapomnę wypełnić to makro - to już nic złego mi się nie stanie - program będzie po prostu skakał do pustej procedury i wracał. Czyli nic nie zrobi ale procek się nie zresetuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2012, o 13:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[worner]]></name></author>
<updated>2012-10-29T12:43:22+01:00</updated>
<published>2012-10-29T12:43:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17874#p17874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17874#p17874"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17874#p17874"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />To tak samo powoduje ciągłe resetowanie procka - jak każde odblokowane przerwanie, które nie ma procedury swojej obsługi w kodzie<br /></div><br /><br />Nawet nie wiedziałem, że tak się zachowuje procek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=150">worner</a> — 29 paź 2012, o 12:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T10:53:08+01:00</updated>
<published>2012-10-29T10:53:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17863#p17863</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17863#p17863"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17863#p17863"><![CDATA[
Krauser<br />Dzięki,<br />Nie zwróciłem uwagi...<br /><br />Pod wieczór, jak będę w domu, postaram się poprawić kod..<br />I pewnie problem się rozwiąże, a jeśli nie to znowu zacznę was męczyć..<br /><br />Dziękuję serdecznie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 29 paź 2012, o 10:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T10:51:17+01:00</updated>
<published>2012-10-29T10:51:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17862#p17862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17862#p17862"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17862#p17862"><![CDATA[
Krauser jest jeszcze sporo innych rzeczy - ale dajmy koledze może chwilkę na uporządkowanie kodu, ew zmniejszenie - bo wierzę, że wtedy sam zobaczy jeszcze inne rzeczy - a są napewno.<br /><br />zresztą do takiego kodu przydałoby się np opis autora, że np:<br /><br />zezwalam na przerwanie compare A ponieważ ..... ...... opis ....<br /><br />zezwalam na przerwanie compare B ponieważ ..... ...... opis ....<br /><br />już samo to pozwoliłoby zobaczyć wyżej wymienione błędy<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Oczywiście TIMSK1|=(1&lt;&lt;OCIE1B); też nie jest potrzebne.<br /></div><br /><br />To tak samo powoduje ciągłe resetowanie procka - jak każde odblokowane przerwanie, które nie ma procedury swojej obsługi w kodzie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2012, o 10:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-10-29T10:44:13+01:00</updated>
<published>2012-10-29T10:44:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17861#p17861</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17861#p17861"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17861#p17861"><![CDATA[
<div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />[syntax=c]<br />//...<br />TIMSK1|=(1&lt;&lt;OCIE1B);  //Timer/Counter1, output compare B match interrupt enable<br />TIMSK1|=(1&lt;&lt;OCIE1A);  //Timer/Counter1, output compare A match interrupt enable<br />OCR1A=288; //przerwanie co 1ms<br />//...<br />ISR(TIMER2_COMPA_vect){<br />//...<br />[/syntax]<br /></div><br />Odblokowałeś przerwania dla TIMER<strong>1</strong> a masz TIMER<strong>2</strong>_COMPA_vect co dla AVR powoduje rozpoczęcie programu od początku. Oczywiście TIMSK1|=(1&lt;&lt;OCIE1B); też nie jest potrzebne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 29 paź 2012, o 10:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T10:01:46+01:00</updated>
<published>2012-10-29T10:01:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17855#p17855</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17855#p17855"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17855#p17855"><![CDATA[
<div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />Nie wiem Mirku, mógłbym tu wrzucić (po południu, koło 16.00)  kod asemblera, jaki został wygenerowany..<br />Mógłbyś rzucić na niego okiem?<br /></div><br /><br />Posłuchaj,<br /><br />po PIERWSZE to jeśli chcesz żebym np ja analizował kod, to niestety doprowadź go najpierw do porządku tak jak zaproponował ci <strong><span style="color: #0040FF">GwynBleid</span></strong>, bo inaczej uznam że nie szanujesz nikogo na tym forum, a przecież już długo tu jesteś i wiesz że dobrze napisany kod - daje się o 100x szybciej przeanalizować.<br /><br />CO WAŻNIEJSZE - sam popełnisz 100x mniej błędów<br /><br />przyznam, że spróbowałem go zacząć analizować - ale mnie odrzuciło - poważnie.<br /><br />Tym bardziej, że już od samego początku błędy ... tzn może inaczej powiem<br /><br />w tym kodzie jest po prostu CAŁE STADO BŁĘDÓW - i sam się wcale sobie i innym nie dziwię, że nikt wcześniej tego nie zauważył <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> .... bo tak samo pewnie się każdemu &quot;chce się to czytać&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />------------------------------<br /><br />żeby nie było że tylko marudzę (chociaż nie marudzę) to dam ci kilka PORAD:<br /><br />1. tak jak mówiłem to pwi++; oraz OC0B=pwi; nie ma prawa <strong><span style="color: #0040FF">źle działać</span></strong><br />2. zrób prawidłowe wcięcia w kodzie<br />3. zrób odstępy chociaż 1 linii między ważnymi blokami kodu<br />4. zwracaj uwagę na typy danych<br />5. otwórz notę PDF i czytaj co i w którym rejestrze się ustawia bo jest M A S A K R A (tu już sporo znajdziesz)<br />6. na ZEUSA - stwórz do testów (tak sobie sam) ... jakiś prostszy kod na chwilę żeby to przetestować. Po co ci do testów 30 PWM'ów i setki niepotrzebnych rzeczy. Przecież po kawałku łatwiej się testuje<br /><br />a jak całość uporządkujesz to wtedy:<br /><br />1. od razu sam wyłapiesz co najmniej kilka błędów<br />2. będę w stanie przeanalizować ten kod<br />3. pomogę albo pomożemy - i dasz sobie z tym radę <br /><br />to jest moja propozycja OK ?<br /><br />obejdzie się bez żadnego asemblera - bo to byłoby wręcz bez sensu przy kodzie w C napisanym z tyloma błędami<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2012, o 10:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T08:04:10+01:00</updated>
<published>2012-10-29T08:04:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17849#p17849</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17849#p17849"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17849#p17849"><![CDATA[
Jeśli ktoś ma chwilkę czasu, to bardzo prosiłbym  zachowanie tego kodu (oczywiście trzeba troche inaczej timer skonfigrować i PWM ) na M32..<br /><br />Akurat pożyczyłem płytkę koledze, i nie mam jak tego przetestować..<br />Bo siedzę nad tym już i siedzę.. i nie mam pomysłów..<br />Powinno działać a tu nie chce ;/<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 13 minutach ]</span></strong><br /><br />Nie wiem Mirku, mógłbym tu wrzucić (po południu, koło 16.00)  kod asemblera, jaki został wygenerowany..<br />Mógłbyś rzucić na niego okiem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 29 paź 2012, o 08:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-29T05:57:39+01:00</updated>
<published>2012-10-29T05:57:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17845#p17845</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17845#p17845"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17845#p17845"><![CDATA[
Gwyn to na pewno nie chodzi o volatile <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />  bo oba przypadki u xarmexa powinny działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 paź 2012, o 05:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-28T20:03:45+01:00</updated>
<published>2012-10-28T20:03:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17834#p17834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17834#p17834"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17834#p17834"><![CDATA[
Ok, <br />warunek nie potrzebny, bo  przyjmie wartość 0<br /><br />koncowkar=pwmi; //koncowar to OCR0B (mam to zrobione przez #define)<br /><br />Zrobiłem na szybko nowy projekcik, aby tylko i wyłącznie się tym pobawić i oto mój plik main.c<br /><br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />volatile uint8_t Timer1,Timer2; //timerzy generujace<br />uint8_t pwmi;<br />int main(void){<br />/****** CONF PWM*******************/<br />DDRD |=(1&lt;&lt;PD3)|(1&lt;&lt;PD5)|(1&lt;&lt;PD6); // koncowki PWM jako wyjscia<br />//TIMER 0 dla OCROB(PD5) i dla OCROA(PD6)<br />TCCR0A |= (1&lt;&lt;WGM00);// tryb phase  PWM<br />TCCR0A |= (1&lt;&lt;COM0B1);// set at OC0B TOP<br />TCCR0A |= (1&lt;&lt;COM0A1);// set at OC0A TOP<br />TCCR0B |= (1&lt;&lt;CS00); //prescaler 1<br />//TIMER 2 da OCR2B(PD3)<br />TCCR2A |= (1&lt;&lt;WGM20); // tryb phase PWM<br />TCCR2A |= (1&lt;&lt;COM2B1);// set at OC2B TOP<br />TCCR2B |= (1&lt;&lt;CS20); //prescaler 1<br />/********* KONFIGHURACJA TIMERA *********************/<br />TCCR1A|=(1&lt;&lt;WGM12); //tryb CTC<br />TCCR1B|=(1&lt;&lt;CS11 | 1&lt;&lt;CS10); //prescalet 64<br />TIMSK1|=(1&lt;&lt;OCIE1B);  //Timer/Counter1, output compare B match interrupt enable<br />TIMSK1|=(1&lt;&lt;OCIE1A);  //Timer/Counter1, output compare A match interrupt enable<br />OCR1A=288; //przerwanie co 1ms<br />sei();<br />/////////////////////////////////////////////////////////////////////////////////////<br />while(1){<br />if(!Timer1){<br />                Timer1=20;<br />                pwmi++;<br />                OCR0B=pwmi;<br />        }<br />}<br /><br />}<br /><br />ISR(TIMER2_COMPA_vect){<br />uint16_t x;<br />x = Timer1;                             // 1000Hz Timer1<br />if (x) Timer1 = --x;<br />x = Timer2;                             // 1000Hz Timer2<br />if (x) Timer2 = --x;<br />}<br /><br />[/syntax]<br /><br />No i dioda cały czas świeci słabo.<br /><br />A jak zmienię while na:<br />[syntax=c]while(1){<br />if(!Timer1){<br />                Timer1=20;<br />//                pwmi++;<br />                OCR0B++;<br />        }<br />}[/syntax]<br />To działa OK(rozjaśnia się)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 28 paź 2012, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-28T20:00:36+01:00</updated>
<published>2012-10-28T20:00:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17832#p17832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17832#p17832"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17832#p17832"><![CDATA[
Nie odpowiedziałeś na moje pytanie - a ja podpowiem ci że w żadnym z tych wypadków nie potrzebujesz ani:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if(pwmi&gt;254) pwmi=0;</div><br /><br />ani<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if(pwmi&gt;255) pwmi=0;</div><br /><br />czekam zatem na odpowiedź<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Nie wspomnę o tym że nigdzie w twoich kodach nie widać co to jest?<br /><br />koncowkar<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 paź 2012, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-28T19:56:34+01:00</updated>
<published>2012-10-28T19:56:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17830#p17830</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17830#p17830"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17830#p17830"><![CDATA[
Może tutaj to podam bardziej dokładnie.<br />Wydaje mi się, że rpoblem lezy w mojej funkcji <strong>funkcja2();</strong><br />1)Działa (dioda się rozjaśnia) <br />[syntax=c]    void funkcja2(void){<br />                    koncowkar++;<br />                    if(koncowkar&gt;254) koncowkar=0;<br />                    _delay_ms(10);<br />            }<br />[/syntax]<br />2)Również działa:(czyli <strong>TIMER </strong>mam ustawiony dobrze)<br />[syntax=c]    void funkcja2(void){<br />            if(!Timer1){<br />                    Timer1=20;<br />                    koncowkar++;<br />                    if(koncowkar&gt;254) koncowkar=0;<br />            }<br />    }<br />[/syntax]<br />3)NIE działa: Dioda słabo świci cały czas (tak jakby był problem ze zmienną pwmi)<br />[syntax=c]void funkcja2(void){<br />        if(!Timer1){<br />                Timer1=20;<br />                pwmi++;<br />                koncowkar=pwmi; //koncowar to OCR0B (mam to zrobione przez #define)<br />if(pwmi&gt;254) pwmi=0;<br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 28 paź 2012, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-28T19:53:47+01:00</updated>
<published>2012-10-28T19:53:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17829#p17829</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17829#p17829"/>
<title type="html"><![CDATA[Re: Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17829#p17829"><![CDATA[
Nie za bardzo na razie rozumiem, ale masz coś takiego:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">uint8_t pwmi;</div><br /><br />więc jaką wg ciebie wartość przyjmie ta zmienna gdy będzie = 255 i zwiększysz ją o jeden ?<br /><br />bo widzę tam coś takiego:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">if(pwmi&gt;255) pwmi=0;</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 paź 2012, o 19:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-10-29T17:04:21+01:00</updated>
<published>2012-10-28T18:50:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17823#p17823</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17823#p17823"/>
<title type="html"><![CDATA[Timer programowy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1720&amp;p=17823#p17823"><![CDATA[
Witam. Mój procek to Mega88 kwearc 18,432Mhz<br />Mam diodę RGB i chciałbym napisać soie funkcję, która rozjaśnia kolor czerwony, a na dodatek jest nieblokująca.<br />Tak inicjuję timer 16biotwy(tylko ten mi został)<br />[syntax=c]void init_timer(){<br />TCCR1A|=(1&lt;&lt;WGM12); //tryb CTC<br />TCCR1B|=(1&lt;&lt;CS11 | 1&lt;&lt;CS10); //prescalet 64<br />TIMSK1|=(1&lt;&lt;OCIE1B);  //Timer/Counter1, output compare B match interrupt enable<br />TIMSK1|=(1&lt;&lt;OCIE1A);  //Timer/Counter1, output compare A match interrupt enable<br />OCR1A=288; //przerwanie co 1ms<br />}<br /><br />ISR(TIMER2_COMPA_vect){<br />uint16_t x;<br />x = Timer1;                             // 1000Hz Timer1<br />if (x) Timer1 = --x;<br />x = Timer2;                             // 1000Hz Timer2<br />if (x) Timer2 = --x;<br />}<br /><br />[/syntax]<br /><br />W maine mam<br />[syntax=c]<br />volatile uint8_t Timer1,Timer2; //timerzy generujace<br />uint8_t EEMEM EE_flaga;  //flga sprawdzajaca czy zostay za pierwszym razem skopiowane dane do paieci eeprom<br /><br />//tabela przechowujaca wartosci OCR1A wyznaczone funkcja x^2<br />uint8_t pwm_lookup_table[] ={1, 2, 4, 6, 8, 11, 15, 19, 23, 28, 33, 39, 45, 52, 59, 66, 74, 83, 92, 101, 111, 121, 132, 143, 155, 167, 180, 193, 207, 221, 235, 250};<br />uint8_t pwmi=0;<br />void init_timer(){<br />TCCR1A|=(1&lt;&lt;WGM12); //tryb CTC<br />TCCR1B|=(1&lt;&lt;CS11 | 1&lt;&lt;CS10); //prescalet 64<br />TIMSK1|=(1&lt;&lt;OCIE1B);  //Timer/Counter1, output compare B match interrupt enable<br />TIMSK1|=(1&lt;&lt;OCIE1A);  //Timer/Counter1, output compare A match interrupt enable<br />OCR1A=288; //przerwanie co 1ms<br />}<br /><br />void funkcja2(void){<br />if(!Timer1){<br />Timer1=20;<br />pwmi++;<br />koncowkar=pwmi; //koncowar to OCR0B (mam to zrobione przez #define)<br />if(pwmi&gt;255) pwmi=0;<br />}<br />}<br />int main (void){<br />USART_Init( __UBRR );// inicjalizacja UART<br />confpwm();//wlacz pwm<br />sei();// globalne odblokowanie przerwań<br />init_timer();<br />while(1){<br />funkcja2();<br />}<br />[/syntax]<br /><br />No i teraz dioda świeci cały czas słabo.. <strong>(coś nie tak z funkcją funkcja2();</strong>)<br />Natomiast gdy przerobię funckje2() na taką:<br />[syntax=c]void funkcja2(void){<br />if(!Timer1){<br />Timer1=20;<br />koncowkar++;<br />if(koncowkar&gt;254) koncowkar=0;<br />}<br />}[/syntax]<br /><br />To dioda się rozjaśnia..<br /><br /><br />Tak napisana funkjca2(); równiez działa:<br />[syntax=c]void funkcja2(void){<br />koncowkar++;<br />if(koncowkar&gt;254) koncowkar=0;<br />_delay_ms(10);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 28 paź 2012, o 18:50</p><hr />
]]></content>
</entry>
</feed>