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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-07T08:24:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=18269&amp;mode</id>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-08-07T08:24:59+01:00</updated>
<published>2017-08-07T08:24:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193143#p193143</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193143#p193143"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193143#p193143"><![CDATA[
Dzięki chłopaki, jesteście wielcy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 7 sie 2017, o 08:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-08-06T19:43:04+01:00</updated>
<published>2017-08-06T19:43:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193126#p193126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193126#p193126"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193126#p193126"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Ajć, <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br />Wbijam się pod postem kolegi xentis, napisałem to wysyłam. Będzie co poczytać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div> hehe ja też nie zauważyłem że już mały elaborat wyżej zamieściłeś  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> - teraz kolega będzie miał do poczytania i utrwalenia  <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=6265">xentis</a> — 6 sie 2017, o 19:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-08-06T19:41:04+01:00</updated>
<published>2017-08-06T19:41:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193125#p193125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193125#p193125"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193125#p193125"><![CDATA[
Ajć,  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br />Wbijam się pod postem kolegi <strong>xentis</strong>, napisałem to wysyłam. Będzie co poczytać  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Popatrz...  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><br />Chcę ustawić timer_2 w tryb CTC:<br />Na stronie 226 DS'a widzę że muszę załączyć bit <strong>WGM21</strong>, który znajduje się w rejestrze <strong>TCCR2</strong>.<br />[syntax=c]TCCR2 |= (1&lt;&lt;WGM21); // tryb CTC timera_2[/syntax]<br /><br />Potem ustawiam preskaler np. na 1024 ( <strong>CS22 </strong>i <strong>CS20 </strong>) w rejestrze też <strong>TCCR2</strong> ,zgodnie z notą strona 228 i 226.<br />[syntax=c]TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS20); // preskaler 1024[/syntax]<br />Na marginesie: bit CS21 pozostawiamy bez zmian (domyślnie jest wyzerowany) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><a href="https://obrazkiforum.atnel.pl/11549/2e2401b294bf949a28880d3f5c9d1754.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/2e2401b294bf949a28880d3f5c9d1754.JPG" alt="Obrazek" /></a><br />ustawiam dodatkowy podział zezwalając licznikowi zliczać do np 77. (78 tyknięć razem z zerem).<br />8000000 / 1024 / 78 = ~100,1Hz (10ms).<br />albo do 155(156 tyknięć) <br />8000000 / 1024 / 156 = ~50Hz (20ms).<br />[syntax=c]OCR2 = 77; // ~100Hz<br />// lub<br />OCR2 = 155; // ~50Hz[/syntax]<br />teraz czas na zezwolenie na przerwanie od porównania z wartością rejestru OCR2.<br /><a href="https://obrazkiforum.atnel.pl/11549/15217399b3b04c5babf14a393b5cfb4b.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/15217399b3b04c5babf14a393b5cfb4b.JPG" alt="Obrazek" /></a><br />[syntax=c]TIMSK |= (1&lt;&lt;OCIE2); //  Compare Match Interrupt Enable[/syntax]<br />teraz potrzebujemy obsłużyć nasze przerwanie.<br />[syntax=c]ISR(TIMER2_COMP_vect)<br />{<br />// static - żeby po ponownym wejsciu programu w przerwanie nie zaczynało ponownie od wartości 0, tylko żeby pamiętało poprzednią dekrementację.<br /><br />static uint8_t licznik=0; <br /><br />if(licznik) licznik--; <br /> else { <br /><br />flag_100ms = 1; // zmienna globalna volatile jako flaga (wystawianie flagi)<br /><br />licznik= 9; // 100ms dla przerwania co 10ms(100Hz)<br />/* lub<br />licznik= 4; // 100ms dla przerwania co 20ms(50Hz)<br />*/<br />}<br />}[/syntax]<br /><br />Złóżmy to w całość . <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />// ......<br />volatile uint8_t flag_100ms;<br /><br />int main(void) {<br /><br />        TCCR2 |= (1&lt;&lt;WGM21); // tryb CTC timera_2<br />        TCCR2 |= (1&lt;&lt;CS22) | (1&lt;&lt;CS20); // preskaler 1024<br />        OCR2 = 77; // ~100Hz<br />        TIMSK |= (1&lt;&lt;OCIE2); //  Compare Match Interrupt Enable<br /><br />        sei(); // globalne zezwolenie na przerwania<br /><br />        while(1)<br />            {<br />                if(flag_100ms)<br />                    {<br />                    // coś wykonaj;<br /><br />                    flag_100ms=0; // zerowanie flagi<br />                    }<br /><br />           } // koniec while<br />} // koniec main<br /><br />ISR(TIMER2_COMP_vect) {<br /><br />    static uint8_t licznik=0; <br /><br />    if(licznik) licznik--; <br />    else { <br />           flag_100ms = 1; // zmienna globalna volatile jako flaga (wystawianie flagi)<br />           licznik= 9; // 100ms dla przerwania co 10ms(100Hz)<br />          }<br />}[/syntax]<br />Jakoś coś takoś. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />....................................................<br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />I jeszcze jak włączać i wyłączać jakiś timer?<br /></div><br />timer:<br />Załączyliśmy ustawiając preskaler <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br />Możemy timer wyłączyć usuwając ustawiony preskaler. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><a href="https://obrazkiforum.atnel.pl/11549/382000adba3e44ffd7d1569791da77e9.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/382000adba3e44ffd7d1569791da77e9.JPG" alt="Obrazek" /></a><br />o tak:<br />[syntax=c]TCCR2 &amp;= ~(   (1&lt;&lt;CS22) | (1&lt;&lt;CS20)  ) ;   // preskaler 1024[/syntax]<br />albo wyłączyć tylko nasze przerwanie :<br />[syntax=c]TIMSK &amp;= ~(1&lt;&lt;OCIE2); // wyzerowanie bitu Compare Match[/syntax]<br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 6 sie 2017, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-08-06T19:41:51+01:00</updated>
<published>2017-08-06T19:36:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193124#p193124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193124#p193124"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193124#p193124"><![CDATA[
Tryb CTC konfigurujesz bardzo prosto. Na początek bierzesz notę procesora i w niej odszukujesz dział danego timera czyli &quot;8-bit Timer/Counter2&quot;, następnie przechodzisz do podrozdziału &quot;Register Description&quot; i tu szukasz rejestru TCCR2 w którym to zawierają się bity m.in. WGM20 i WGM21 czyli &quot;Waveform Generation Mode&quot; po polskiemu tryby pracy licznika. Masz tu tabelkę z rozpisanymi możliwymi stanami owych bitów. Dla każdej kombinacji stanów tych bitów masz opis odpowiadającego im trybu pracy. Szukasz interesujący tryb pracy i sprawdzasz na którym bicie trzeba załączyć 1 (zero Cię nie interesuje ponieważ większość bitów domyślnie jest wyzerowana o czym się możesz dowiedzieć czytając początkowy opis danego rejestru)<br /><a href="https://obrazkiforum.atnel.pl/6265/fcc6686cc024eeb5487a72066b8af410.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/6265/fcc6686cc024eeb5487a72066b8af410.JPG" alt="Obrazek" /></a><br />zapamiętaj jedną rzecz. Jak chcesz ustawić dany bit w rejestrze na jeden to zapis wygląda tak:<br />[syntax=c]NAZWA_REJESTRU |= (1&lt;&lt;NAZWA_BITU1) | (1&lt;&lt;NAZWA_BITU2);[/syntax]<br />natomiast jeśli chcesz wyzerować dany bit to zapis wygląda tak<br />[syntax=c]NAZWA_REJESTRU &amp;= ~((1&lt;&lt;NAZWA_BITU1) | (1&lt;&lt;NAZWA_BITU2));[/syntax]<br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Dziękuje za radę z (0&lt;&lt;CS21), czyli go pominąć bo 0 jest tam domyślnie?<br /></div>dokładnie tak, poza tym jak widzisz powyżej do ustawienia zera jest &quot;&amp;=&quot; plus negacja sumy bitów, a do ustawienia jedynek &quot;|=&quot; i suma bitów, nie da się w jednej linii jednocześnie wyzerować jednych bitów i ustawić 1 na innych chyba że  zapiszesz cały port wartością bitów.<br /><br />Tak więc do ustawienia trybu CTC timera2 należy ustawić tylko bit WGM21 na 1 w rejestrze TCCR2 zgodnie z tabelką:<br /><a href="https://obrazkiforum.atnel.pl/6265/6991d04490ffb8b1b284fa727b694e84.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/6265/6991d04490ffb8b1b284fa727b694e84.JPG" alt="Obrazek" /></a><br />czyli:<br />[syntax=c]TCCR2 |= (1&lt;&lt;WGM21);[/syntax]<br />a następnie do rejestru porównania OCR2 musisz jednorazowo załadować wartość do której licznik ma liczyć.<br />A no i oczywiście trzeba ustawić preskaler ale to już tak samo jak w normal mode.<br />Musisz tylko uważać na noty bo często są błędy w nazewnictwie portów (wynikające zapewne ze sposobu ich tworzenia poprzez wklejanie gotowych bloków opisowych) nota ot atmegi64A którą ja czytałem ma wpisany port porównania dla timera 2 jako OCR0 co jest oczywiście błędne - ma być OCR3 - wynika to z logiki OCR czyli rejestr porównania a zero czy 2 oznacza numer timera czyli timera 0 lub timera 2 (dla timera 1 i 3 masz jeszcze dodatkowo L i H bo liczniki 16 bitowe a rejestry są 8 bitowe więc są dwa bity LOW i HIGHT; a dodatkowo te liczniki mają kilka rejestrów porównania oznaczane dużymi literami alfabetu czyli A, B ...)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 6 sie 2017, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-08-06T12:14:38+01:00</updated>
<published>2017-08-06T12:14:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193120#p193120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193120#p193120"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193120#p193120"><![CDATA[
Daro69  czy mogę prosić o przykład kodu? I jeszcze jak włączać i wyłączać jakiś timer?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 6 sie 2017, o 12:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HomoChemicus]]></name></author>
<updated>2017-08-06T12:02:44+01:00</updated>
<published>2017-08-06T12:02:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193119#p193119</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193119#p193119"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193119#p193119"><![CDATA[
Nawet gdyby było tam 1, to taki zapis nic by nie zmienił, bo nie tak zeruje się bity.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10470">HomoChemicus</a> — 6 sie 2017, o 12:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-08-06T11:16:59+01:00</updated>
<published>2017-08-06T11:16:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193117#p193117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193117#p193117"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193117#p193117"><![CDATA[
witam,<br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Ja nawet chciałem użyć trybu CTC, ale nie wiem jak go skonfigurować <br />Jeśli mogę poprosić o przykład.<br /></div><br />Hmm... to może tak. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />dam do myślenia. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><a href="https://obrazkiforum.atnel.pl/11549/564cfa1aa8bfb9fc39a634326bed9bb1.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/564cfa1aa8bfb9fc39a634326bed9bb1.JPG" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/11549/a6dce64771e6ee60ce8cf1393eec5857.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/a6dce64771e6ee60ce8cf1393eec5857.JPG" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/11549/551bbc95b361bd5d28134350c007ef02.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/551bbc95b361bd5d28134350c007ef02.JPG" alt="Obrazek" /></a><br /><a href="https://obrazkiforum.atnel.pl/11549/41fde75a2153a13abe8e97e8597b532a.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/41fde75a2153a13abe8e97e8597b532a.JPG" alt="Obrazek" /></a><br /><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: 2 minutach ]</span></strong><br /><br />pozostaje jeszcze:<br />ISR(TIMER2_COMP_vect) {<br />.....<br />}<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 6 sie 2017, o 11:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-08-06T11:01:23+01:00</updated>
<published>2017-08-06T11:01:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193115#p193115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193115#p193115"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193115#p193115"><![CDATA[
Dziękuje za radę z (0&lt;&lt;CS21), czyli go pominąć bo 0 jest tam domyślnie?<br /><br />Ja nawet chciałem użyć trybu CTC, ale nie wiem jak go skonfigurować <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Jeśli mogę poprosić o przykład.<br /><br />Timerra_1 używam do czegoś innego i nie chciał bym mieszać, dla mnie to ciężkie tematy jeszcze są.<br />Chętnie akurat nauczyłbym się korzystać z trybu CTC.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 6 sie 2017, o 11:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-08-05T20:34:54+01:00</updated>
<published>2017-08-05T20:34:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193103#p193103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193103#p193103"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193103#p193103"><![CDATA[
witam,<br />Działa tak jak kolega 'xentis' opisał.<br />Poza tym, czy świadomie załączasz wspomniany bit CS21 ?<br /><a href="https://obrazkiforum.atnel.pl/11549/c4b437dc9a6816f769bc6c082331fd9c.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/c4b437dc9a6816f769bc6c082331fd9c.JPG" alt="Obrazek" /></a><br /><br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Została mi ostatnia funkcja do dodania. Będę potrzebował przerwania co ok. 100ms.<br />Został mi tylko timer2 z którego mógłbym zrobić 10ms i później zmienną robiącą za licznik zwiększyć 10x<br /></div><br />możesz także wykorzystać licznik pracującego timera_1. <br />Ustawiałeś licznik na ~200 Hz. Możesz wpisać by w przerwaniu od przepełnienia 'ICR' zliczał zmienną statyczną i wystawiał flagę,<br />albo flaga jako zmienna volatile i dekrementowana w przerwaniu od 19 do 0 ...<br />( w przerwaniu :jeżeli flaga ma wartość , to flaga--; <br />a w pętli : jeżeli <strong>!</strong>flaga to coś wykonaj i flaga=19.  )<br />Nie będzie to precyzyjne 10Hz (100ms) ale zbliżone do założeń.<br />taki pomysł. <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=11549">Daro69</a> — 5 sie 2017, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-08-05T16:31:21+01:00</updated>
<published>2017-08-05T16:31:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193092#p193092</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193092#p193092"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193092#p193092"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A może licznik timera liczy od 1 do 256?<br /></div> Licznik liczy od 0 do 255 czyli ma 256 tyknięć bo zero też się liczy.<br /><br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />I czy na pewno potrzebuję ustawić liczenie od 177? &quot;AVR Timer Kalkulator&quot; Pana Mirka proponuje 178<br /></div><br />Powinieneś wpisać zgodnie ze wzorem 256-(FCPU/prskaler/f_wynikowe)) czyli wychodzi około 178 i taką wartością musisz ładować rejestr TCNT2  - niestety częstotliwość będzie generowana z niewielkim błędem wynikającym z niecałkowitego podziału.<br /><br />[syntax=c]TCCR2 |=(1&lt;&lt;CS22) | (0&lt;&lt;CS21) | (1&lt;&lt; CS20);  // 1024[/syntax] a w jakim celu masz tu wpisane (0&lt;&lt;CS21)  bo taki zapis przy dodawaniu nie wnosi absolutnie nic - chyba że chcesz mieć &quot;dla oka&quot;<br /><br />Mała rada - jeśli jest dostępny to dla takich zastosowań wybieraj tryb CTC - zaoszczędzasz w ten sposób kilka czasem bardzo cennych taktów procesora bo tylko raz na początku wpisujesz wartość do rejestru porównania, a w trybie normal co każde przerwanie musisz przypisywać obliczoną wartość do rejestru TCNT2, przez co wydłużasz czas trwania przerwania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 5 sie 2017, o 16:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-08-04T18:33:28+01:00</updated>
<published>2017-08-04T18:33:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193060#p193060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193060#p193060"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=193060#p193060"><![CDATA[
Została mi ostatnia funkcja do dodania. Będę potrzebował przerwania co ok. 100ms.<br />Został mi tylko timer2 z którego mógłbym zrobić 10ms i później zmienną robiącą za licznik zwiększyć 10x<br /><br />8 000 000/1024/78 = 100hz = 10ms   <br /><br />Domyślnie licznik timera2 liczy od 0 do 255?, ale z książki Pana Mirka wiem że mogę ustawić rejestr TCNT2? żeby nie liczył od 0 tylko od 177, w tedy będę miał 78 zliczeń.<br />I za każdym razem gdy wystąpi przerwanie muszę wpisać do rejestru TCNT2 cyfrę 177<br /><br />Proszę o sprawdzenie czy dobrze rozumuję i czy dobrze to ustawiam czy nie robię jakiegoś błędu.<br />I czy na pewno potrzebuję ustawić liczenie od 177? &quot;AVR Timer Kalkulator&quot; Pana Mirka proponuje 178<br />A może licznik timera liczy od 1 do 256?<br /><br />[syntax=c]volatile uint8_t FLAGA, ZLICZANIE2;<br />#define MAX_ZLICZANIE2 10<br /><br /><br />//w int main<br />TCCR2 |=(1&lt;&lt;CS22) | (0&lt;&lt;CS21) | (1&lt;&lt; CS20);  // 1024<br />TIMSK |= (1&lt;&lt;TOIE2);<br /><br /><br /><br />ISR(TIMER2_OVF_vect)<br />{<br />        ZLICZANIE2=ZLICZANIE2+1;<br />        if (ZLICZANIE2 &gt;= MAX_ZLICZANIE2)<br />{<br />FLAGA = 1;<br />ZLICZANIE2 = 0;<br />}<br /><br />        TCNT2=178;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 4 sie 2017, o 18:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-06-20T16:56:21+01:00</updated>
<published>2017-06-20T16:56:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190992#p190992</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190992#p190992"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190992#p190992"><![CDATA[
Np. Procesor jest taktowany np. 8MH -&gt; 8 000 000 HZ .<br />w naszym kodzie - &quot;TYM POWYŻEJ&quot;,<br />możemy ustawić preskaler na następujące wartości.<br />przedostatnia cyfra w CSXx - czyli X oznacza timer a ostatnia nr bitu CS__ w rejestrze.<br />przyjrzyj się , wcześniej użyłem skrótu z numerami CS'ów i wartością preskalera.&quot;// preskalery CS. załączone -   0=1,   1=8,  0 i 1=64, 2=256, 2 i 0=1024&quot;<br />[syntax=c]//DLA TIMERA 1<br />TCCR1B | = (1&lt;&lt;CS10); // preskaler 1                      (załączony 0 = 1 preskaler)<br />//lub<br />TCCR1B | = (1&lt;&lt;CS11); // preskaler 8                      (załączony 1 = 8 preskaler)<br />//lub<br />TCCR1B | = (1&lt;&lt;CS11) | (1&lt;&lt;CS10); // preskaler 64  (załączony 0 i 1 = 64 preskaler)<br />.......itd[/syntax]<br />wybierzmy sobie np. preskaler 8 z linijki nr 4.<br />do timera dotrze co ósmy takt, czyli F_CPU / 8.... na razie mamy 1MHz.<br />który będzie za każdym tyknięciem w naszym przypadku inkrementował licznik od 0 -włącznie-, do naszej wartości ICR'a 10000.<br />czyli 10001 tyknięć. i teraz się &quot;przekręci licznik&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. czyli w tym przypadku F_CPU / 8 / 10001 = ~99,99 Hz (częstotliwość PWM). <br />interesuje Ciebie częstotliwość od 100 do 200 Hz.<br />jeżeli zmniejszymy zakres zliczania timera do 5000 ICR1=5000; to o połowę częściej będzie się &quot;przekręcał licznik&quot;.<br />czyli uzyskamy F_CPU / 8 / 5001 otrzymamy na wyjściu sygnał o częstotliwości ~199,98 Hz. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />ustawiając OCR1A w zakresie od 0 do 5000, będziemy regulować wypełnienie tego sygnału. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Mam nadzieję że rozbłysło. <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=11549">Daro69</a> — 20 cze 2017, o 16:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-06-20T12:42:30+01:00</updated>
<published>2017-06-20T12:42:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190979#p190979</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190979#p190979"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190979#p190979"><![CDATA[
Napisz mi jeszcze proszę, jakoś inaczej/innymi słowami jak preskaler się ustawia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 20 cze 2017, o 12:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-06-19T19:03:22+01:00</updated>
<published>2017-06-19T19:03:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190946#p190946</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190946#p190946"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190946#p190946"><![CDATA[
<div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Dziękuję za kod, oczywiście pięknie działa.<br /></div><br />A proszę  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> .<br /> <div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Czy te 256 to tylko dla 8bit pwm?<br /></div><br />Też..., dla ośmio bitowego timera, lub dla timera pojemniejszego ale zliczającego np. od 0 do 255(w wielu timerach można to ustawiać) .<br />W powyższym przykładzie określają to wartości w rejestracg ICR liczników 16_to bitowych.<br /> linijka 32 i 33. przykladowe 10000. Oczywiście OCR'y muszą być mniejsze od ICR'ów.<br />A wyliczyć częstotliwość można ze wzoru zamieszczonego w DS'ie. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W tym wypadku interesuje nas :<br />20.9.3. Fast PWM Mode <br /><a href="https://obrazkiforum.atnel.pl/11549/71e083e4849f9ff00d750f95d07e7b4f.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/71e083e4849f9ff00d750f95d07e7b4f.JPG" alt="Obrazek" /></a><br />Czyli w tym wypadku:<br />&quot; Fpwm =F_CPU / preskaler / (10000+1) &quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 19 cze 2017, o 19:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-06-19T16:46:16+01:00</updated>
<published>2017-06-19T16:46:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190934#p190934</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190934#p190934"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190934#p190934"><![CDATA[
Przepraszam że znowu się nie odzywałem, ale tak mnie zasypali robotą że dopiero teraz znalazłem chwilę na ten projekt.<br />Jeśli chodzi o wyjścia i timery to już widzę swój błąd, wykorzystać oczywiście chcę te zaznaczone na zielone.<br /><br />Dziękuję za kod, oczywiście pięknie działa.<br /><br />[syntax=c]// preskalery CS. załączone -   0=1,   1=8,  0 i 1=64, 2=256, 2 i 0=1024<br />TCCR1B |=   (1&lt;&lt;CS10) | (1&lt;&lt;11) | (1&lt;&lt;12); // T1<br />TCCR3B |=   (1&lt;&lt;CS30) | (1&lt;&lt;31) | (1&lt;&lt;32); // T3[/syntax]<br />Potrzebuję rozjaśnienia  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> rozumiem że to do tabelki &quot;Table 20-6&quot; z manulala do atmega64a, ale nie wychodzi mi.<br />Czy wzór na częstotliwość pwm  z książki Pana Mirka zawsze jest Fpwm=F_CPU / preskaler / 256 ?<br />Czy te 256 to tylko dla 8bit pwm?<br /><br />Częstotliwość jaka mi pasuje jest w zakresie 100-200hz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 19 cze 2017, o 16:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-06-04T19:25:56+01:00</updated>
<published>2017-06-04T19:25:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190287#p190287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190287#p190287"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190287#p190287"><![CDATA[
Dodam jeszcze informacyjnie, skoro rozpatrujemy ATMEGA_64_A.<br /><div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />Ale chciałbym korzystać dodatkowo z 6 sprzętowych wyjść pwm.<br />Więc będę musiał zabrać timer0 którego wcześniej używałem i razem z timerem 2 użyć do obsługi PWM. Bo tylko one w tym procku mają obsługe PWM, prawda?<br /></div><br />T0  i T2 nie mają 6_kanałów sprzętowego PWM.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br />Sprzętowe wyjścia T0 i T2 zaznaczyłem na czerwono, a dla T1 i T3 na zielono.<br /><a href="https://obrazkiforum.atnel.pl/11549/fa4fd7e4aa78c58504ba9258f52de14b.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11549/fa4fd7e4aa78c58504ba9258f52de14b.JPG" alt="Obrazek" /></a><br />pozdrawiam  <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=11549">Daro69</a> — 4 cze 2017, o 19:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-06-03T18:57:25+01:00</updated>
<published>2017-06-03T18:57:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190244#p190244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190244#p190244"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190244#p190244"><![CDATA[
hmm...<br />zerknąłem na ds'a i widzę że ma na timerze_1 OC1A, OC1B, OC1C oraz na timerze_3 OC3A, OC3B, OC3C .<br /><br />nie bawiłem się jeszcze tą atmesią, ale chyba trzeba by ustawić.<br />[syntax=c]//tryb 14 f_PWM T1<br />TCCR1A |= (1&lt;&lt;WGM11);<br />TCCR1B |= (1&lt;&lt;WGM12) | (1&lt;&lt;WGM13);<br /><br />//tryb 14 f_PWM T3<br />TCCR3A |= (1&lt;&lt;WGM31);<br />TCCR3B |= (1&lt;&lt;WGM32) | (1&lt;&lt;WGM33);<br /><br />//Clear OCnA/OCnB/OCnC on compare match (set output to low level) T1.<br />TCCR1A |= (1&lt;&lt;COM1A1) | (1&lt;&lt;COM1B1) |(1&lt;&lt;COM1C1) ; <br /><br />//Clear OCnA/OCnB/OCnC on compare match (set output to low level) T3.<br />TCCR3A |= (1&lt;&lt;COM3A1) | (1&lt;&lt;COM3B1) |(1&lt;&lt;COM3C1) ;<br /><br />// preskalery CS. załączone -   0=1,   1=8,  0 i 1=64, 2=256, 2 i 0=1024<br />TCCR1B |=  //   (1&lt;&lt;CS10) | (1&lt;&lt;11) | (1&lt;&lt;12); // T1<br />TCCR3B |=  //   (1&lt;&lt;CS30) | (1&lt;&lt;31) | (1&lt;&lt;32); // T3<br /><br />// zezwolenia przerwań Output Compare A,B,C Match Interrupt Enable<br />//....T1<br />TIMSK |= (1&lt;&lt;OCIE1A) | (1&lt;&lt;OCIE1B);<br />ETIMSK |= (1&lt;&lt;OCIE1C);<br /><br />//....T3<br />ETIMSK |=(1&lt;&lt;OCIE3A) | (1&lt;&lt;OCIE3B) | (1&lt;&lt;OCIE3C);<br /><br />//ustawienia wyjsc<br />DDRB |=(1&lt;&lt;PB5) | (1&lt;&lt;PB6) | (1&lt;&lt;PB7); // wyjścia dla OC1_A_B_C.<br />DDRE |=(1&lt;&lt;PE3) | (1&lt;&lt;PE4) | (1&lt;&lt;PE5); // wyjścia dla OC3_A_B_C.<br /><br />// ustawienia top licznika<br />ICR1=10000; // to trzeba wyliczac<br />ICR3=10000;<br /><br />//oczywiscie jeszcze<br /><br />sei();<br /><br />//przykladowe wartosci wypelnienia<br />OCR1A= 1000;<br />OCR1B= 2000;<br />OCR1C= 3000;<br />OCR3A= 4000;<br />OCR3B= 5000;<br />OCR3C= 6000;[/syntax]<br /><br />i chyba tyle dla T1 i T3. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />PCINT'y sprawdzało się programowo bo zgłaszane były wszystkie. w przerwaniu trzeba sprawdzać z którego pinu.<br />Natomiast co do INT'ow to pierwszeństwo ma ten z mniejszym numerem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 3 cze 2017, o 18:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-06-03T17:04:34+01:00</updated>
<published>2017-06-03T17:04:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190239#p190239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190239#p190239"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=190239#p190239"><![CDATA[
Znowu potrzebuje pomocy, będzie to rozwinięcie tego samego projektu, Ale chciałbym korzystać dodatkowo z 6 sprzętowych wyjść pwm.<br />Więc będę musiał zabrać timer0 którego wcześniej używałem i razem z timerem 2 użyć do obsługi PWM. Bo tylko one w tym procku mają obsługe PWM, prawda?<br /><br />Jest nowa płytka, procesorek ten sam atmega64a. Mógłbym użyć któregoś timera 16bit zamiast wcześniejszego i przeliczyć czasy.<br />Ale tym razem wejścia od dwóch kontrolek są podpięte też do pinów pcint. Nie wiem którego rozwiązania użyć.<br />Bo w pierwszym miałem tylko jedno przerwanie a w rozwiązaniu z pcint będą dwa.<br /><br />Jeśli lepiej użyć pierwszego rozwiązania tak jak było wcześniej, to nie umiem ustawić timera 16bit <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> nie radzę sobie z datasheetem a jeśli drugiego to poprosiłbym o przykład jak użyć.<br />I o wyjaśnienie sytuacji kiedy na dwóch wejściach pcint w tym samym czasie pojawia się sygnał. Przerwanie od którego wejścia wykona się najpierw?<br /><br />ps. Trochę gorączkuje i nie pełno sprytny jestem. Proszę mocno na mnie nie krzyczeć <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=13513">55555</a> — 3 cze 2017, o 17:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2017-05-05T19:42:35+01:00</updated>
<published>2017-05-05T19:42:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188506#p188506</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188506#p188506"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188506#p188506"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> to dobrze, że już wiesz co było praprzyczyną, bo niektórzy w takich sytuacjach twierdzą, że kompilator jest uszkodzony i błędnie generuje kod <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> a prawda jest taka, że błąd był po stronie programisty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 5 maja 2017, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-05-05T19:04:33+01:00</updated>
<published>2017-05-05T19:04:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188502#p188502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188502#p188502"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188502#p188502"><![CDATA[
Dokładnie tak było <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=13513">55555</a> — 5 maja 2017, o 19:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-05-04T05:43:25+01:00</updated>
<published>2017-05-04T05:43:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188372#p188372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188372#p188372"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188372#p188372"><![CDATA[
<div class="quotetitle">55555 napisał(a):</div><div class="quotecontent"><br />jest jakaś różnica między zapisem ZLICZANIE_L+1 a ZLICZANIE_L++ dla kompilatora?<br />Jak użyję inkrementacji &quot;++&quot; dostaję warning &quot;operation on ‘ZLICZANIE_L’ may be undefined&quot;<br /></div><br />Różnica praktycznie żadna - jeśli się mylę niech ktoś mnie poprawi - generalnie masz 3 możliwe zapisy:<br /><br />[syntax=c]ZLICZANIE_L=ZLICZANIE_L+1<br />ZLICZANIE_L+=1<br />ZLICZANIE_L++[/syntax]<br />Wszystkie powyższe zapisy zwiększają zmienną ZLICZANIE_L o 1<br />Co do warninga to nie próbowałeś przypadkiem użyć inkrementacji razem z przypisaniem (ZLICZANIE_L=ZLICZANIE_L++)? Bo taki twór jest niewłaściwy...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 4 maja 2017, o 05:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2017-05-03T14:57:40+01:00</updated>
<published>2017-05-03T14:57:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188318#p188318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188318#p188318"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188318#p188318"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 3 maja 2017, o 14:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[55555]]></name></author>
<updated>2017-05-03T14:51:09+01:00</updated>
<published>2017-05-03T14:51:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188317#p188317</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188317#p188317"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188317#p188317"><![CDATA[
Przepraszam że się nie odzywałem miałem trochę problemów osobistych.<br /><br />Kontrolki mrugają tak że przez 600ms są zapalone i przez 300ms są zgaszone.<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">ISR(TIMER0_OVF_vect)<br />{<br /><br />   if (!WEJSCIE_L)<br />   {<br />      ZLICZANIE_L=ZLICZANIE_L+1;<br />      if (ZLICZANIE_L &gt;= MAX_ZLICZANIE)<br />      {<br />         FLAGA_MRUGA_L=0;<br />         ZLICZANIE_L=MAX_ZLICZANIE;<br />      }<br />   }<br /><br /><br />   if (!IN_WEJSCIE_P)<br />   {<br />      ZLICZANIE_P=ZLICZANIE_P+1;<br />      if (ZLICZANIE_P &gt;= MAX_ZLICZANIE)<br />      {<br />         FLAGA_MRUGA_P=0;<br />         ZLICZANIE_P=MAX_ZLICZANIE;<br />      }<br />   }<br />}</div><br />Flagę zostawiam bo użyję jej jeszcze do innych rzeczy.<br /><br />W pętli głównej będzie<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">      if (WEJSCIE_L)<br />      {<br />         ZLICZANIE_L=0;<br />         FLAGA_MRUGA_L=1;</div><br />i analogicznie dla prawego wejścia<br /><br />zmienne globalne<br />volatile uint8_t FLAGA_MRUGA_L,FLAGA_MRUGA_P, ZLICZANIE_L, ZLICZANIE_P;<br /><br />i<br />#define MAX_ZLICZANIE 10   //dobrze policzyłem?<br /><br />jest jakaś różnica  między zapisem ZLICZANIE_L+1 a ZLICZANIE_L++ dla kompilatora?<br />Jak użyję inkrementacji &quot;++&quot; dostaję warning &quot;operation on ‘ZLICZANIE_L’ may be undefined&quot;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13513">55555</a> — 3 maja 2017, o 14:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-04-28T12:47:58+01:00</updated>
<published>2017-04-28T12:47:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188049#p188049</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188049#p188049"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188049#p188049"><![CDATA[
o.. Tu kolega &quot;riddik&quot; dobrze zauważył - <br />poprawiam i w moim kawałku bo nie zabezpieczyłem podobnej sytuacji &quot; inkrementacja&quot;. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />dopisuję w tamtym kodzie z wykrzyknikami. <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=11549">Daro69</a> — 28 kwi 2017, o 12:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[riddik]]></name></author>
<updated>2017-04-28T12:36:24+01:00</updated>
<published>2017-04-28T12:36:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188048#p188048</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188048#p188048"/>
<title type="html"><![CDATA[Re: [c] Mruganie na wejściu = 1 na wyjściu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18269&amp;p=188048#p188048"><![CDATA[
Do 55555. Zwróć uwagę że inkrementacja zmiennej zliczanie spowoduje przekręcenie licznika i ponownie zliczanie będzie mniejsze od 29.<br />Jak już nie chcesz wykorzystać INT0 to w pętli głównej za każdym obiegiem sprawdzaj stan wejścia i wstaw <br />[syntax=c]if(wejscie)<br />   zliczanie = 29;<br />if(zliczanie)<br />   FLAGA_MRUGA=1;<br />else<br />   FLAGA_MRUGA=0;[/syntax]<br />W przerwaniu dekrementuj zmienną volatile zliczanie sprawdzając uprzednio czy większa od zera.<br />[syntax=c]ISR(TIMER0_OVF_vect)<br />{<br />static uint8_t zliczanie=29;<br />if(zliczanie) zliczanie--;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16099">riddik</a> — 28 kwi 2017, o 12:36</p><hr />
]]></content>
</entry>
</feed>