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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-08-21T05:19:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3884&amp;mode</id>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2013-08-21T05:19:38+01:00</updated>
<published>2013-08-21T05:19:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46490#p46490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46490#p46490"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46490#p46490"><![CDATA[
Tak jak pisal Mirek, nie da sie ignorowac, bo w eterze. Masz zmieszane dwa sygnaly-czyli jak za sumatorem. Jak by byly o nosnych o wiekszej różnicy to można je wycinac 'optycznie' filtrem lub programowo<br /><br />Sent from my mobile<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 21 sie 2013, o 05:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-20T15:55:11+01:00</updated>
<published>2013-08-20T15:55:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46379#p46379</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46379#p46379"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46379#p46379"><![CDATA[
Racja, chciałem się tylko upewnić, dziękuje za odpowiedź.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 20 sie 2013, o 15:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-19T20:17:23+01:00</updated>
<published>2013-08-19T20:17:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46313#p46313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46313#p46313"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46313#p46313"><![CDATA[
pomyśl chwilę ... odbiornik podczerwieni dostaje dwa sygnały naraz, na wyjściu do procka leci jakaś sieczka .... i jak chcesz sobie to ignorować ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 sie 2013, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-19T19:27:11+01:00</updated>
<published>2013-08-19T19:27:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46307#p46307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46307#p46307"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46307#p46307"><![CDATA[
@Józef 63<br /><br />Tą bibliotekę do UART'a próbowałem pisać sam i już nie pamiętam czy nazwy funkcji były podobne do tych z biblioteki Pana Mirka czy nie. Najlepiej dodaj sobie tą z książki i jak kompilator gdzieś będzie płakał, to pozmieniaj nazwy funkcji.<br /><br />Ale problem i tak rozwiązany. Zmieniłem przerwanie na 10 mikrosekundowe (widocznie procedura obsługi przerwania była zbyt długa i nie dało się wszystkiego zrobić co 1us). <br /><br />--<br /><br />Tak przy okazji zapytam. Czy jest możliwe obsłużenie tak odbiornika podczerwieni, by przy nadawaniu np pilota RC5 i jednocześnie np RC6 (albo z innego standardu) odbiornik widział tylko sygnał z RC5 a ten drugi ignorował ? Bo teraz tak to zrobiłem, że jak nadaje inny w niezgodnym standardzie, to odbiornik czeka do momentu aż zacznie nadawać tylko pilot RC5. Zastanawiam się, czy to jest w ogóle fizycznie możliwe takie ignorowanie innego pilota w trakcie działania właściwego RC5 ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 19 sie 2013, o 19:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-18T21:39:19+01:00</updated>
<published>2013-08-18T21:39:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46249#p46249</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46249#p46249"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46249#p46249"><![CDATA[
<div class="quotetitle">Józef 63 napisał(a):</div><div class="quotecontent"><br />Użyłem bibl. Mirka aby spróbować wgrać program w A32 ale nie mogę przejść kompilacji.<br /></div><br /><br />Ewidentnie masz coś nie tak z tą biblioteką do UART'a albo może nie z nią ale z wywołaniem funkcji - i to uart_Init() ... zwróć uwagę na małe i duże litery. Zajrzyj do pliku *.h i sprawdź sobie jakie masz nazwy <br /><br />albo na razie wyłącz tą bibliotekę jeśli chcesz po prostu RC5 odpalić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 sie 2013, o 21:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Józef 63]]></name></author>
<updated>2013-08-18T21:31:39+01:00</updated>
<published>2013-08-18T21:31:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46246#p46246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46246#p46246"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46246#p46246"><![CDATA[
Użyłem bibl. Mirka aby spróbować wgrać program w A32 ale nie mogę przejść kompilacji.<br /><a href="http://forum.atnel.pl/_obrazki/o/697/05ec30a4a932f348faa8e90c96e5578a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/697/05ec30a4a932f348faa8e90c96e5578a.jpg" alt="Obrazek" /></a><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=697">Józef 63</a> — 18 sie 2013, o 21:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-17T18:05:58+01:00</updated>
<published>2013-08-17T18:05:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46032#p46032</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46032#p46032"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=46032#p46032"><![CDATA[
Naprawdę, nikt nie wie co jest nie tak w tym kodzie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 17 sie 2013, o 18:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ringel]]></name></author>
<updated>2013-08-16T23:03:52+01:00</updated>
<published>2013-08-16T23:03:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45969#p45969</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45969#p45969"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45969#p45969"><![CDATA[
Spróbuje jutro na żywym organiźmie, niestety ale na Xmega ten Twój pomysł przetestować. Dopiero po Twoim ostatnim poście zaczaiłem co Ci biega.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=343">ringel</a> — 16 sie 2013, o 23:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-16T22:44:28+01:00</updated>
<published>2013-08-16T22:44:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45968#p45968</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45968#p45968"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45968#p45968"><![CDATA[
Więc mógłbyś ponownie przeanalizować mój kod ? Możliwe że błąd jest jakiś trywialny, typu timer źle ustawiony czy jakoś tak. Zmienna &quot;licznik&quot; miała się inkrementować co 1 us .. taki był mój zamysł.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 16 sie 2013, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ringel]]></name></author>
<updated>2013-08-16T22:31:52+01:00</updated>
<published>2013-08-16T22:31:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45967#p45967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45967#p45967"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45967#p45967"><![CDATA[
<div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent"><br />Czyli robimy to samo tylko inaczej i mnie nie działa, a tobie działa  ... tak w ogóle to w wyniku twojego kodu otrzymujesz wartość około tego 889 us ?<br /></div><br />Widzisz ja musiałem zaadoptować bibliotekę Mirkową do Xmega, dlatego musiałem wiedzieć co robie. Wogóle chciałem resetować licznik po każdym odczycie, w sumie też mi to działało. Także zanim przerobiłem kod, chciałem mierzyć te połówki, jak mi się to udało dopiero uruchomiłem dekodowanie RC5.<br />Jeżeli chodzi o szer. tej połówki to ja miałem ponad 900us.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=343">ringel</a> — 16 sie 2013, o 22:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-16T22:20:03+01:00</updated>
<published>2013-08-16T22:20:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45966#p45966</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45966#p45966"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45966#p45966"><![CDATA[
<div class="quotetitle">ringel napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent">Ładujesz jakąś wartość licznika z jakiejś funkcji TC_GetCaptureA... ja nie wiem jak to zrobić analogicznie na AVR.<br /></div> u Ciebie jest ICR1(Atmega32)</div><br /><br />Noo czyli ja nie chce używać przerwania ICR1. ok ?<br /><br /><div class="quotetitle">ringel napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent">Piszesz, że nie rozumiesz mojego kodu. Ja robię tak, czekam na zbocze opadające ... jak nastąpi to odpalam timer .... i czekam na zbocze narastające ... jak nastąpi, wtedy blokuje timer i czytam to co się wpisało do zmiennej &quot;licznik&quot;<br /></div><br />Dokładnie robię to samo wyżej, tak jak w komentarzach.</div><br /><br />Czyli robimy to samo tylko inaczej i mnie nie działa, a tobie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ... tak w ogóle to w wyniku twojego kodu otrzymujesz wartość około tego 889 us ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1039">fullmoonguy</a> — 16 sie 2013, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ringel]]></name></author>
<updated>2013-08-16T22:10:45+01:00</updated>
<published>2013-08-16T22:10:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45965#p45965</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45965#p45965"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45965#p45965"><![CDATA[
<div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent"><br />Ładujesz jakąś wartość licznika z jakiejś funkcji TC_GetCaptureA... ja nie wiem jak to zrobić analogicznie na AVR.<br /></div> u Ciebie jest ICR1(Atmega32)<br /><br /><div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent"><br />Piszesz, że nie rozumiesz mojego kodu. Ja robię tak, czekam na zbocze opadające ... jak nastąpi to odpalam timer .... i czekam na zbocze narastające ... jak nastąpi, wtedy blokuje timer i czytam to co się wpisało do zmiennej &quot;licznik&quot;<br /></div><br />Dokładnie robię to samo wyżej, tak jak w komentarzach.<br /><br /><div class="quotetitle">fullmoonguy napisał(a):</div><div class="quotecontent"><br />PS: ja też twojego kodu nie rozumiem<br /></div><br />hahaha dobre<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=343">ringel</a> — 16 sie 2013, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-16T21:34:39+01:00</updated>
<published>2013-08-16T21:34:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45961#p45961</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45961#p45961"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45961#p45961"><![CDATA[
Nie znam XMEGA, ale czy ty czasem nie używasz tego przerwania coś ala: TIMER0_CAPT_vect  i z tym ICP z AVR ? Bo jeżeli tak, to chodzi mi właśnie o to, aby nie korzystać z tego przerwania. Ładujesz jakąś wartość licznika z jakiejś funkcji TC_GetCaptureA... ja nie wiem jak to zrobić analogicznie na AVR.<br /><br />Piszesz, że nie rozumiesz mojego kodu. Ja robię tak, czekam na zbocze opadające ... jak nastąpi to odpalam timer .... i czekam na zbocze narastające ... jak nastąpi, wtedy blokuje timer i czytam to co się wpisało do zmiennej &quot;licznik&quot;.<br /><br />PS: ja też twojego kodu nie rozumiem <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=1039">fullmoonguy</a> — 16 sie 2013, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ringel]]></name></author>
<updated>2013-08-16T21:11:32+01:00</updated>
<published>2013-08-16T21:11:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45958#p45958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45958#p45958"/>
<title type="html"><![CDATA[Re: RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45958#p45958"><![CDATA[
Witaj kolego, mi jest ciężko Twój kod zrozumieć, co robisz. Powiem Ci na moim przykładzie na Xmega jak mierzę każdą połówkę bitu.<br />U Ciebie będzie to logicznie tak samo, tylko inne nazwy rejestrów. Czytaj komentarze i tak staraj się postępować<br /><br />w main<br />[syntax=c]/* Configure PC0 for input, triggered on falling edge. */<br />PORTC.PIN0CTRL = PORT_ISC_FALLING_gc;     //ustawienie czułości portu na opadanie<br />if(!flaga) {<br /><br />lcd_goto(1,8);//pulse messung********************<br />lcd_int(PulseWidth);<br />flaga=50;<br />}[/syntax]<br /><br />a w przerwaniu<br />[syntax=c]ISR(TCC0_CCA_vect)<br />{<br />static uint8_t sw1;<br />static uint8_t n;<br />n=flaga;<br />if(n) flaga = --n; // flaga potrzebna do wyświetlania, żeby nie zakłócać przerwania wolnym lcd<br />uint16_t thisCapture = TC_GetCaptureA( &amp;TCC0 ); //pobieranie stanu licznika<br /><br />PulseWidth = thisCapture-LastCapture;<br />LastCapture = thisCapture;<br /><br />if(!sw1) PORTC.PIN0CTRL = PORT_ISC_RISING_gc; // po każdym wejściu w przerwanie zmiana czułości portu - raz na rosnące zbocze raz na opadające<br />else PORTC.PIN0CTRL = PORT_ISC_FALLING_gc;<br />sw1 ^=1;<br />}[/syntax]<br />Kod jest prosty, czytam za każdym razem stan licznika, ze względu na wydarzenie raz na zbocze opadające a raz na rosnące.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=343">ringel</a> — 16 sie 2013, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fullmoonguy]]></name></author>
<updated>2013-08-16T19:13:01+01:00</updated>
<published>2013-08-16T19:13:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45934#p45934</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45934#p45934"/>
<title type="html"><![CDATA[RC5 - pierwsze starcie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3884&amp;p=45934#p45934"><![CDATA[
Witam<br /><br />Przeczytałem rozdział o RC5 z książki jednak nie rozumiem na razie działania przerwania ICP ... ale nie o tym temat. <br /><br />Prosiłbym was panowie, abyście powiedzieli mi co robię źle w moim testowym programie ... Mam pilota Phillipsa i wiem że jest on na 100 % RC5 bo przetestowałem go na kodzie Pana Mirka i działa. Chciałem jednak jak zwykle podejść do zagadnienia nie na zasadzie korzystania z gotowca, tylko na rozwiązaniu problemu w inny ale zrozumiały dla mnie sposób. <br /><br />Chciałbym zdekodować tego pilota zużywając przerwanie zewnętrzne INT1 i Timer0. Napisałem taki program, który mierzy mi czas od nastąpienia 1 przerwania zewnętrznego do drugiego. Innymi słowami chciałem zmierzyć czas stanu niskiego dla pierwszego półbitu ramki (zaznaczyłem na obrazku o co mi chodzi):<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1039/6e00b1fd676249d930782bb39e2ec5b8.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1039/6e00b1fd676249d930782bb39e2ec5b8.png" alt="Obrazek" /></a><br /><br />Oto kod:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />//RC5_proba_uruchomienia<br /><br /><br /><br />// na 16.08 - zrobic takie cos ze jak wykryjemy czas &gt; 210 to juz wpisujemy san napiecia do tablic itd.<br /><br />//chwilowo w celu debugowania<br />#include &quot;UART_library/uart_lib.h&quot;<br /><br />//konfiguracja sprzetowa<br />#define TSOP_DDRDDRD<br />#define TSOP_PORTPORTD<br />#define TSOP_PIN_PORTPIND<br />#define TSOP_PINPD3<br />//koniec konfiguracji sprzetowej<br /><br />//makra<br />#define INT1_OPADAJACE_ZBOCZE MCUCR|=(1&lt;&lt;ISC11);MCUCR&amp;=~(1&lt;&lt;ISC10);<br />#define INT1_NARASTAJACE_ZBOCZE MCUCR|=(1&lt;&lt;ISC11)|(1&lt;&lt;ISC10);<br />#define INT1_PRZELACZ_ZBOCZEMCUCR ^= (1&lt;&lt;ISC10);<br /><br />#define PRZERWANIE_WYLGICR &amp;= ~(1 &lt;&lt; INT1);<br />#define PRZERWANIE_WLGICR |= (1 &lt;&lt; INT1);<br /><br />#define TIMER0_OFFTIMSK &amp;= ~(1&lt;&lt;OCIE0);<br />#define TIMER0_ONTIMSK |= (1&lt;&lt;OCIE0);<br /><br /><br /><br /><br />//zmienne<br /><br />volatile uint8_t licznik_zboczy = 0;//zwiekszany co kolejne przerwanie<br /><br /><br />volatile uint16_t licznik = 0;//zliczamy kolejne mikrosekundy<br /><br /><br />volatile uint8_t key = 0;<br /><br /><br /><br /><br /><br />ISR(INT1_vect) {<br /><br /><br /><br /><br /><br /><br />licznik_zboczy++;<br /><br /><br /><br /><br /><br /><br /><br />if(licznik_zboczy==1)<br />{<br />//oczekiwanie na zmiane stanu logicznego w kolejnym przerwaniu<br />INT1_PRZELACZ_ZBOCZE<br /><br />//nastapilo pierwsze przerwanie - uruchamiamy licznik i liczymy ile trwa stan niski do 2 przerwania<br />TIMER0_ON<br /><br /><br /><br /><br />}<br />if(licznik_zboczy==2)<br />{<br />TIMER0_OFF<br />PRZERWANIE_WYL<br />key = 1;<br />//wylaczamy wszystkie przerwania<br />}<br /><br />}<br /><br />ISR(TIMER0_COMP_vect) {<br /><br /><br />//test<br />//<br />//static uint32_t cnt = 0;<br />//static uint16_t li = 0;<br />//if (cnt &gt;= 100000) {<br />//cnt = 0;<br />//li ^= 1;<br />//if (li &gt;= 1) {<br />////PORTC ^= (1 &lt;&lt; PC0);//test<br />//<br />//PORTC |= (1 &lt;&lt; PC0);//test<br />//<br />//} else {<br />//PORTC &amp;= ~(1 &lt;&lt; PC0);//test<br />//}<br />//<br />//}<br />//cnt++;<br /><br />licznik++;//liczymy kolejne us<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />}<br /><br />int main() {<br /><br />//konfiguracja UARTu<br />uart_Init(103);//9600<br /><br />//konfiguracja IO<br />TSOP_DDR &amp;= ~(1 &lt;&lt; TSOP_PIN);//pin od czujnika podczerwieni<br />TSOP_PORT |= (1 &lt;&lt; TSOP_PIN);<br /><br />//test<br />DDRC |= (1 &lt;&lt; PC0);<br />PORTC |= (1 &lt;&lt; PC0);<br /><br />//konfiguracja przerwania zewnetrznego INT1<br />INT1_OPADAJACE_ZBOCZE//najpierw oczekujemy na zbocze opadajace<br />GICR |= (1 &lt;&lt; INT1);<br /><br />//konfiguracja timera0<br />TCCR0 |= (1 &lt;&lt; WGM01) | (1 &lt;&lt; CS00);//ctc i pres = 1<br />OCR0 = 16;//przerwanie co 1us<br />TIMER0_OFF<br />//narazie blokujemy lokalna flage przerwan<br /><br />sei();<br /><br />for (;;) {<br /><br /><br /><br /><br />if(key)<br />{<br /><br /><br /><br />uart_puts(&quot; licznik=&quot;);<br />uart_putint(licznik, 10);<br />key = 0;<br /><br />PORTC &amp;= ~(1&lt;&lt;PC0);<br />}<br /><br /><br /><br /><br /><br />}<br /><br />return 0;<br />}[/syntax]<br /><br />Program ma działać tak, że jak wcisnę np przycisk 1 na pilocie, to nastąpi pomiar czasu trwania pierwszego półbitu ramki i następnie wynik ma się wyświetlić na terminalu. Moje pytanie jest takie: dlaczego w wyniku działania programu otrzymuję wynik:<br /><br /> licznik=335<br /><br />skoro, czas trwania półbitu dla RC5 trwa 889us ? Czy ustawiłem gdzieś źle timer ? (chciałem co 1us - kwarc 16Mhz) . Co jest nie tak ? ...<br /><br />Korzystam z EvB v5.1<br /><br />Pozdrawiam<br /><br />PS: jak coś jest nie jasne, albo lakonicznie opisane to proszę pytać <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=1039">fullmoonguy</a> — 16 sie 2013, o 19:13</p><hr />
]]></content>
</entry>
</feed>