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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-28T12:30:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14391&amp;mode</id>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2016-08-28T12:30:32+01:00</updated>
<published>2016-08-28T12:30:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=167324#p167324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=167324#p167324"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=167324#p167324"><![CDATA[
Masz wykorzystanych kilka procedur obsługi przerwań, jeszcze pytanie jak długo się one wszystkie wykonują. Bo może zaistnieć sytuacja że wykonywanie się przerwań na tyle zajmuje procesor że ten bardzo powoli wykonuje pętle główną stąd rozjechanie czasów przeliczanych przez _delay_ms i _delay_us. Może rozwiązaniem będzie wymiana kwarca na 16Mhz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 28 sie 2016, o 12:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-04T10:06:15+01:00</updated>
<published>2016-02-04T10:06:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152614#p152614</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152614#p152614"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152614#p152614"><![CDATA[
<div class="quotetitle">Robert_C napisał(a):</div><div class="quotecontent"><br />Dopiero zaczynam zabawę z C więc z góry zastrzegam, że mogę się mylić. Ale z tego co czytałem, jeżeli używamy przerwań to funkcja _delay_ms() może nie być dokładna i w czasie opóźnienia należy uwzględnić obsługę przerwań. Dlatego przy konieczności utrzymania dokładnych zależności czasowych należy posłużyć się timerami.<br /></div><br /><br />Witam.<br />Problem wygląda tak. Program obsługuje w pętli while() wiele eventów od różnych urządzeń, w tym od czujnika wilgotności DHT22. Odczyt wilgotności jest prosty, a funkcja dedykowana temu zadaniu nie wymaga powoływania żadnych timerów. Zdziwiła mnie  dlatego sytuacja, że gdy &quot;podkręciłem&quot; TIMER2 (8-bit) z 200 do 400Hz (multipleksowanie 6 lamp VFD) - czujnik przestał odczytywać wilgotność i temperaturę. Po zmniejszeniu częstości odczyty powracają natychmiast. Wywnioskowałem więc, że zmiana częstości TIMERA2 wpływa jakoś &quot;ogólnie&quot; na uC, program (?) i liczne _delay_ms i _delay_us, którymi najeżona jest biblioteka do obsługi tego czujnika, przestają &quot;trzymać&quot; czasy potrzebne do komunikacji. Innego wytłumaczenia nie widzę. Co do zastąpienia tych czasokresów timerami programowymi to nie wypali, gdyż rozjeżdżają się one bardzo na skutek przeładowania pętli głównej programu eventami (które nie blokują teoretycznie). Może ktoś z Kolegów pochyli się nad tematem i pomoże w rozwiązaniu zagadki.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 4 lut 2016, o 10:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_C]]></name></author>
<updated>2016-02-04T09:38:20+01:00</updated>
<published>2016-02-04T09:38:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152612#p152612</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152612#p152612"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152612#p152612"><![CDATA[
Witam.<br /><br />Dopiero zaczynam zabawę z C więc z góry zastrzegam, że mogę się mylić. Ale z tego co czytałem, jeżeli używamy przerwań to funkcja  _delay_ms() może nie być dokładna i w czasie opóźnienia należy uwzględnić obsługę przerwań. Dlatego przy konieczności utrzymania dokładnych zależności czasowych należy posłużyć się timerami.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11658">Robert_C</a> — 4 lut 2016, o 09:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T23:13:34+01:00</updated>
<published>2016-02-03T23:13:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152594#p152594</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152594#p152594"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152594#p152594"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Przerwania od Timera2 wywołują się co 5ms. Jeśli masz nie więcej niż 4 wyświetlacze to wrzuć multipleksowanie do przerwania od tego timera. Na jeden wyświetlacz przypadnie 50Hz.<br /><br />Kilka timerów programowych w przerwaniu nie zaszkodzi multipleksowaniu jak i multipleksowanie nie zaszkodzi timerom. Jedno i drugie powinno dobrze działać.<br /></div><br /><br />Dziękuję. Tak miałem zrobione dla 4 wyświetlaczy LED i wyglądało dobrze. Teraz jest 6 lamp VFD (IV-11) i wygląda źle. Doświadczalnie widzę, że potrzeba ok. 400Hz. Próbowałem zmniejszyć podstawę dla timerów programowych do 2.5ms i multipleksowanie ładnie wygląda, ale z niezrozumiałych dla mnie przyczyn przestaje działać czujnik wilgotności DHT22, który nie ma związku z timerami (tak mi się wydaje). Toleruje on częstotliwość do 200Hz i tyle - poźniej wyświetla 0. W bibliotece dla niego są liczne _delay_ms i _delay_us, ale wg mnie np. _delay_ms(100) znaczy zawsze to samo (chyba, że się mylę). Ostatecznie zaakceptuję multiplexowanie 400-600Hz bez czujnika DHT22, ale nie lubię niewiedzieć dlaczego nie działa.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-03T22:33:36+01:00</updated>
<published>2016-02-03T22:33:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152593#p152593</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152593#p152593"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152593#p152593"><![CDATA[
Przerwania od Timera2 wywołują się co 5ms. Jeśli masz nie więcej niż 4 wyświetlacze to wrzuć multipleksowanie do przerwania od tego timera. Na jeden wyświetlacz przypadnie 50Hz.<br /><br />Kilka timerów programowych w przerwaniu nie zaszkodzi multipleksowaniu jak i multipleksowanie nie zaszkodzi timerom. Jedno i drugie powinno dobrze działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 lut 2016, o 22:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T21:58:17+01:00</updated>
<published>2016-02-03T21:58:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152586#p152586</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152586#p152586"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152586#p152586"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Przerwania od przepełnienia mały być tak przy okazji. Głównym zadaniem Timera1 ma być liczenie długości impulsów. A to oznacza, że nie możesz przypisywać żadnej wartości do TCNT1. Licznik ma wciąż liczyć od 0 do 65535. Nie możesz skracać jego cyklu bo pomiar długości impulsów przestanie działać poprawnie.<br /><br />Przy taktowaniu 11059200Hz i preskalerze równym 8 przerwania od przepełnienia zgłaszane będą z częstotliwością ok. 21Hz (przerwanie co ok. 47ms). 21Hz to za mało do multipleksowania.<br /></div><br />Pięknie dziękuję. Sprawdziłem na wyświetlaczu i rzeczywiście jest jak napisałeś. Bez wpisywania wartości do licznika przerwanie jest co ok 47ms. Działa także podczerwień. Do multipleksowania za mało niestety. Czy masz może pomysł jak to multipleksowanie rozwiązać? W programie działają także dwa timery 8-bitowe i może w nich drzemie potencjał?<br /><br />TIMER0 - tryb fast PWM generuje sygnał PWM dla przetwornicy step-up (30-60V):<br />[syntax=c]// ustawienia timera sprzętowego wybranego jako generator PWM dla przetwornicy step_up 30-60V PD5<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 = 8<br />//OCR0 = 210;  // im mniej tym niższe napięcie 200-43V, 210-52V, 220-63V[/syntax]<br /><br />TIMER2 - tryb CTC jest podstawą dla timerów programowych:<br />[syntax=c]TCCR2  |= (1&lt;&lt;WGM21);                      // tryb: CTC<br />TCCR2  |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);   // preskaler: 1024<br />//OCR2  = 108;                               // rozdzielczosć: 10ms (100Hz)<br />OCR2  = 53;                                  // rozdzielczosć: 5ms (200Hz)<br />//OCR2  = 17;                               // rozdzielczosć: 1.7ms (600Hz)<br />TIMSK  |= (1&lt;&lt;OCIE2);                  // odblokowanie przerwania CompareMatch[/syntax]<br /><br />Może widzisz możliwość wyciśnięcia z nich częstości &quot;multipleksowej&quot;?<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 21:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-03T22:16:25+01:00</updated>
<published>2016-02-03T20:16:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152567#p152567</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152567#p152567"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152567#p152567"><![CDATA[
Przerwania od przepełnienia miały być tak przy okazji. Głównym zadaniem Timera1 ma być liczenie długości impulsów. A to oznacza, że nie możesz przypisywać żadnej wartości do TCNT1. Licznik ma wciąż liczyć od 0 do 65535. Nie możesz skracać jego cyklu bo pomiar długości impulsów przestanie działać poprawnie.<br /><br />Przy taktowaniu 11059200Hz i preskalerze równym 8 przerwania od przepełnienia zgłaszane będą z częstotliwością ok. 21Hz (przerwanie co ok. 47ms). 21Hz to za mało do multipleksowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 lut 2016, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T18:21:39+01:00</updated>
<published>2016-02-03T18:21:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152552#p152552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152552#p152552"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152552#p152552"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Trzeba by obliczyć jaka będzie częstotliwość wywołań ww. przerwania. Ale obawiam się, że przy tak dużym dodatkowym podziale (65536), częstotliwość może być za mała do multipleksowania.<br /></div><br />zrobiłem tak:<br />[syntax=c]/* Timer1 - Normal */<br />TIMSK = (1&lt;&lt;TOIE1);      // zezwalamy na przerwanie Timera1 od przepełnienia licznika<br />TCNT1 = 63233;<br />TCCR1B |= (1&lt;&lt;CS11);// ustawienie preskalera dla Timer1 = 8[/syntax]<br /><br />[syntax=c]ISR(TIMER1_OVF_vect){<br />TCNT1 = 63233;<br />...;}[/syntax]<br />wg:<br /><a href="https://obrazkiforum.atnel.pl/9310/1c57a2c6f3d29a3c20a01950054950fa.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9310/1c57a2c6f3d29a3c20a01950054950fa.jpg" alt="Obrazek" /></a><br /><br />Multipleksowanie działa dobrze, ale... nadal bark podczerwieni - nie działa przerwanie ICP Timera1 (IR_UNI).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 18:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-03T17:50:18+01:00</updated>
<published>2016-02-03T17:50:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152545#p152545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152545#p152545"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152545#p152545"><![CDATA[
Wydaje mi się, że gdy licznik się przekręci, czyli zmieni wartość z 65535 na 0, zostanie ustawiona flaga przepełnienia. Jeśli odblokowane zostaną przerwania od przepełnienia (Overflow) to to przerwanie powinno się normalnie wywoływać (Timer1_OVF_vect). Wtedy multipleksowanie można by obsłużyć za pomocą tego przerwania.<br /><br />Trzeba by obliczyć jaka będzie częstotliwość wywołań ww. przerwania. Ale obawiam się, że przy tak dużym dodatkowym podziale (65536), częstotliwość może być za mała do multipleksowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 lut 2016, o 17:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T17:31:47+01:00</updated>
<published>2016-02-03T17:31:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152543#p152543</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152543#p152543"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152543#p152543"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />W trybie CTC licznik nie kręci się od 0 do 65535 tylko od 0 do wartości jaka jest wpisana do OCR1A (0...OCR1A). Już po tym widać, że skrócenie cyklu zliczania TCNT1 spowoduje błędny pomiar długości impulsów.<br /></div><br /><br />Dziękuję. Reasumując nie da się jednocześnie multipleksować wyświetlacza LED (CTC) i obsługiwać podczerwieni (ICP) z użyciem Timera1?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 17:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-02-03T17:22:26+01:00</updated>
<published>2016-02-03T17:22:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152542#p152542</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152542#p152542"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152542#p152542"><![CDATA[
W trybie przechwytywania licznik TCNT1 kręci się od zera do swej wartości maksymalnej czyli 65535. Po uzyskaniu tej wartości przekręca się i znów liczy w przedziale 0...65535.<br />Odpowiednie zbocze podane na pin ICP1 powoduje przepisanie wartości licznika TCNT1 do rejestru ICR. Skoro licznik liczy od 0 do 65535 to wartości z tego przedziału zostaną wpisane do ICR.<br /><br />W trybie CTC licznik nie kręci się od 0 do 65535 tylko od 0 do wartości jaka jest wpisana do OCR1A (0...OCR1A). Już po tym widać, że skrócenie cyklu zliczania TCNT1 spowoduje błędny pomiar długości impulsów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 3 lut 2016, o 17:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T15:15:55+01:00</updated>
<published>2016-02-03T15:15:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152534#p152534</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152534#p152534"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152534#p152534"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />OCR1A = 2303;<br /><br />i nigdy nie zlicza dalej<br /></div><br /><br />Czy jest więc możliwe korzystanie z przerwania ICP Timera1 (IR_UNI) i jednoczesna jego praca w trybie CTC (multipleksowanie LED)? Jeżeli tak to podpowiedzcie proszę jak to zrobić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 15:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T11:45:56+01:00</updated>
<published>2016-02-03T11:45:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152521#p152521</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152521#p152521"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152521#p152521"><![CDATA[
Wpisuję wartość OCR1A odpowiednio do częstości, którą chcę uzyskać i timer liczy &quot;non-stop&quot; 0-&gt;CTC-&gt;0-&gt;CTC itd. Trochę się pogubiłem. Wszystko działało dobrze gdy do obsługi multipleksowania i timerów programowych używałem timera2 - OCR2 ustawione 1x:<br />[syntax=c]void SoftTimer_init(void){<br />// ustawienia timera sprzętowego wybranego jako podstawa czasu timerów programowych dla &quot;Dawcy czasu&quot; (100Hz) TCCR2<br />// wykorzystany również do multipleksowania 7-segmentowych wyświetlaczy LED (200Hz)<br />TCCR2  |= (1&lt;&lt;WGM21);                      // tryb: CTC<br />TCCR2  |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);   // preskaler: 1024<br />OCR2  = 53;                               // rozdzielczosć: 5ms (200Hz)<br />//OCR2  = 35;                               // rozdzielczosć: 3.33ms (300Hz)<br />//OCR2  = 26;                               // rozdzielczosć: 2.5ms (400Hz)<br />TIMSK  |= (1&lt;&lt;OCIE2);                      // odblokowanie przerwania CompareMatch<br />}[/syntax]<br /><br />Postanowiłem rozdzielić multipleksowanie od timerów programowych i przeniosłem je do Timera1. Multipleksowanie działa nadal, ale &quot;utraciłem&quot; podczerwień. Co robię źle?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 11:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-03T11:28:28+01:00</updated>
<published>2016-02-03T11:28:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152520#p152520</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152520#p152520"/>
<title type="html"><![CDATA[Re: Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152520#p152520"><![CDATA[
No weź chwileczkę sam pomyśl .... no pomyśl .... jak to może działać, skoro licznik jest resetowany przez OCR<br /><br />OCR1A = 2303;<br /><br />i nigdy nie zlicza dalej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 lut 2016, o 11:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2016-02-03T10:43:13+01:00</updated>
<published>2016-02-03T10:43:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152515#p152515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152515#p152515"/>
<title type="html"><![CDATA[Timer1 - dwa tryby]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14391&amp;p=152515#p152515"><![CDATA[
Witam!<br /><br />Próbuję wykorzystać Timer1 uC Atmega32 do pracy w dwóch zastosowaniach jednocześnie. Każde z osobna działa prawidłowo (obsługa IR) i multipleksowanie LED, ale łącznie już nie chcą, tzn. działa multipleksowanie, a obsługa IR nie. Czy te dwa tryby pracy mogą współdziałać?<br /><br />1. Biblioteka IR_UNI:<br />[syntax=c]// KONFIGURACJA PRACY PRZERWANIA ICP I TIMERA1<br />TCCR1B |= (1&lt;&lt;CS11);// ustawienie preskalera dla Timer1 = 8<br />TCCR1B &amp;= ~(1&lt;&lt;ICES1);// reakcja na zbocze opadające<br />TIMSK |= (1&lt;&lt;TICIE1);// odblokowanie przerwania ICP[/syntax]<br />[syntax=c]ISR(TIMER1_CAPT_vect) {...}[/syntax]<br /><br />2. Multipleksowanie wyświetlacz LED:<br />[syntax=c]TCCR1B |= (1&lt;&lt;WGM12);  // Timer1 - tryb pracy CTC<br />TCCR1B |= (1&lt;&lt;CS11);         // preskaler 8<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />OCR1A = 2303;[/syntax]<br />[syntax=c]ISR(TIMER1_COMPA_vect){...}[/syntax]<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 lut 2016, o 10:43</p><hr />
]]></content>
</entry>
</feed>