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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-15T20:58:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6376&amp;mode</id>
<entry>
<author><name><![CDATA[piotr_1547]]></name></author>
<updated>2014-03-15T20:58:54+01:00</updated>
<published>2014-03-15T20:58:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6376&amp;p=74438#p74438</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6376&amp;p=74438#p74438"/>
<title type="html"><![CDATA[Odbiór RC5 - zakłócanie programu przez inne standardy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6376&amp;p=74438#p74438"><![CDATA[
Witam.<br />Tworzę pewien program, który powinien odbierać dane wysyłane przez podczerwień. <br /><br />Program, co 10ms w przerwaniu od T0, odczytuje dane z czujnika temperatury. Gdy te dane zostają odczytane, powraca do pętli głównej. Wtedy są już aktywne przerwania Timera 1 (ICP; przerwania, za każdym razem gdy wywoływana jest procedura obsługi przerwania licznika T0, są wyłączane), dzięki czemu możliwy jest odbiór komunikatów z pilota (RC5). Gdy pilot coś nadaje, wywołanie przerwania Timera1 zatrzymuje Timer0, aby nie przeszkadzał w prawidłowym odbieraniu ramki.<br /><br />ir_decode.c<br /><span style="color: #FF0000">[ .... kolega nie czytał mojej prośby, którą wszędzie piszę - aby nie publikować na forach bibliotek z moich książek ? toż przecież szczególnie na tym forum, każdy posiada i to Bluebooka - więc każdy ma też biblioteki. Można publikować zawartość plików main.c albo własne pliki projektu ... ale z bibliotekami to proszę o zrozumienie - mirekk36 ]</span><br /><br /><br />fragment progr. gł.:<br /><br />[syntax=c]for (;;) {<br /><br />// *** SPRAWDZANIE D z CZUJNIKA PODCZERWIENI ***<br />if (Ir_key_press_flag) { //gdy odebrano kod z pilota<br />if (!address &amp;&amp; (command != wczesniejsza_komenda)) { //adres = 0<br /><br />wczesniejsza_komenda = command;<br /><br />char itm&#91;1&#93;;<br />ltoa((int)command,itm,10);<br /><br />uart_puts(itm); //kod jestdrukowany tylko jeden raz, chyba że jest inny<br />uart_puts(&quot;\n&quot;);<br />}<br /><br />Ir_key_press_flag = 0;<br />command = 0xff;<br />address = 0xff;<br />}<br />// *** KONIEC INTERPRET. DANYCH Z CZUJNIKA PODCZERWIENI ***<br />}[/syntax]<br /><br /><br />przerw. - fragment:<br /><br />[syntax=c]ISR(TIMER0_COMP_vect) { //przerwanie od licznika T0 (co 10ms, zatem f_próbkowania = 100Hz)<br /><br />TIMSK &amp;= ~(1&lt;&lt;TICIE1); //dezaktywacja przerwań ICP (podczerwień)<br /><br />//odczyt danych z czujnika<br /><br />//<br />TIMSK |= (1&lt;&lt;TICIE1); //aktywacja przerwań ICP (podczerwień)<br />}[/syntax]<br /><br /><br />Program działa poprawnie wtedy, kiedy wysyłam kody z pilotów RC5. Gdy nacisnę przycisk innego pilota, program się blokuje - nie następuje włączenie przerwań Timera0. Gdy ponownie, po zablokowaniu się układu, wyślę coś z pilota RC5, to za którymś razem program się odblokowuje i normalnie odbiera komendy.<br /><br />Czym to może być spowodowane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2740">piotr_1547</a> — 15 mar 2014, o 20:58</p><hr />
]]></content>
</entry>
</feed>