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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-07-18T12:00:09+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10813&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-07-18T12:00:09+01:00</updated>
<published>2019-07-18T12:00:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220476#p220476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220476#p220476"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220476#p220476"><![CDATA[
<div class="quotetitle">danny napisał(a):</div><div class="quotecontent"><br />Nie jestem pewny czy nie zaczynać nowego wątku<br /></div><br />Forum jest po to aby zakładać nowe wątki z pytaniami a nie uprawiać wykopalisk archeologicznych i dopisywać się do archiwalnych wątków. Chciałbyś przebywać na jakimś forum, gdzie wszyscy piszą w jednym wątku??? takim globalnym i jednym ? Dałbyś radę coś znaleźć na miliardzie stron wątku na przestrzeni iluś lat ?<br /><br />Dlatego wątek zamykam a kolega - proszę bardzo niech założy nowy wątek, tym bardziej że z nami kolega jest na forum nie od dziś - już od 2013 roku - kolejnym razem poleci warn za odkopywanie archiwów ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lip 2019, o 12:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danny]]></name></author>
<updated>2019-07-18T11:52:02+01:00</updated>
<published>2019-07-18T11:52:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220475#p220475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220475#p220475"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=220475#p220475"><![CDATA[
Szanowni Koledzy,<br /><br />Nie jestem pewny czy nie zaczynać nowego wątku, proszę Moderatora o ew. wydzielenie do nowego wątku.<br /><br />Jako, że w/g tego:<br /><br /><!-- m --><a class="postlink" href="http://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol" >http://techdocs.altium.com/display/FPGA ... n+Protocol</a><!-- m --><br /><br />Nec koduje dane od LSB, więc ramkę z załącznika powinien odczytywać:<br /><br />address 0x04; command 0x72<br /><br />Natomiast  w/g biblioteki zamieszczonej w tym wątku, odczytywane jest:<br /><br />address 0x20, command 0x4E<br /><br /><br /><a href="https://obrazkiforum.atnel.pl/1505/ce10baa6849f09a20ecc771dc4f14e5a.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/1505/ce10baa6849f09a20ecc771dc4f14e5a.jpg" alt="Obrazek" /></a><br /><br />Tak więc proszę o sprawdzenie czy moje rozumowanie jest poprawne i czy poniższe zmiany w kodzie są ok:<br /><br />plik nec.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;nec.h&quot;<br /><br />//volatile uint8_t frame_ready;<br /><br />volatile uint8_t address;<br />volatile uint8_t command;<br />volatile uint8_t Ir_key_press_flag;<br />volatile uint8_t rep;// ilość powtórzeń ramki przy wciąż wciśniętym klawiszu - autorepeat<br />// wskaźnik do funkcji callback dla zdarzenia IR_EVENT<br />static void (*ir_event_callback)(uint8_t address, uint8_t command);<br /><br />// funkcja do rejestracji funkcji zwrotnej w zdarzeniu IR_EVENT()<br />void register_ir_event_callback(<br />void (*callback)(uint8_t address, uint8_t command)) {<br />ir_event_callback = callback;<br />}<br /><br />// Zdarzenie do obsługi podczerwieni, następuje w nim wykrycie ustawionej flagi<br />// oraz jej automatyczne kasowanie, łącznie ze skasowaniem wartości command i address do 0xff<br />// użytkownik nie musi za każdym razem pamiętać o kasowaniu flagi czy wpisywaniu warunku if<br />void IR_EVENT(void) {<br /><br />if (Ir_key_press_flag) {<br /><br />// wywołanie własnej funkcji obsługi użytkownika jeśli<br />// uprzednio została ona zarejestrowana<br /><br />if (ir_event_callback)<br />(*ir_event_callback)(address, command);<br /><br />address = 0xff;<br />command = 0xff;<br />Ir_key_press_flag = 0;<br />}<br />}<br /><br />void ir_init(void) {<br />//DDRD &amp;=~(1&lt;&lt;PD6);<br />IR_PORT |= (1 &lt;&lt; IR_PIN); /* podciągnięcie wejścia IR */<br />// KONFIGURACJA PRACY PRZERWANIA ICP I TIMERA1<br /><br />TCCR1B |= (1 &lt;&lt; CS11); /* prescaler = 8 */<br />//     TCCR1B &amp;= ~(1&lt;&lt;ICES1);  /* falling edge */<br />TIMSK |= (1 &lt;&lt; TICIE1); /* enable interrupt */<br />}<br /><br />ISR(TIMER1_CAPT_vect) {<br />static uint32_t temp_frame;<br />static uint16_t last_icr;<br />uint16_t width;<br />//        static uint8_t frame_idx = 33;<br />static uint8_t frame_idx = 0;<br /><br />uint8_t bit = 2;<br /><br />width = ICR1 - last_icr;<br />last_icr = ICR1;<br /><br />if (!frame_idx &amp;&amp; width &gt; F_START - F_OFFSET &amp;&amp; width &lt; F_START + F_OFFSET)//frame_idx == 33<br />// &gt; 27000 - 800 = 26200 i &lt; 27800<br />{<br />//            frame_idx--;<br /><br />frame_idx++;<br />}<br /><br />//if(frame_idx &lt; 32)<br />if (frame_idx &gt; 1)<br /><br />{<br /><br />if (width &gt; F_ONE - F_OFFSET &amp;&amp; width &lt; F_ONE + F_OFFSET)<br />bit = 1;<br />// &gt; 3700 i &lt; 5300<br />if (width &gt; F_ZERO - F_OFFSET &amp;&amp; width &lt; F_ZERO + F_OFFSET)<br />bit = 0;<br />// &gt; 2250 - 800 = 900 i &lt; 3050<br /><br />if (bit != 2) {<br />temp_frame |= (uint32_t) bit &lt;&lt; (frame_idx - 2);//frame_idx;<br /><br />//if(frame_idx == 0)<br />if (frame_idx == 33)<br /><br />{<br />//                                address = (uint8_t)(temp_frame &gt;&gt; 24);<br />address = (uint8_t) (temp_frame);<br /><br />//                                command = (uint8_t)(temp_frame &gt;&gt; 8);<br />command = (uint8_t) (temp_frame &gt;&gt; 16);<br /><br />temp_frame = 0;<br />//                                frame_idx = 33;<br />frame_idx = 0;<br /><br />//                                frame_ready = 1;<br /><br />Ir_key_press_flag = 1;<br />} else {<br />//                                frame_idx--;<br />frame_idx++;<br /><br />}<br />} else {<br />//                        frame_idx = 33;<br />frame_idx = 0;<br /><br />}<br />}<br /><br />//if(frame_idx == 32) frame_idx--;<br />if (frame_idx == 1)<br />frame_idx++;<br /><br />}[/syntax]<br /><br /><br />plik nec.h<br />[syntax=c]#ifndef NEC_H<br />#define NEC_H<br /><br />//długości &#91;ms&#93;:<br />// http://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol<br /><br />#define HEADER13.5//9ms + 4,5ms przerwa<br />#define ZERO1.125//562,5us + 562,5us przerwa<br />#define ONE2.25//562,5us + 1,6875ms przerwa<br />#define REPEAT11.25//co 108ms 9ms + 2.25ms<br />#define OFFSET0.4<br /><br /><br />#define F_STARTF_CPU/8000*HEADER<br />#define F_ONEF_CPU/8000*ONE<br />#define F_ZEROF_CPU/8000*ZERO<br />#define F_REPEATF_CPU/8000*REPEAT<br />#define F_OFFSETF_CPU/8000*OFFSET<br /><br /><br /><br />#define IR_PIN PD6// numer pinu wejścia ICP<br />#define IR_DIR DDRD<br />#define IR_PORT PORTD<br /><br /><br />//kody pilota do TV LG AKB73715679<br /><br />#define LG_ADDRESS0x04<br /><br />#define STOP0xB1<br />#define RWD0x8F<br />#define PLAY0xB0<br />#define FF0x8E<br />#define PAUSE0xBA<br />#define RED0x72<br />#define GREEN0x71<br />#define YELLOW0x63<br />#define BLUE0x61<br /><br />//#define REC0xBD<br />//#define AVMODE0x30<br />//#define EXIT0x5B<br />//#define BACK0x28<br />//#define OK0x44<br />//#define QMENU0x45<br />//#define SETTINGS0x43<br />//#define TEXT0x20<br />//#define INFO0xAA<br />//#define TOPT0x21<br />//#define MUTE0x09<br />//#define GUIDE0xAB<br />//#define FAV0x1E<br />//#define VOL+0x02<br />//#define VOL-0x03<br />//#define P+0x00<br />//#define P-0x01<br />//#define LIST0x53<br />//#define QVIEW0x1A<br />//#define 00x10<br />//#define 10x11<br />//#define 20x12<br />//#define 30x13<br />//#define 40x14<br />//#define 50x15<br />//#define 60x16<br />//#define 70x17<br />//#define 80x18<br />//#define 90x19<br />//#define SUBTITLE0x39<br />//#define AD0x91<br />//#define RATIO0x79<br />//#define INPUT0x0B<br />//#define TV-RADIO0xF0<br />//#define ON-OFF0x08<br />#define LEFT0x07<br />#define RIGHT0x06<br />#define IR_UP0x40<br />#define IR_DOWN0x41<br /><br /><br /><br /><br />void ir_init();<br /><br />void IR_EVENT(void);<br /><br />void register_ir_event_callback(void (*callback)(uint8_t address,<br />uint8_t command));<br />#endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1505">danny</a> — 18 lip 2019, o 11:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-26T20:15:42+01:00</updated>
<published>2016-05-26T20:15:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=161142#p161142</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=161142#p161142"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=161142#p161142"><![CDATA[
Wgrałem na nowo Eclipse MARS według poradnika Mirka i wszystko ładnie śmiga <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Jednak dłuższa nieobecność na forum szkodzi... i to bardzo. Wielkie dzięki Krauser za rozwiązanie problemu. Niby błahostka a jednak wymagało trochę czasu aby dość do sedna sprawy. Jeszcze raz dzięki.  <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=4806">robertaz</a> — 26 maja 2016, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-20T22:46:29+01:00</updated>
<published>2016-05-20T22:46:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160955#p160955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160955#p160955"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160955#p160955"><![CDATA[
Skorzystaj z tego. Na miejscu masz od razu pliki do pobrania<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2014/11/avr-jak-zaczac-z-eclipse-luna.html" >http://mirekk36.blogspot.com/2014/11/av ... -luna.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 20 maja 2016, o 22:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-20T22:09:08+01:00</updated>
<published>2016-05-20T22:09:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160952#p160952</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160952#p160952"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160952#p160952"><![CDATA[
U mnie jest avr-gcc 4.3.3 (WinAVR 20100110). Trochę mnie to dziwi bo konfigurowałem Eclipse według poradników Mirka. Cóż, spróbuję wgrać toolchaina i zobaczymy czy pomoże.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4806">robertaz</a> — 20 maja 2016, o 22:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-20T22:01:58+01:00</updated>
<published>2016-05-20T22:01:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160951#p160951</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160951#p160951"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160951#p160951"><![CDATA[
Cały projekt zawiera ustawienia. A skąd masz kompilator? W Window -&gt; Show View -&gt; Other -&gt; AVR Supported MCUs jest podana wersja. Ja mam avr-gcc 4.8. (AVR_8_bit_GNU_Toolchain_3.4.4_1229)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 20 maja 2016, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-20T21:44:10+01:00</updated>
<published>2016-05-20T21:44:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160950#p160950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160950#p160950"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160950#p160950"><![CDATA[
To samo co w moim projekcie. Chyba coś mam źle poustawiane w Eclipsie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4806">robertaz</a> — 20 maja 2016, o 21:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-20T21:22:41+01:00</updated>
<published>2016-05-20T21:22:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160948#p160948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160948#p160948"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160948#p160948"><![CDATA[
Wypróbuj ten projekt z załącznika<br />File-&gt;Import<br />General-&gt;Existing projects into workspace<br />Next<br />Select archive file<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 20 maja 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-20T21:01:11+01:00</updated>
<published>2016-05-20T21:01:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160946#p160946</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160946#p160946"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160946#p160946"><![CDATA[
Konsola po Cleanie:<br /><br />[syntax=xml]21:54:58 **** Build of configuration Release for project NEC_2313A ****<br />make all <br />Building file: ../main.c<br />Invoking: AVR Compiler<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny2313a -DF_CPU=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.d&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />Finished building: ../main.c<br /> <br />Building target: NEC_2313A.elf<br />Invoking: AVR C Linker<br />avr-gcc -Wl,-Map,NEC_2313A.map -Wl,--gc-sections -mmcu=attiny2313a -o &quot;NEC_2313A.elf&quot;  ./main.o   <br />Finished building target: NEC_2313A.elf<br /> <br />Invoking: AVR Create Extended Listing<br />avr-objdump -h -S NEC_2313A.elf  &gt;&quot;NEC_2313A.lss&quot;<br />Finished building: NEC_2313A.lss<br /> <br />Create Flash image (ihex format)<br />avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex NEC_2313A.elf  &quot;NEC_2313A.hex&quot;<br />Finished building: NEC_2313A.hex<br /> <br />Create eeprom image (ihex format)<br />avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex NEC_2313A.elf  &quot;NEC_2313A.eep&quot;<br />Finished building: NEC_2313A.eep<br /> <br />Invoking: Print Size<br />avr-size --format=avr --mcu=attiny2313a NEC_2313A.elf<br />AVR Memory Usage<br />----------------<br />Device: attiny2313a<br /><br />Program:    2664 bytes (130.1% Full)<br />(.text + .data + .bootloader)<br /><br />Data:        271 bytes (211.7% Full)<br />(.data + .bss + .noinit)<br /><br /><br />Finished building: sizedummy<br /> <br /><br />21:54:59 Build Finished (took 1s.560ms)[/syntax]<br /><br />I po ponownym Buildzie:<br /><br />[syntax=xml]21:56:44 **** Incremental Build of configuration Release for project NEC_2313A ****<br />make all <br />Invoking: Print Size<br />avr-size --format=avr --mcu=attiny2313a NEC_2313A.elf<br />AVR Memory Usage<br />----------------<br />Device: attiny2313a<br /><br />Program:    2664 bytes (130.1% Full)<br />(.text + .data + .bootloader)<br /><br />Data:        271 bytes (211.7% Full)<br />(.data + .bss + .noinit)<br /><br /><br />Finished building: sizedummy<br /> <br /><br />21:56:44 Build Finished (took 200ms)[/syntax]<br /><br />Zwykle odhaczam opcję Debug przy tworzeniu projektu więc ta opcja odpada. Czytałem na wątku o Eclipse Gadget, że trzeba wpisać gdzieś linijkę:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />1. jeśli masz projekt w którym wcześniej NIGDY SAM RĘCZNIE nie dodałeś np: tych parametrów: -Wl,--gc-sections to NIGDY w tym pliku .cdproject nie pojawi się cały wpis w XML'u<br /><br />Cytuj:<br />&lt;option id=&quot;de.innot.avreclipse.linker.option.otherlinkargs.292343389&quot; name=&quot;Other Arguments&quot; superClass=&quot;de.innot.avreclipse.linker.option.otherlinkargs&quot; value=&quot;-Wl,--gc-sections&quot; valueType=&quot;string&quot;/&gt;<br /><br /><br />ale jeśli choć raz ręcznie dodasz i nawet usuniesz we właściwościach eclipse ten wpis: -Wl,--gc-sections, to w XML zostanie to:<br />Cytuj:<br />&lt;option id=&quot;de.innot.avreclipse.linker.option.otherlinkargs.292343389&quot; name=&quot;Other Arguments&quot; superClass=&quot;de.innot.avreclipse.linker.option.otherlinkargs&quot; value=&quot;&quot; valueType=&quot;string&quot;/&gt;<br /><br /><br />Ja niestety tu już nie mogę dodać całego pustego wpisu z cudzysłowami i parametrem bo tu eclipse tworzy sobie w locie jakieś ID (handle klasy) jak zwał tak zwał - zaznaczone na niebiesko, i jest to zawsze inne dla danego projeku - ale co ciekawe jak RAZ powstanie to już wciąż występuje takie samo - dlatego wtedy gadżet działa już za każdym razem<br /><br />więc wygląda to na to że trzeba by było RAZ ręcznie projekt zainicjalizować tymi dwoma wpisami ... a już usunąć potrafiłby je gadżet .... eeeeh więc to taka troszkę KULAWA opcja, mało domyślna. Ja czy ty może będziemy pamiętać jak to tworzymy ... ale dla innych nie będzie to w ogóle intuicyjne niestety.<br /></div><br /><br />Tylko nie wiem gdzie i jak to wpisać i czy owa czynność tyczy się jeszcze nowszych wersji Gadgeta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4806">robertaz</a> — 20 maja 2016, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-20T20:39:46+01:00</updated>
<published>2016-05-20T20:39:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160944#p160944</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160944#p160944"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160944#p160944"><![CDATA[
Wykonaj Clean i Build i pokaż całą zawartość okienka Console. Może kompilujesz konfiguracją Debug.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 20 maja 2016, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-19T18:21:52+01:00</updated>
<published>2016-05-19T18:21:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160902#p160902</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160902#p160902"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160902#p160902"><![CDATA[
Dzięki za podpowiedź z rejestrem TCCR0B <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> niedopatrzenie z mojej strony. Widzę, że u Ciebie wszystko pięknie śmiga a u mnie nie za bardzo. [url=https://obrazkiforum.atnel.pl/4806/9b2874b7978636466b1ac72e1fdcd4ee.PNG]<br /><br />Czy jest wymagane jakieś wstępne skonfigurowanie eclipse'a aby opcja boost flash z eclipse gadget zadziałała? Tak czytam i czytam wątek w którym omawiany jest eclipse gadget ale niczego się doszukać nie mogę. Pracuję na Eclipse Luna i pobrałem najnowszą wersję gadgeta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4806">robertaz</a> — 19 maja 2016, o 18:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-18T23:17:37+01:00</updated>
<published>2016-05-18T23:17:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160879#p160879</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160879#p160879"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160879#p160879"><![CDATA[
A u mnie:<br />[syntax=bash]Device: attiny2313a<br /><br />Program:    1090 bytes (53.2% Full)<br />(.text + .data + .bootloader)<br /><br />Data:         15 bytes (11.7% Full)<br />(.data + .bss + .noinit)[/syntax]<br /><br />Kod dla Attiny:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define F_START         F_CPU/8000*13.5<br />#define F_ONE           F_CPU/8000*2.25<br />#define F_ZERO          F_CPU/8000*1.12<br />#define F_MARGIN        F_CPU/8000*0.4<br /><br />#define GORA (1&lt;&lt;PB0)<br />#define DOL (1&lt;&lt;PB1)<br /><br />//deklaracje timerów programowych<br />volatile uint16_t Timer1, Timer2;<br /><br />volatile uint8_t frame_ready;<br />volatile uint8_t address;<br />volatile uint8_t command;<br /><br />int main(void)<br />{<br />DDRB |= (GORA | DOL);  //Ustawienie pinów kontrolujących roletę jako wyjscia<br />PORTB |= GORA;                                      //wyłączenie podnoszenia<br />PORTB |= DOL;                                       //wyłączenie opuszczania<br /><br />PORTD |= (1 &lt;&lt; PD6); /* podciągnięcie wejścia  */<br /><br />TCCR1B |= (1 &lt;&lt; CS11); /* prescaler = 8 */<br />TCCR1B &amp;= ~(1 &lt;&lt; ICES1); /* falling edge */<br />TIMSK |= (1 &lt;&lt; ICIE1); /* enable interrupt */        //ICIE1 dla ATTiny2313<br /><br />//Inicjalizacja Timera0 - przerwania co 20ms (1Hz) tyknięcia programowe dla czterech timerów programowych<br />TCCR0A |= (1 &lt;&lt; WGM01); //tryb pracy CTC                                                                                                TCCR0A |= (1&lt;&lt;WGM01);   ATTiny 2313A<br />TCCR0B |= (1 &lt;&lt; CS02) | (1 &lt;&lt; CS00); //prescaler 1024                                                                                        TCCR0A |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);        ATTiny 2313A<br />OCR0A = 216; //wpisanie wartosci 216 do rej. porównawczego                          OCR0A = 216;<br />TIMSK |= (1 &lt;&lt; OCIE0A); //włączenie przerwań od compare match                                                        TIMSK |= (1&lt;&lt;OCIE0A) ATTiny 2313A<br /><br />sei();<br /><br />while (1)<br />{<br />if (frame_ready)<br />{<br />switch (command)<br />{<br />case 252:                       //klawisz &quot;0&quot;<br />Timer1 = 250;<br />PORTB |= DOL; //jesli podnosimy to musimy pierw wyłączyc opuszczanie rolety<br />PORTB ^= GORA;          //zmiana stanu podnoszenia<br />break;<br /><br />case 184:                       //klawisz &quot;1&quot;<br />Timer2 = 250;<br />PORTB |= GORA; //jesli opuszczamy to musimy pierw wyłączyc podnoszenie rolety<br />PORTB ^= DOL;           //zmiana stanu opuszczania<br />break;<br /><br />default:<br />break;<br />}<br />frame_ready = 0;<br />command = 0xff;<br />address = 0xff;<br />}<br /><br />if (!Timer1)                                          //Jeśli Timer1 = 0<br />{<br />PORTB |= GORA;          //wyłącz port obsługujący podnoszenie rolety<br />}<br /><br />if (!Timer2)                                          //Jeśli Timer2 = 0<br />{<br />PORTB |= DOL;           //wyłącz port obsługujący opuszczanie rolety<br />}<br />}<br /><br />}<br /><br />ISR(TIMER1_CAPT_vect)<br />{<br />static uint32_t temp_frame;<br />static uint16_t last_icr;<br />uint16_t width;<br />static uint8_t frame_idx = 33;<br />uint8_t bit = 2;<br />width = ICR1 - last_icr;<br />last_icr = ICR1;<br /><br />if (frame_idx == 33&amp;&amp; width &gt; F_START - F_MARGIN &amp;&amp; width &lt; F_START + F_MARGIN)<br />{<br />frame_idx--;<br />}<br /><br />if (frame_idx &lt; 32)<br />{<br />if (width &gt; F_ONE - F_MARGIN &amp;&amp; width &lt; F_ONE + F_MARGIN)<br />bit = 1;<br />if (width &gt; F_ZERO - F_MARGIN &amp;&amp; width &lt; F_ZERO + F_MARGIN)<br />bit = 0;<br />if (bit != 2)<br />{<br />temp_frame |= (uint32_t) bit &lt;&lt; frame_idx;<br />if (frame_idx == 0)<br />{<br />address = (uint8_t) (temp_frame &gt;&gt; 24);<br />command = (uint8_t) (temp_frame &gt;&gt; 8);<br />frame_idx = 33;<br />frame_ready = 1;<br />}<br /><br />else<br />{<br />frame_idx--;<br />}<br />}<br /><br />else<br />{<br />frame_idx = 33;<br />}<br />}<br /><br />if (frame_idx == 32)<br />frame_idx--;<br />temp_frame |= (uint32_t) bit &lt;&lt; frame_idx;<br />if (frame_idx == 0)<br />{<br />address = (uint8_t) (temp_frame &gt;&gt; 24);<br />command = (uint8_t) (temp_frame &gt;&gt; 8);<br />temp_frame = 0; //zerowanie<br />frame_idx = 33;<br />frame_ready = 1;<br />}<br />}<br /><br />//=======Procedura obsługi przerwania od przepełnienia Timera 0 (tyknięcia sprzętowe co 20ms) - 2 timery programowe ============<br />ISR(TIMER0_COMPA_vect)                     //TIMER0_COMPA_vect  - ATTiny2313A<br />{<br />uint16_t x;<br />x = Timer1;                                                    //50Hz Timer1<br />if (x)<br />Timer1 = --x;<br />x = Timer2;                                                    //50Hz Timer2<br />if (x)<br />Timer2 = --x;<br />}[/syntax]<br /><br /><br />PS. Zobacz w specyfikacji procesorka jakie bity są w rejestrze TCCR0A, a jakie w TCCR0B<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 18 maja 2016, o 23:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-16T17:58:47+01:00</updated>
<published>2016-05-16T17:58:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160732#p160732</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160732#p160732"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160732#p160732"><![CDATA[
Działający kod pod ATMega32. Prosta obsługa pilota NEC - przełączanie dwóch przekaźników (góra i dół) dwoma przyciskami z pilota. Dodatkowo 2 timery programowe które po czasie 5s wyłączają każdy z przekaźników. Kod zajmuje 2760b Flash oraz 271b RAM. Układ docelowy to ATTiny2313A (2048b Flash i 128b RAM) taktowany rezonatorem o częstotliwości 11059200Hz. Po wstępnej analizie kodu doszedłem do wniosku iż większa część pamięci RAM jest zajmowana przez zmienne statyczne: static uint32_t temp_frame;static uint16_t last_icr;uint16_t width;static uint8_t frame_idx = 33; w podprogramie obsługi przerwania. Tylko nie wiem za bardzo jak się do tego zabrać aby działało innym sposobem.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define F_START         F_CPU/8000*13.5<br />#define F_ONE           F_CPU/8000*2.25<br />#define F_ZERO          F_CPU/8000*1.12<br />#define F_MARGIN        F_CPU/8000*0.4<br /><br /><br />#define GORA (1&lt;&lt;PB0)<br />#define DOL (1&lt;&lt;PB1)<br /><br />//deklaracje timerów programowych<br />volatile uint16_t Timer1, Timer2;<br /><br />volatile uint8_t frame_ready;<br />volatile uint8_t address;<br />volatile uint8_t command;<br /><br />int main(void)<br />{<br />DDRB |= (GORA | DOL);//Ustawienie pinów kontrolujących roletę jako wyjscia<br />PORTB |= GORA;//wyłączenie podnoszenia<br />PORTB |= DOL;//wyłączenie opuszczania<br /><br />PORTD |= (1&lt;&lt;PD6); /* podciągnięcie wejścia  */<br /><br />TCCR1B |= (1&lt;&lt;CS11);    /* prescaler = 8 */<br />TCCR1B &amp;= ~(1&lt;&lt;ICES1);  /* falling edge */<br />TIMSK |= (1&lt;&lt;TICIE1);   /* enable interrupt */  //ICIE1 dla ATTiny2313<br /><br />//Inicjalizacja Timera0 - przerwania co 20ms (1Hz) tyknięcia programowe dla czterech timerów programowych<br />TCCR0 |= (1&lt;&lt;WGM01);//tryb pracy CTCTCCR0A |= (1&lt;&lt;WGM01);ATTiny 2313A<br />TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);//prescaler 1024TCCR0A |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);ATTiny 2313A<br />OCR0 = 216;//wpisanie wartosci 216 do rej. porównawczegoOCR0A = 216;<br />TIMSK |= (1&lt;&lt;OCIE0);//włączenie przerwań od compare match TIMSK |= (1&lt;&lt;OCIE0A) ATTiny 2313A<br /><br />sei();<br /><br />while(1)<br />{<br />if(frame_ready)<br />{<br />switch(command)<br />{<br />case 252://klawisz &quot;0&quot;<br />Timer1 = 250;<br />PORTB |= DOL;//jesli podnosimy to musimy pierw wyłączyc opuszczanie rolety<br />                PORTB ^= GORA;//zmiana stanu podnoszenia<br />                break;<br /><br />                case 184://klawisz &quot;1&quot;<br />                Timer2 = 250;<br />                PORTB |= GORA;//jesli opuszczamy to musimy pierw wyłączyc podnoszenie rolety<br />                PORTB ^= DOL;//zmiana stanu opuszczania<br />                break;<br /><br />                default:<br />                break;<br />}<br />            frame_ready=0;<br />            command=0xff;<br />            address=0xff;<br />}<br /><br /><br />if( !Timer1 )//Jeśli Timer1 = 0<br />{<br />PORTB |= GORA;//wyłącz port obsługujący podnoszenie rolety<br />}<br /><br />if( !Timer2 )//Jeśli Timer2 = 0<br />{<br />PORTB |= DOL;//wyłącz port obsługujący opuszczanie rolety<br />}<br />}<br /><br /><br />}<br /><br />ISR(TIMER1_CAPT_vect)<br />{<br />static uint32_t temp_frame;<br />static uint16_t last_icr;<br />uint16_t width;<br />static uint8_t frame_idx = 33;<br />uint8_t bit = 2;<br />width = ICR1 - last_icr;<br />last_icr = ICR1;<br /><br />if(frame_idx == 33 &amp;&amp; width &gt; F_START - F_MARGIN &amp;&amp; width &lt; F_START + F_MARGIN)<br />    {<br />frame_idx--;<br />    }<br /><br />if(frame_idx &lt; 32)<br />    {<br />        if(width &gt; F_ONE - F_MARGIN &amp;&amp; width &lt; F_ONE + F_MARGIN) bit = 1;<br />        if(width &gt; F_ZERO - F_MARGIN &amp;&amp; width &lt; F_ZERO + F_MARGIN) bit = 0;<br />        if(bit != 2)<br />        {<br />        temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />            if(frame_idx == 0)<br />            {<br />            address = (uint8_t)(temp_frame &gt;&gt; 24);<br />                command = (uint8_t)(temp_frame &gt;&gt; 8);<br />                frame_idx = 33;<br />                frame_ready = 1;<br />            }<br /><br />            else<br />            {<br />            frame_idx--;<br />            }<br />        }<br /><br />        else<br />        {<br />        frame_idx = 33;<br />        }<br />    }<br /><br />if(frame_idx == 32) frame_idx--;<br />    temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />    if(frame_idx == 0)<br />    {<br />    address = (uint8_t)(temp_frame &gt;&gt; 24);<br />    command = (uint8_t)(temp_frame &gt;&gt; 8);<br />    temp_frame = 0; //zerowanie<br />    frame_idx = 33;<br />     frame_ready = 1;<br />    }<br />}<br /><br />//=======Procedura obsługi przerwania od przepełnienia Timera 0 (tyknięcia sprzętowe co 20ms) - 2 timery programowe ============<br />ISR(TIMER0_COMP_vect)//TIMER0_COMPA_vect  - ATTiny2313A<br />{<br />uint16_t x;<br />x = Timer1;//50Hz Timer1<br />if(x) Timer1 = --x;<br />x = Timer2;//50Hz Timer2<br />if(x) Timer2 = --x;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4806">robertaz</a> — 16 maja 2016, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-05-12T19:20:27+01:00</updated>
<published>2016-05-12T19:20:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160508#p160508</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160508#p160508"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160508#p160508"><![CDATA[
<div class="quotetitle">robertaz napisał(a):</div><div class="quotecontent"><br />Czy ktoś ma pomysł jak możnaby zoptymalizować kod aby pozbyć się zbędnych bajtów?<br /></div><br />Eclipse Gadget<br /><br />Pokaż kod, którym się posługujesz. Na forum już były zawody jak zoptymalizować kod. Ciekawe kto się skusi tym razem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 maja 2016, o 19:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[robertaz]]></name></author>
<updated>2016-05-10T21:30:23+01:00</updated>
<published>2016-05-10T21:30:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160399#p160399</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160399#p160399"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=160399#p160399"><![CDATA[
Witam,<br />Odkopię trochę temat ponieważ udało mi się uruchomić program na Atmedze32. Problem pojawił się jednak, kiedy próbowałem przerobić kod na ATTiny2313. Okazuje się iż przekraczam znacznie rozmiary pamięci Flash jak i RAM. Kod Krausera jest w budowie zbliżony do tego, który Mirek napisał w BB, a jednak różnice w zapełnieniu pamięci są znaczne. Czy ktoś ma pomysł jak możnaby zoptymalizować kod aby pozbyć się zbędnych bajtów? <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=4806">robertaz</a> — 10 maja 2016, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-26T23:38:01+01:00</updated>
<published>2015-03-26T23:38:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124750#p124750</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124750#p124750"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124750#p124750"><![CDATA[
Miodzio!<br />Wstawiałem zerowanie po<br />[syntax=c]if(frame_idx == 32) frame_idx--;[/syntax]<br />ale zerowało się wszystko.<br /><br />Dzięki wielkie jeszcze raz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 26 mar 2015, o 23:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-03-26T23:33:52+01:00</updated>
<published>2015-03-26T23:33:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124748#p124748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124748#p124748"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124748#p124748"><![CDATA[
Brakuje tego zerowania:<br />[syntax=c]temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />if(frame_idx == 0)<br />{<br />   address = (uint8_t)(temp_frame &gt;&gt; 24);<br />   command = (uint8_t)(temp_frame &gt;&gt; 8);<br />   inverted_command = (uint8_t)(temp_frame);<br />   temp_frame = 0; //zerowanie <br />   frame_idx = 33;<br />   frame_ready = 1;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 mar 2015, o 23:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-26T23:28:37+01:00</updated>
<published>2015-03-26T23:28:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124747#p124747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124747#p124747"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124747#p124747"><![CDATA[
Cały kod[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &quot;HD44780.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define F_START F_CPU/8000*13.5<br />#define F_ONE F_CPU/8000*2.25<br />#define F_ZERO F_CPU/8000*1.12<br />#define F_MARGIN F_CPU/8000*0.4<br /><br />// Deklaracja klawiszy pilota IR<br />#define RC_UP  226<br />#define RC_DOWN   162<br />#define RC_OK     98<br />#define RC_RIGHT  2<br />#define RC_LEFT   34<br />#define RC_POWER  194<br />#define RC_HOME   144<br /><br />// Koniec deklaracji klawiszy<br /><br />    volatile uint8_t frame_ready;<br />    volatile uint8_t address;<br />    volatile uint8_t command;<br />    volatile uint8_t inverted_command;<br />    volatile uint8_t lcdset;<br /><br />    #define LED1 (1&lt;&lt;PC1)///&lt;&lt;<br />#define LED2 (1&lt;&lt;PC2)///&lt;&lt;<br />#define LED3 (1&lt;&lt;PC3)///&lt;&lt;<br />#define LED4 (1&lt;&lt;PC4)///&lt;&lt;<br /><br />    int main(void)<br />    {<br /><br />DDRC |= LED1|LED2;///wstawione dla testów działania programu<br />DDRC |= LED3|LED4;///wstawione dla testów działania programu<br /><br />        PORTB |= (1&lt;&lt;PB0); /* podciągnięcie wejścia  */<br /><br />            lcd_init();     /* inicjalizacja LCD */<br />            ///lcd_cls();<br />            /* &lt;span class=&quot;posthilit&quot;&gt;ir&lt;/span&gt; timer */<br />            TCCR1B |= (1&lt;&lt;CS11);    /* prescaler = 8 */<br />            TCCR1B &amp;= ~(1&lt;&lt;ICES1);  /* falling edge */<br />            TIMSK1 |= (1&lt;&lt;ICIE1);   /* enable interrupt */<br />            sei();<br /><br />         while(1)<br />            {<br />          if(frame_ready)<br />               {<br />           if( !address ) //jeli adres ==0<br />              {<br />        lcd_locate(0,0); //w pierwszej linii kody klawisza<br />        lcd_int(command);//wyswietl na lcd kod klawisza<br />        lcd_str(&quot;  &quot;); //zamazanie poprzednich dluzszych napisow<br />        lcd_locate(0,8);<br />        lcd_int(inverted_command);//wyswietl na lcd zanegowany kod klawisza<br />        lcd_str(&quot;  &quot;); //zamazanie poprzednich dluzszych napisow<br />        lcd_locate(1,0); // w drugiej linii nazwa<br />                }<br />       switch(command) {<br />          case 98:<br />          lcd_str(&quot;RC_OK&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          case 162:<br />          lcd_str(&quot;RC_DOWN&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          case 226:<br />          lcd_str(&quot;RC_UP&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          case 34:<br />          lcd_str(&quot;RC_LEFT&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          case 2:<br />          lcd_str(&quot;RC_RIGHT&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          case 194:<br />          lcd_str(&quot;RC_POWER&quot;);//wywiela nazwe klawisza<br />          break;<br /><br />          default:<br />          break;<br />       }<br />          lcd_str(&quot;   &quot;); //zamazanie poprzednich dluzszych napisow<br />            frame_ready=0;<br />           command=0xff;<br />           address=0xff;<br />           PORTC ^=  LED1;///LED_ON;<br />               }<br />            }<br /><br /><br />    }<br /><br />ISR(TIMER1_CAPT_vect)<br />{<br /><br />static uint32_t temp_frame;<br />                static uint16_t last_icr;<br />                uint16_t width;<br />                static uint8_t frame_idx = 33;<br />                uint8_t bit = 2;<br />                width = ICR1 - last_icr;<br />                last_icr = ICR1;<br />                if(frame_idx == 33 &amp;&amp; width &gt; F_START - F_MARGIN &amp;&amp; width &lt; F_START + F_MARGIN)<br />                {<br />                frame_idx--;<br />                      }<br />                if(frame_idx &lt; 32)<br />                {<br />                if(width &gt; F_ONE - F_MARGIN &amp;&amp; width &lt; F_ONE + F_MARGIN) bit = 1;<br />                        if(width &gt; F_ZERO - F_MARGIN &amp;&amp; width &lt; F_ZERO + F_MARGIN) bit = 0;<br />                        if(bit != 2)<br />                        {<br /><br />                           temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />                                   if(frame_idx == 0)<br />                                {<br />                                address = (uint8_t)(temp_frame &gt;&gt; 24);<br />                                        command = (uint8_t)(temp_frame &gt;&gt; 8);<br />                                        inverted_command = (uint8_t)(temp_frame);<br />                                        frame_idx = 33;<br />                                        frame_ready = 1;<br />                                                                        }<br />                                else<br />                                {<br />                                        frame_idx--;<br />                                                                        }<br />                        }<br />                        else<br />                        {<br />                                frame_idx = 33;<br />                                                        }<br />                }<br />                if(frame_idx == 32) frame_idx--;<br /><br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 26 mar 2015, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-03-26T23:07:34+01:00</updated>
<published>2015-03-26T23:07:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124745#p124745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124745#p124745"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124745#p124745"><![CDATA[
W pamięci wyświetlacza nic się nie dodaje (ajk już to moga zostawać jakieś znaki, bo nie są nadpisane) Możesz zamiast pętli while ustawić for i dla różnych przebiegów ustawiać sobie command wprost w kodzie a nie na podstawie tego co odbierze pilot.<br /><br />Dodawanie może następować w kodzie przerwania:<br />[syntax=c]temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;[/syntax]<br />ale po odebraniu całej ramki ta zmienna jest zerowana:<br />[syntax=c]temp_frame = 0;[/syntax]<br /><br />Może wklej cały kod.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 mar 2015, o 23:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-26T21:17:41+01:00</updated>
<published>2015-03-26T21:17:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124724#p124724</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124724#p124724"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124724#p124724"><![CDATA[
Tak, przerobiłem w/g Twoich wskazań, fajnie bo widać obie komendy - prostą i zanegowaną ale nadal nie rozwiązuje to problemu zliczania do 250 prosto i 255 zanegowane.<br />Na wyświetlaczu jest:<br />250              255<br />     UP<br />i już nic się nie zmienia a pułapka z leda jaką zrobiłem po wykonaniu case-ów zmienia sie na stan przeciwny po naciśnięciu jakiegokolwiek klawisza na pilocie.<br /><br />P.S.<br />Uint16_t command musiało zostać po kombinacjach jakie próbowałem robić.<br /><br />Tak się teraz zastanawiam czy to nie jest właśnie problemem bo uint8_t ma zakres od 0 do 255 a uint16_t do 65535 ale <br />wygląda to tak jak by w pamięci wyświetlacza dodawały się wartości do siebie aż do osiągnięcia stanu 255.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 26 mar 2015, o 21:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-03-26T19:11:31+01:00</updated>
<published>2015-03-26T19:11:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124711#p124711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124711#p124711"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124711#p124711"><![CDATA[
Komenda w protokole nec ma 8 bitów (dziwne że masz uint16_t command). Dodatkowo ostatni bajt to zanegowany wcześniejszy. Wyświetl sobie obie komendy i sprawdź.<br />[syntax=c]//po odebraniu wszystkich bitow ramki<br />command = (uint8_t)(temp_frame &gt;&gt; 8);<br />inverted_command = (uint8_t)(temp_frame);[/syntax]<br /><br />PS. Nie używaj lcd_cls, bo wyświetlacz będzie migał. Po za tym możesz uprościć ten switch:<br />[syntax=c]//bez cls<br />lcd_locate(0,0); //w pierwszej linii kody klawisza<br />lcd_int(command);//wyswietl na lcd kod klawisza<br />lcd_str(&quot;  &quot;); //zamazanie poprzednich dluzszych napisow<br />lcd_locate(0,8);<br />lcd_int(inverted_command);//wyswietl na lcd zanegowany kod klawisza<br />lcd_str(&quot;  &quot;); //zamazanie poprzednich dluzszych napisow <br />lcd_locate(1,0); // w drugiej linii nazwa<br />switch(command) {<br />   case 98:<br />   lcd_str(&quot;RC_OK&quot;);//wywiela nazwe klawisza<br />   break;<br /> <br />   case 162:<br />   lcd_str(&quot;RC_DOWN&quot;);//wywiela nazwe klawisza<br />   break;<br /><br />   case 226:<br />   lcd_str(&quot;RC_UP&quot;);//wywiela nazwe klawisza<br />   break;<br /><br />   case 34:<br />   lcd_str(&quot;RC_LEFT&quot;);//wywiela nazwe klawisza<br />   break;<br /> <br />   case 2:<br />   lcd_str(&quot;RC_RIGHT&quot;);//wywiela nazwe klawisza<br />   break;<br /> <br />   case 194:<br />   lcd_str(&quot;RC_POWER&quot;);//wywiela nazwe klawisza<br />   break;<br /><br />   default:<br />   break;<br />}<br />lcd_str(&quot;   &quot;); //zamazanie poprzednich dluzszych napisow[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 mar 2015, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-25T23:28:15+01:00</updated>
<published>2015-03-25T23:28:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124652#p124652</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124652#p124652"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=124652#p124652"><![CDATA[
Krauser jednak pomoc Twoja będzie potrzebna.<br />Program działa, ale po naciśnięciu przycisku z kodem 2 wyświetla się 2 - ok, następnie naciśnięcie klawisza z kodem 98 też wyświetla 98, naciśnięcie następnego klawisza z kodem 194 daje już na wyświetlaczu kod 226(jest taki kod pod innym klawiszem). Co może to powodować? Wydaje mi się, że to tak jak by przepełniał się bufor w wyświetlaczu. Proszę podpowiedź coś bo już nie wiem czego się przyczepić.[syntax=c]// Deklaracja klawiszy pilota IR<br /><br />#define RC_UP  226<br />#define RC_DOWN   162<br />#define RC_OK     98 <br />#define RC_RIGHT  2 <br />#define RC_LEFT   34 <br />#define RC_POWER  194<br />#define RC_HOME   144<br />// Koniec deklaracji klawiszy<br /><br />    volatile uint8_t frame_ready;<br />    volatile uint8_t address;<br />    volatile uint16_t command;<br /><br />    int main(void)<br />    {<br /><br />        PORTB |= (1&lt;&lt;PB0);<br /><br />            lcd_init();     /* inicjalizacja LCD */<br />            lcd_cls();<br />            <br />            TCCR1B |= (1&lt;&lt;CS11);    /* prescaler = 8 */<br />            TCCR1B &amp;= ~(1&lt;&lt;ICES1);  /* falling edge */<br />            TIMSK1 |= (1&lt;&lt;ICIE1);   /* enable interrupt */<br />            sei();<br />         while(1)<br />            {<br />          if(frame_ready)<br />               {<br />       switch(command)<br />       {<br />       case 98:<br />       lcd_cls();<br />       lcd_locate(0,0);<br />              lcd_int(command);//wywietl na lcd kod klawisza<br />               lcd_locate(1,0);<br />              lcd_str(&quot;RC_OK&quot;);//wywiela nazwe klawisza<br />              break;<br /><br />       case 162:<br />       lcd_cls();<br />             lcd_locate(0,0);<br />             lcd_int(command);//wywietl na lcd kod klawisza<br />             lcd_locate(1,0);<br />               lcd_str(&quot;RC_DOWN&quot;);//wywiela nazwe klawisza<br />                break;<br /><br />       case 226:<br />       lcd_cls();<br />             lcd_locate(0,0);<br />             lcd_int(command);//wywietl na lcd kod klawisza<br />             lcd_locate(1,0);<br />             lcd_str(&quot;RC_UP&quot;);//wywiela nazwe klawisza<br />             break;<br /><br />       case 34:<br />       lcd_cls();<br />             lcd_locate(0,0);<br />             lcd_int(command);//wywietl na lcd kod klawisza<br />             lcd_locate(1,5);<br />             lcd_str(&quot;RC_LEFT&quot;);//wywiela nazwe klawisza<br />             break;<br /><br />       case 2:<br />       lcd_cls();<br />             lcd_locate(0,0);<br />             lcd_int(command);//wywietl na lcd kod klawisza<br />             lcd_locate(1,0);<br />             lcd_str(&quot;RC_RIGHT&quot;);//wywiela nazwe klawisza<br />             break;<br /><br />       case 194:<br />       lcd_cls();<br />             lcd_locate(0,0);<br />             lcd_int(command);//wywietl na lcd kod klawisza<br />             lcd_locate(1,5);<br />             lcd_str(&quot;RC_POWER&quot;);//wywiela nazwe klawisza<br />             break;<br />       }<br />                  frame_ready=0;<br />             command=0xff;<br />             address=0xff;<br />    }<br /><br />ISR(TIMER1_CAPT_vect)<br />{......[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 25 mar 2015, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-10T00:07:56+01:00</updated>
<published>2015-03-10T00:07:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122859#p122859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122859#p122859"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122859#p122859"><![CDATA[
Krauser jesteś WIELKI!!!!!!! Naprowadziłeś mnie na rozwiązanie problemu, a mianowicie ustawiony był podział przez 8(twoja 4). Dzięki za naukę programowania fusebit-ów w Eclipsie. Dioda mryga jak powinna, program pilota już &quot;działa&quot; ale........ myślę, że to tylko kosmetyka.<br />Odczyt na lcd jest trochę dziwny - chyba nie taki zastosowałem odczyt:<br />[syntax=c]lcd_locate(0,0);<br />lcd_int(address);<br />lcd_str(&quot;  &quot;);<br />lcd_locate(1,0);<br />lcd_int(command);<br />lcd_str(&quot;  &quot;);<br />frame_ready = 0;[/syntax]<br />gdzie adres jest stały - 0 na jednym pilocie i 64 na drugim, <br />a komendy zmieniają się od 0 do 250.<br />Możesz mi jeszcze z tym pomóc abym odczytywał i zrozumiał poprawnie te piloty(do sterowania czymś tam).<br /><br />Krauser pomyślałem trochę przed spaniem i wydumałem trochę, więc spróbuje coś dzisiaj pokombinować bo adres mogę pominąć a jedynie komendy mnie będą interesować. Powinno być już dobrze. Dzięki wielkie jeszcze raz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 10 mar 2015, o 00:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-03-09T19:36:00+01:00</updated>
<published>2015-03-09T19:36:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122791#p122791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122791#p122791"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122791#p122791"><![CDATA[
<div class="quotetitle">JVC napisał(a):</div><div class="quotecontent"><br />Hmm, nie ważne co zmienię z fusebitami to wychodzi na to, że z kwarcu idzie 1MHz a opisany jest 12MHz.<br /></div><br />Jakbyś przestawił fusebity na zewnętrzny kwarc, a kwarc byłby uszkodzony lub źle podłączony to procesor przestałby działać. Nie dałoby się go nawet przeprogramować dopóki nie dołączyłbyś kwarcu.<br /><br />W Eclipse fusebity zmienia się w okienku Properties.<br /><a href="http://forum.atnel.pl/_obrazki/o/465/935b377e8cc1fc38c2051e3adbc482bf.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/465/935b377e8cc1fc38c2051e3adbc482bf.png" alt="Obrazek" /></a><br />Na początku wybierasz opcję direct hex values (1). Potem <strong>koniecznie</strong> odczytujesz to co jest w procesorze(2). Kolejnym krokiem jest uruchomienie edytora (3).<br /><a href="http://forum.atnel.pl/_obrazki/o/465/2370dcb067b58a87d1b0b5f271c88603.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/465/2370dcb067b58a87d1b0b5f271c88603.png" alt="Obrazek" /></a><br />W edytorze wyłączasz podział taktowania przez 8 (4). Wybierasz pracę z zewnętrznym kwarcem &gt; 8 MHz (5). Dobrze jeszcze ustawić start up time na 16K CK + 65ms. Klikasz Apply i jak następnym razem będziesz wgrywał wsad to dopiero wtedy te fusebity się przeprogramują. Jak to zrobisz to z powrotem wybierz opcję do &quot;not set fuse bytes&quot;, aby nie programować fusebitów wielokrotnie.<br /><br />Jak coś poknocisz np. nie odczytasz fusebitów to możesz sobie go tak przestawić, że programator już ci go nie wykryje, ale wtedy będziemy się martwić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 9 mar 2015, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JVC]]></name></author>
<updated>2015-03-08T22:43:38+01:00</updated>
<published>2015-03-08T22:43:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122692#p122692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122692#p122692"/>
<title type="html"><![CDATA[Re: Ir Nec - biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10813&amp;p=122692#p122692"><![CDATA[
Wygląda na to że fusbity mam źle ustawione i mam zaprogramowane na 1MHz. Zmienię to i zobaczę czy program ruszy.<br />Hmm, nie ważne co zmienię z fusebitami to wychodzi na to, że z kwarcu idzie 1MHz a opisany jest 12MHz. Jak ustawiłem w Eclicsie 1MHz dla MCU to wygląda, że zaczyna &quot;czytać&quot; tylko pilota Nec a inne &quot;ignoruje&quot; jak powinno byc i to by zaczęło się <br />zgadzać z tym co Ty pisałeś, że program musi działać. Muszę znaleźć nowy kwarc i zobaczyć jak to wyjdzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7779">JVC</a> — 8 mar 2015, o 22:43</p><hr />
]]></content>
</entry>
</feed>