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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-05T11:57:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3029&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-05T11:57:54+01:00</updated>
<published>2013-05-05T11:57:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36177#p36177</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36177#p36177"/>
<title type="html"><![CDATA[Re: Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36177#p36177"><![CDATA[
<div class="quotetitle">Paul Dirac napisał(a):</div><div class="quotecontent"><br />To wilekie dzięki. A ta twoja biblioteka sasmunga będzie zgrana z moim pilotem, czy nie?<br /></div><br /><br />Wiesz ale ja no tak że tak powiem wróżyć to nie umiem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie wiem<br /><br />ale weź to w łapki i sprawdź - szybciej będzie ... - a że sposób kodowania wygląda bardzo podobnie to pewnie jak już to najwyżej potrzebne będą niewielkie zmiany czasów być może .... itp<br /><br />i poczytaj na czacie co ci napisałem o tym MAKRO do przeliczania czasów o które pytałeś <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> — 5 maja 2013, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-05-05T11:49:35+01:00</updated>
<published>2013-05-05T11:49:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36172#p36172</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36172#p36172"/>
<title type="html"><![CDATA[Re: Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36172#p36172"><![CDATA[
To wilekie dzięki. A ta twoja biblioteka sasmunga będzie zgrana z moim pilotem, czy nie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 5 maja 2013, o 11:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-05T11:38:58+01:00</updated>
<published>2013-05-05T11:38:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36169#p36169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36169#p36169"/>
<title type="html"><![CDATA[Re: Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36169#p36169"><![CDATA[
no 67 impulsów to wcale nie długa ramka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... podziel to przez DWA i już masz połowę mniej - bo każdy bit to przecież dwa impulsy, do tego Header .... a później to już kwestia jak widać najczęściej ilości bitów &quot;rozbiegówki&quot; PRE_DATA ... która bywa bardzo różna, a na końcu w samsungach często już tylko dwa zanegowane bajty przesyłane. ... Więc jak tak na to spojrzeć to dlaczego niby długa ramka. 16 bitów na te dwa bajty zanegowane, 16 bitów na PRE_DATA, jakiś Header i już masz całą ramkę<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />o dopiero teraz zobaczyłem co dopisałeś i proszę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> widzisz jakie długie PRE_DATA ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no i czasy się zgadzają z tym co widać w terminalu <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: 2 minutach ]</span></strong><br /><br />dodatkowo jak pisałem w książce zobacz np wartość dla klawisza 2<br /><br />0xA05F<br /><br />pierwszy bajt A0 a drugi to zanegowana wartość <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> 5F <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: 3 minutach ]</span></strong><br /><br />No i na końcu PTRAIL, o którym też piszę - czyli dlatego na końcu masz nieparzystą liczbę impulsów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> - wszystko się zgadza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 maja 2013, o 11:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-05-05T11:30:52+01:00</updated>
<published>2013-05-05T11:30:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36165#p36165</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36165#p36165"/>
<title type="html"><![CDATA[Re: Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36165#p36165"><![CDATA[
mam pilot samsung  BN59-00686A. Ramka wygląda podobnie po wciskaniu róznych przycisków.Ale analizowałem dla innych pilotów i jest różnie, w sensie długość ramki.<br />W sumie jest super wytłumaczone w zielonej książce jak to robić mając notę podobnego pilota. Ale nie wiem, czemu ta ramka jest taka długa.<br />Ja tam na podstawie tej noty będę pisał obsługę:<br /><!-- m --><a class="postlink" href="http://lirc.sourceforge.net/remotes/samsung/BN59-00685A" >http://lirc.sourceforge.net/remotes/samsung/BN59-00685A</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 5 maja 2013, o 11:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-05T11:12:43+01:00</updated>
<published>2013-05-05T11:12:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36161#p36161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36161#p36161"/>
<title type="html"><![CDATA[Re: Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36161#p36161"><![CDATA[
No dobrze a co to za pilot ? Jeśli RC6 to będziesz miał niezłą zagwozdkę ....<br /><br />Poza tym czy ta ramka za każdym razem tak samo wygląda po wciśnięciu jakiegoś jednego klawisza ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 maja 2013, o 11:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-05-05T10:47:05+01:00</updated>
<published>2013-05-05T10:47:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36160#p36160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36160#p36160"/>
<title type="html"><![CDATA[Analizator szerkości impulsu dla pilotów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3029&amp;p=36160#p36160"><![CDATA[
Witam!<br /><br />Troche przerobiłem ten program do analizowania tych impulsów i do końca nie rozumiem jak teraz poprawnie analizowac ta ramkę. Ramka jedna trwa u mnie 67 rózne stany. Może lepiej wkleje jak to w terminalu wyszło:<br />[syntax=c]step: 01PulseWidth: 4525<br />step: 02PulseWidth: 4429<br />step: 03PulseWidth: 603<br />step: 04PulseWidth: 1639<br />step: 05PulseWidth: 598<br />step: 06PulseWidth: 1643<br />step: 07PulseWidth: 603<br />step: 08PulseWidth: 1638<br />step: 09PulseWidth: 607<br />step: 10PulseWidth: 518<br />step: 11PulseWidth: 598<br />step: 12PulseWidth: 527<br />step: 13PulseWidth: 599<br />step: 14PulseWidth: 526<br />step: 15PulseWidth: 601<br />step: 16PulseWidth: 524<br />step: 17PulseWidth: 602<br />step: 18PulseWidth: 523<br />step: 19PulseWidth: 602<br />step: 20PulseWidth: 1639<br />step: 21PulseWidth: 608<br />step: 22PulseWidth: 1634<br />step: 23PulseWidth: 602<br />step: 24PulseWidth: 1639<br />step: 25PulseWidth: 607<br />step: 26PulseWidth: 518<br />step: 27PulseWidth: 607<br />step: 28PulseWidth: 518<br />step: 29PulseWidth: 597<br />step: 30PulseWidth: 528<br />step: 31PulseWidth: 598<br />step: 32PulseWidth: 527<br />step: 33PulseWidth: 599<br />step: 34PulseWidth: 526<br />step: 35PulseWidth: 599<br />step: 36PulseWidth: 526<br />step: 37PulseWidth: 600<br />step: 38PulseWidth: 524<br />step: 39PulseWidth: 601<br />step: 40PulseWidth: 1640<br />step: 41PulseWidth: 606<br />step: 42PulseWidth: 518<br />step: 43PulseWidth: 607<br />step: 44PulseWidth: 518<br />step: 45PulseWidth: 607<br />step: 46PulseWidth: 518<br />step: 47PulseWidth: 608<br />step: 48PulseWidth: 518<br />step: 49PulseWidth: 597<br />step: 50PulseWidth: 527<br />step: 51PulseWidth: 599<br />step: 52PulseWidth: 1643<br />step: 53PulseWidth: 604<br />step: 54PulseWidth: 1637<br />step: 55PulseWidth: 598<br />step: 56PulseWidth: 527<br />step: 57PulseWidth: 599<br />step: 58PulseWidth: 1642<br />step: 59PulseWidth: 604<br />step: 60PulseWidth: 1638<br />step: 61PulseWidth: 599<br />step: 62PulseWidth: 1642<br />step: 63PulseWidth: 604<br />step: 64PulseWidth: 1636<br />step: 65PulseWidth: 599<br />step: 66PulseWidth: 1642<br />step: 67PulseWidth: 602[/syntax]<br /><br />I teraz nie wiem jak zacząć tą analizę. W zielonej książce jest jakies 16 bitów, u mnie chyba więcej.<br />A przerobiony kod jest tylko z wyciętymi fargmentami kodu na obsługę lcd:<br />main.c:<br />[syntax=c]#include &lt;avr/io.h&gt;// podciągnięcie plików nagłówkowych<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br /><br /><br /><br />// makro przeliczające czasy w us w zależności od F_CPU (automatycznie)<br />#define ir_micro_s(num) (((num)*((F_CPU/1000UL)/8))/1000)<br /><br />// stałe preprocesora<br />#define UART_BAUD 38400// tu definiujemy interesującą nas prędkość<br />#define __UBRR F_CPU/16/UART_BAUD-1  // obliczamy UBRR dla U2X=0<br /><br /><br /><br /><br />#define IR_PIN (1&lt;&lt;PD6)// numer pinu wejścia ICP<br />#define IR_DIR DDRD<br />#define IR_PORT PORTD<br /><br />// deklaracje funkcji<br />void USART_Init( uint16_t baud );// obsługa UART<br />void uart_puts(char *s);// obsługa UART<br />void uart_putc( char data );// obsługa UART<br />void uart_put_int(uint16_t value);// obsługa UART<br /><br />void send_to_terminal( void );<br />void send_to_mkdekoder( void );<br /><br />// definicje zmiennych<br />volatile uint16_t tab&#91;255&#93;;<br />volatile uint8_t frame_end, pulse_cnt;<br />volatile uint8_t step;<br /><br />// zmienne pomocnicze<br />uint16_t ms=25000;<br />uint16_t hi;<br /><br />/* ***********  główna funkcja programu *******************/<br />int main(void) {<br /><br /><br /><br />/* inicjalizacja IR */<br />//IR_DIR &amp;= ~IR_PIN;// pin IR jako wejście, ponieważ jest domyślnie to pomijamy<br />IR_PORT |= IR_PIN;// podciągnięcie wejścia IR do VCC<br /><br />// 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<br /><br />TIMSK |= (1&lt;&lt;OCIE1A);// odblokowanie przerwania CompareA<br /><br />OCR1A = ir_micro_s(19000UL);<br /><br /><br />USART_Init( __UBRR );// inicjalizacja UART<br /><br />sei();// globalne odblokowanie przerwań<br /><br /><br /><br /><br />/* **** GŁÓWNA PĘTLA PROGRAMU ***** */<br />while(1) {<br /><br />// jeśli odebrano całą ramkę<br />if( frame_end ) {<br /><br /><br /><br />// włącz poniższą linię do kompilacji jeśli<br />// program ma wysyłać tylko dane na terminal PC<br />send_to_terminal();<br /><br />// włącz poniższą linię do kompilacji jeśli<br />// program ma współpracować z MkDekoder<br />//send_to_mkdekoder();<br /><br />// czekaj w pętli do czasu aż na wejściu ICP będzie przerwa 90ms<br />// blokada przed nakładaniem się wielu ramek na wykres gdy<br />// wciskamy dłużej klawisz pilota<br />hi=0;<br />while(1) {<br />if( !(PIND &amp; (1&lt;&lt;PD6)) ) {ms=30000; hi=0;}<br />else hi++;<br />if(!ms--) break;<br />if(hi&gt;9000) break;<br />_delay_us(10);<br />}<br /><br />TCCR1B &amp;= ~(1&lt;&lt;ICES1);// reakcja na zbocze opadające<br />// skasowanie flagi przerwania<br />TIFR |= (1&lt;&lt;ICF1);<br />// ponowne odblokowanie przerwania ICP1<br />TIMSK |= (1&lt;&lt;TICIE1);<br /><br />// skasuj flagę<br />frame_end = 0;<br />}<br />} // koniec pętli głównej ****<br /><br />} /* ******   koniec MAIN    ***** */<br /><br /><br /><br /><br />/* ************** OBSŁUGA PRZERWANIA ICP DLA TIMER1 *************  */<br />ISR(TIMER1_CAPT_vect) {<br /><br />if( step == 0 ) {<br />TCNT1=0;<br />pulse_cnt=0;<br />}<br /><br />TIFR |= (1&lt;&lt;OCF1A);<br />TIMSK |= (1&lt;&lt;OCIE1A);<br /><br />TCCR1B ^= (1&lt;&lt;ICES1);<br /><br />if( step &gt; 0 ) {<br />tab&#91; step-1 &#93; = TCNT1;<br />pulse_cnt++;<br />}<br /><br />step++;<br />TCNT1 = 0;<br /><br />}<br /><br />ISR( TIMER1_COMPA_vect ) {<br />step=0;<br />frame_end = 1;<br />TIMSK &amp;= ~(1&lt;&lt;OCIE1A);<br />TIMSK &amp;= ~(1&lt;&lt;TICIE1);<br />}<br /><br /><br />// inicjalizacja UART<br />void USART_Init( uint16_t baud ) {<br />/* Ustawienie prędkości */<br />UBRRH = (uint8_t)(baud&gt;&gt;8);<br />UBRRL = (uint8_t)baud;<br />/* Załączenie nadajnika i odbiornika */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Ustawienie format ramki: 8bitów danych, 1 bit stopu */<br />UCSRC = (1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);<br />}<br /><br />// przesłanie łańcucha znaków w poolingu (znak po znaku)<br />// bez buforowania - nie jest zwykle konieczne tak jak przy odbiorze<br />void uart_puts(char *s)// wysyła łańcuch z pamięci RAM na UART<br />{<br />  register char c;<br />  while ((c = *s++)) uart_putc(c);// dopóki nie napotkasz 0 wysyłaj znak<br />}<br /><br />// wysłanie liczby na UART<br />void uart_put_int(uint16_t value) {<br />char string&#91;17&#93;;// bufor na wynik funkcji itoa<br />itoa(value, string, 10);// konwersja value na ASCII<br />uart_puts(string);// wyślij string na port szeregowy<br />}<br /><br />// wysłanie pojedynczego znaku na UART (podstawowa funkcja robocza)<br />void uart_putc( char data ) {<br />/* Wait for empty transmit buffer */<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) );<br />/* Put data into buffer, sends the data */<br />UDR = data;<br />}<br /><br />// funkcja wysyłająca wszystkie zebrane czasy z tablicy do terminala<br />void send_to_terminal( void ) {<br />uint8_t i;<br />if( !pulse_cnt ) return;<br />uart_puts(&quot;ramka IR:\r\n&quot;);<br />uart_puts(&quot;************************&quot;);<br />uart_puts(&quot;\r\n&quot;);<br />for( i=0; i&lt;pulse_cnt; i++) {<br />uart_puts(&quot;step: &quot;);<br />if( i+1 &lt; 10 ) uart_puts(&quot;0&quot;);<br />uart_put_int(i+1);<br />uart_puts(&quot;\tPulseWidth: &quot;);<br />uart_put_int( ((tab&#91;i&#93;*1000UL) / ((F_CPU/1000UL)/8))  );<br />uart_puts(&quot;\r\n&quot;);<br />}<br />uart_puts(&quot;************************&quot;);<br />uart_puts(&quot;\r\n&quot;);<br />}[/syntax]<br /><br />prosiłbym o jakies sugestie żebym mógł ruszyć, wtedy bedzie mi łatwiej, bo obecnie stoję w miejscu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 5 maja 2013, o 10:47</p><hr />
]]></content>
</entry>
</feed>