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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-01-13T14:34:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2067&amp;mode</id>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-13T14:34:56+01:00</updated>
<published>2013-01-13T14:34:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24658#p24658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24658#p24658"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24658#p24658"><![CDATA[
Niestety zmiana kolejności nie wiele dała gdyż objawy są te same co wcześniej czyli po resecie jeśli jest wiecej niż 5 to dioda zgaśnie, znowu reset jeśli mniej to nie. Jak dioda zgaśnie i podam mniej niż 5 to nie zaświeci się ponownie. Wybaczcie ze was tak męczę ale sam raczej nie dojdę w czym jest błąd gdyż słaby zemnie programista<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 13 sty 2013, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-13T14:18:31+01:00</updated>
<published>2013-01-13T14:18:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24651#p24651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24651#p24651"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24651#p24651"><![CDATA[
O to chodzi, że nie bardzo kumam którą linijkę mam zmienić. Chodzi o ponowne włączenie licznika int0 o ile mniemam ale w której linijce mogę go włączyć?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 13 sty 2013, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-13T13:36:32+01:00</updated>
<published>2013-01-13T13:36:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24644#p24644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24644#p24644"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24644#p24644"><![CDATA[
Ok, dzięki Antystatyczny, poprawię kod. A co do pierwszej części mojego pytania mam racje, że trzeba ustawić w tryb normal oraz przerwanie od przepełnienia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 13 sty 2013, o 13:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-13T12:33:18+01:00</updated>
<published>2013-01-13T12:33:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24636#p24636</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24636#p24636"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24636#p24636"><![CDATA[
Czyli jak rozumiem muszę użyć nie trybu CTC a Normal i przerwania od przepełnienia? W jaki inny sposób mogę wyłączyć INT0? zadeklarować funkcje do wyłączania?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 13 sty 2013, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-12T21:42:56+01:00</updated>
<published>2013-01-12T21:42:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24594#p24594</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24594#p24594"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24594#p24594"><![CDATA[
Sprawdź w takiej kolejności:<br />[syntax=c]<br />OCR1A = 31250;                                     // przerwanie co 1s<br />TCCR1B |= (1 &lt;&lt; WGM12);                         // tryb CTC<br />TCCR1B |= (1 &lt;&lt; CS12);                          // preskaler 256<br />[/syntax]<br />jak OCR1A jest równe 0 to program od razu po odblokowaniu przerwania wejdzie w tą procedurę, a tam wyłączasz inne przerwanie (INT0, ale w paskudny sposób) i nie zliczasz już impulsów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 sty 2013, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-12T20:06:41+01:00</updated>
<published>2013-01-12T20:06:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24581#p24581</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24581#p24581"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24581#p24581"><![CDATA[
Znowu ja, tym razem chce wzbogacić swoją wunkcję o licznik impulsów w danym czasie. Dlatego Timer1 odlicza mi czas 1s a przerwania zewnętrzne te właśnie impulsy. Założenie jest takie ze jeśli jest mniej niż 5 impulsów ustawia mi sie stan 1(choć i tak tam jest ale to nie ważne) a jak wiecej to ustawia sie stan 0. Niestety nie ustawia się stan 0 pomimo wiekszej ilości impulsów. Problem wynika z tego ze nie wiem jak dokońca to zapisać, jeśli ktoś mógłby mnie naprowadzić byłbym wdzięczny[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br /><br /><br />#define PIN_IN (1&lt;&lt;PD2)// PD2 jako wejście<br />#define PIN_SWAP (1&lt;&lt;PB0)// PC0 jako wyjście<br />#define PIN_SWAP2 (1&lt;&lt;PC5)<br />#define SET_1 PORTB |= PIN_SWAP<br />#define SET_0 PORTB &amp;= ~PIN_SWAP<br />#define LED_T0G PORTC ^= PIN_SWAP2<br /><br /><br />volatile uint32_t licznik = 0;<br />//volatile uint8_t licznik_czasu = 0;<br /><br /><br /><br /><br /><br /><br />ISR (INT0_vect)// przerwania zewnętrzne<br />{<br />if(bit_is_set(PIND,PD2))<br />{<br />licznik++;<br />}<br /><br />}<br />ISR (TIMER1_COMPA_vect)// przerwania od timera1<br />{<br /><br />static uint8_t licznik_czasu=0;<br /><br />licznik_czasu++;// zwiekszaj licznik_czasu o 1 co 1s<br /><br /><br />if(licznik_czasu==1)// jeśli licznik czasu =1<br />{<br />licznik_czasu=0;// resetuj licznik czasu 1s<br /><br />GICR = (0&lt;&lt;INT0);<br /><br />if(licznik&gt;5){<br />SET_0;<br />}<br />if(licznik&lt;5){<br />SET_1;<br />}<br />}<br /><br /><br />//if(licznik_czasu == 1) licznik_czasu = 0; // jeśli licznik czasu &gt;1 licznik_czasu = 0<br /><br />}<br /><br /><br />int main (void){<br /><br />//***********************************************************************<br /><br />DDRD &amp;= ~PIN_IN;// kierunek PD2 - wejściowy<br />DDRB |= PIN_SWAP;// kierunek PC0 - wyjściowy<br />DDRC |= PIN_SWAP2;<br />//***********************************************************************<br />PORTD &amp;= ~PIN_IN;// PD2 początkowy stan 0<br />PORTB |= PIN_SWAP;// podciągniecie rezystora vcc do PC0<br />PORTC |= PIN_SWAP2;<br />//******Konfiguracja przerwań zewnętrznych*********<br /><br />MCUCR = (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);  // zbocze narastające<br />GICR = (1&lt;&lt;INT0);               // włącz przerwania z INT0<br />//******Konfiguracja Timera1*********<br />TCCR1B |= (1 &lt;&lt; WGM12);                         // tryb CTC<br />TCCR1B |= (1 &lt;&lt; CS12);                          // preskaler 256<br />OCR1A = 31250;// przerwanie co 1s<br />TIMSK |= (1 &lt;&lt; OCIE1A);<br /><br />//***********************************************************************<br />sei();                          // przerwania globalne włączone<br /><br />while(1){<br /><br />}<br /><br />}<br /><br />[/syntax]<br />tzn układ działa aczkolwiek połowicznie po resecie jesli podam liczbę wiekszą niż 5 impulsów na sekundę dioda nie gaśnie natomiast po resecie jesli podam wiesza liczbe niz 5 impulsów dioda gaśnie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 12 sty 2013, o 20:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-11T20:03:32+01:00</updated>
<published>2013-01-11T20:03:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24468#p24468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24468#p24468"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24468#p24468"><![CDATA[
[syntax=c]język c<br />#define PIN_IN (1&lt;&lt;PD2)         // PD2 jako wejście<br />#define PIN_SWAP (1&lt;&lt;PB0)       // PB0 jako wyjście<br />#define SET_1 PORTB |= PIN_SWAP<br />#define SET_0 PORTB &amp;= ~PIN_SWAP<br />#define SWAP_IS_SET (PINB &amp; PIN_SWAP)<br />//...<br />ISR (INT0_vect)<br />{<br />        if(SWAP_IS_SET)<br />        {<br />                licznik++;<br />        }<br />}[/syntax]<br /><br />Oczywiście wkradł się mój błąd ponieważ przerwanie jest od sygnału podanego na PD2 a nie od PB0 gdyż jest to wyjście. Stąd pewnie wynikają  twoje wątpliwości. Co do dostępu, spróbuje zmienić i zobaczymy co z tego wyjdzie. Powinno być tak<br />[syntax=c]#define SWAP_IS_SET (PIND &amp; PIN_IN)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 11 sty 2013, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-11T11:14:09+01:00</updated>
<published>2013-01-11T11:14:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24383#p24383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24383#p24383"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24383#p24383"><![CDATA[
1. Używając w kodzie <em>bit_is_set(PINB,PB0)</em> odchodzisz od tego co sam robisz na początku definiując wejścia i wyjścia. Lepiej tak:<br />[syntax=c]#define PIN_IN (1&lt;&lt;PD2)         // PD2 jako wejście<br />#define PIN_SWAP (1&lt;&lt;PB0)       // PB0 jako wyjście<br />#define SET_1 PORTB |= PIN_SWAP<br />#define SET_0 PORTB &amp;= ~PIN_SWAP<br />#define SWAP_IS_SET (PINB &amp; PIN_SWAP)<br />//...<br />ISR (INT0_vect)<br />{<br />        if(SWAP_IS_SET)<br />        {<br />                licznik++;<br />        }<br />}[/syntax]<br />2. Nie wiem też po co właściwie tak robisz. Zauważ, że jak ustawisz coś na porcie (PORTx) to jak chcesz natychmiast odczytać ten stan (PINx) to musisz odczekać jedną instrukcję np. nop<br />3. Jeśli chodzi o dostęp do zmiennych volatile, które są większe niż 8 bitów to nie należy tego robić jak masz w kodzie, ponieważ długa zmienna nie zostanie odczytana w jednym takcie zegara tylko zajmie to więcej czasu, a przerwanie może zostać zgłoszone w trakcie tego odczytu, zmieni wartość zmiennej, ale odczyt może być błędny. Przykładowo masz liczbę 16 bitową 0x00FF. Podczas odczytu celem porównania do rejestrów trafi przykładowo najpierw 0x00 potem przerwanie zwiększy liczbę o 1. Liczba ma wartość 0x0100 i w kolejnym odczycie do drugiego rejestru trafi 0x00. Co będzie skutkowało błędem, bo porównasz liczbę 0x0000 zamiast 0x00FF lub 0x0100, a powiedzmy, że sprawdzałeś warunek if (liczba&gt;2), który tym razem pomimo, że prawdziwy, będzie uznany za fałszywy.<br />Poprawnie w kodzie należy tak zrobić:<br />[syntax=c]#include &lt;util/atomic.h&gt;<br />volatile uint32_t licznik = 0;<br /> <br />int main (void){<br />        uint32_t temp_licznik;<br />        //...<br />        sei();                          // przerwania globalne włączone <br />        while(1){<br />           ATMOIC_BLOCK(FORCE_ON)<br />           {<br />              temp_licznik=licznik;<br />           }<br />           if(temp_licznik&gt;2)<br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 11 sty 2013, o 11:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-10T22:56:29+01:00</updated>
<published>2013-01-10T22:56:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24356#p24356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24356#p24356"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=24356#p24356"><![CDATA[
Ponownie borykam się z problemem gdyż tym razem postanowiłem sprawdzić przerwania zewnętrzne. Zadanie jest proste za pomocą przerwań zewnętrznych zliczmy impulsy, jesli jest ich jakaś tam ilość to zmienia stan na innej nóżce. W  moim wypadku wyzwolenie odbywa się przy zboczu narastającym. Impulsy generuje przez ne555 f=ok1Hz. Podłączyłem PB0 rezystorem 30k masę i podaje impulsy. Problem jest taki, że nie liczy mi tyle ile chce impulsów, zlicza ich zdecydowanie za dużo i za każdym razem inną ilość. Przedstawiam kod, w czym może tkwić problem? Dodam jeszcze ze procesor to atmega8<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br /><br /><br />#define PIN_IN (1&lt;&lt;PD2)// PD2 jako wejście<br />#define PIN_SWAP (1&lt;&lt;PB0)// PC0 jako wyjście<br />#define SET_1 PORTB |= PIN_SWAP<br />#define SET_0 PORTB &amp;= ~PIN_SWAP<br /><br />volatile uint32_t licznik = 0;<br /><br />void ioint (void);<br /><br />ISR (INT0_vect)<br />//SIGNAL(SIG_INTERRUPT0)<br />{<br />if(bit_is_set(PINB,PB0)){<br />licznik++;<br />}<br /><br />}<br /><br /><br /><br />int main (void){<br /><br />DDRD &amp;= ~PIN_IN;// kierunek PD2 - wejściowy<br />DDRB |= PIN_SWAP;// kierunek PC0 - wyjściowy<br /><br />PORTD &amp;= ~PIN_IN;// PD2 początkowy stan 0<br />PORTB |= PIN_SWAP;// podciągniecie rezystora vcc do PC0<br /><br />MCUCR = (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);  // zbocze narastające<br />GICR = (1&lt;&lt;INT0);               // włącz przerwania z INT0<br /><br />sei();                          // przerwania globalne włączone<br /><br />while(1){<br /><br />}<br />if(licznik&gt;2){<br /><br />SET_0;<br />}<br />}<br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 10 sty 2013, o 22:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-01-08T10:19:02+01:00</updated>
<published>2013-01-08T10:19:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23932#p23932</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23932#p23932"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23932#p23932"><![CDATA[
1. Nie. Timer0 jest zatrzymany. Dopiero po zmianie stanu na PB0 jest uruchomiony. <br />2. 32 wynika z czasu 1,7ms (czas na początku pliku inny niż w komentarzu dalej). ( 1 / ( 1,2MHz/64 ) )*32<br />3. toogle to zmienna pomocnicza i jest używana w ISR (PCINT0_vect).<br />4. po pierwszym wciśnięciu timer ciągle działa i co 13,6ms się przepełnia generując sygnał przerwania. Biorąc po uwagę liczby 3000 i 255 to po 12 takich przerwaniach za pierwszym razem (za drugim będzie inaczej bo length nie jest zerowane) ustawiona zostanie flaga beeping<br /><br />Jeśli nie chcesz się uczyć złych nawyków to wywal cały ten kod do kosza bo:<br />-rejestry ustawiane są w beznadziejny sposób (liczby dziesiętne, nie używane nazwy bitów w rejestrach)<br />-beeping nie jest z modyfikatorem volatile<br />-jak będziesz chciał coś zmienić to czekają cię powtórne obliczenia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 8 sty 2013, o 10:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-07T22:38:28+01:00</updated>
<published>2013-01-07T22:38:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23862#p23862</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23862#p23862"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23862#p23862"><![CDATA[
Czy mógłbym prosić o pomoc w analizie pewnego kodu który znalazłem<br />[syntax=c] <br /><br />BEEPER TINY1      Clock 9,6Mhz / 8<br />  *  Toggles pin 3&amp;4 to HIGH if signal length is &gt; 1,7ms<br />  *<br />  *  PINOUT: Servo Signal IN: PIN 5 (PB0)<br />  *          Beeper OUT: PIN 2 (PB3) &amp; PIN 3 (PB4)<br />  *<br />  *****************************************************************************/<br /><br /><br />#include &lt;inttypes.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />uint8_t toggle = 1;<br />uint8_t new = 1;<br />uint8_t beeping;<br />uint16_t length;<br /><br />// on timer0 overflow<br />ISR (TIM0_OVF_vect)<br />{<br />length += 255;<br />// if no signal for some time -&gt; enable beep<br />if (length &gt; 3000) {<br />//PORTB = 8;<br />beeping = 1;<br />}<br />}<br /><br />// on PB0 pinchange<br />ISR (PCINT0_vect)<br />{<br />  if ((PINB &amp; 1)==1) // check 1st bit of PORTB (pin 5) got HIGH<br />  {<br />length = 0;<br />    TCNT0 = 0; // reset timer<br />    TCCR0B = 3;// start timer (prescaler :64)<br />  }<br />  else {// check 1st bit of PORTB (pin 5) got LOW<br />TCCR0B = 0; // stop timer0<br />if (TCNT0 &gt;32) {// if high was longer than 1,5ms<br /><br />if (new == 1) {<br />if (toggle == 1) {<br />toggle = 0;<br />beeping = 1;<br />} else {<br />toggle = 1;<br />beeping = 0;<br />}<br />}<br />new = 0;<br />} else {<br />new = 1;<br />}<br />TCNT0 = 0;  // reset timer<br />TCCR0B = 3;// start timer (prescaler :64)<br />  }<br />}<br /><br />int main (void)<br />{<br /><br />  DDRB = 254;// portb PB0 as input, rest as output<br />PORTB = 0; // portb to 0<br /><br />  TCCR0B = 0; // stop timer0<br />  TIMSK0 = 2; // timer0 Overflow Interrupt Enable<br />  TCNT0 = 0; // timer startval = 0<br /><br /><br />GIMSK = 32;// enable Ext Interrupt on PinChange<br />  PCMSK = 1; // set Ext Interrupt on PB0 (pin 5)<br /><br />  sei(); // Interrupts on.<br /><br />uint16_t j; // define a wait counter variable<br /><br />while(1)<br />{<br />if (1 == beeping) { // blink whith short duty cycle<br />PORTB = 24;<br />j=10000;<br />            while(0&lt;j--);<br />PORTB = 0;<br />j=50000;<br />            while(0&lt;j--);<br />} else {  // set port to 0<br />PORTB = 0;<br />}<br />}<br />}<br />[/syntax]<br /><br />konkretnie chodzi mi o część<br />[syntax=c]ISR (TIM0_OVF_vect)<br />{<br />length += 255;<br />// if no signal for some time -&gt; enable beep<br />if (length &gt; 3000) {<br />//PORTB = 8;<br />beeping = 1;<br />}<br />}<br /><br />// on PB0 pinchange<br />ISR (PCINT0_vect)<br />{<br />  if ((PINB &amp; 1)==1) // check 1st bit of PORTB (pin 5) got HIGH<br />  {<br />length = 0;<br />    TCNT0 = 0; // reset timer<br />    TCCR0B = 3;// start timer (prescaler :64)<br />  }<br />  else {// check 1st bit of PORTB (pin 5) got LOW<br />TCCR0B = 0; // stop timer0<br />if (TCNT0 &gt;32) {// if high was longer than 1,5ms<br /><br />if (new == 1) {<br />if (toggle == 1) {<br />toggle = 0;<br />beeping = 1;<br />} else {<br />toggle = 1;<br />beeping = 0;<br />}<br />}<br />new = 0;<br />} else {<br />new = 1;<br />}<br />TCNT0 = 0;  // reset timer<br />TCCR0B = 3;// start timer (prescaler :64)<br />  }<br />}[/syntax]<br /><br />Moja interpretacja jest taka ze timer0 dodaje do zmiennej length wartość 255 co czas zgodny z cyklem zegara czyli 1.2MHz poniewaz nie widzę na razie prescalera.<br />Gdy stan wejściowy na pinie PB0 j== 1 zmienna length jest zerowana rejestr TCNT0 jest zerowany i prescaler ustawiany jest na 64 czyli zlicza co 18750Hz i zaczynany jest pomiar długości tego impulsu. Następnie gdy na pinie PB0 pojawi się stan niski zatrzymywany jest timer0. I teraz mój dylemat, jeśli TCNT0 jest &gt; od 32 to zmienna new= 0 a jak TNCT0 jest&lt; od 32 to zmienna new=1.Następnie jeśli new ==1 i toggle==1 to toggle=0, beeping=1 w przeciwnym razie gdy togle!=1 toggle=1 a beeping=0.<br /><br />Moje pytania to:<br />1.czy prawidłowo interpretuje kod?<br />2.skąd się wzięła wartość 32 i jest ona wyznacznikiem do porównania TCNT0?<br />3.Wiem ze zmienna toggle służy do zmiany stanu ale jak skoro nie jest użyta w żadnej innej funkcji.<br />4.co daje nam dodawanie do zmiennej length wartości 255?<br /><br />Z góry wybaczcie ze zadaje pewnie banalne pytania lecz jak mówiłem jestem noga z programowania i uważam ze lepiej sie zapytać niż nauczyć się jakiś złych nawyków<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 7 sty 2013, o 22:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T20:39:25+01:00</updated>
<published>2013-01-06T20:39:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23693#p23693</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23693#p23693"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23693#p23693"><![CDATA[
Faktycznie po dodaniu pętli nieskończonej PB3 zmienia stan:) no to teraz przyjrzę się mojemu początkowemu programowi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-06T20:20:27+01:00</updated>
<published>2013-01-06T20:20:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23689#p23689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23689#p23689"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23689#p23689"><![CDATA[
a to teraz rozumiem więcej a porada oczywiście była bardzo cenna jak widać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo można sobie pisać wielki program ale co z tego jak jeden z mniejszych bloczków jak przerwanie nie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no to trza szukać błędu - w kodzie<br /><br />nota PDF w łapki i do roboty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />.... no ale jak się popatrzy do PDF'a to szybko się okaże że ten kod wyżej jest poprawnie napisany jeśli chodzi o odpalenie tego przerwania. Niestety SZKOLNY błąd - a prawie w KAŻDYM swoim poradniku VIDEO pokazuję jak ja zaczynam sobie pisać szkielet programu - przypomnę tutaj ale chyba po raz ostatni <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie mówiąc że i w pierwszej książce to wałkuję na jej samym początku<br /><br />[syntax=c]int main( void ) {<br /><br /><br />   while(1) {<br />   }<br /><br />}[/syntax]<br /><br />a kolega co ? ..... widzi różnicę ? bo to właśnie pewnie przez ten NIBY drobny szczegół jak to kolega napisał NIE DZIAŁA - bo rzeczywiście - tak kolega chciał pisząc swój kod żeby nie działało<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sty 2013, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T20:09:43+01:00</updated>
<published>2013-01-06T20:09:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23685#p23685</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23685#p23685"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23685#p23685"><![CDATA[
Okej, na wstępie przepraszam.<br /><br />Problem jest następujący, założyłem sobie, że zrobię włącznik PWM który po dostaniu określonej długości impulsu ustawi na pinie PB3 stan 0 lub 1.  Niestety nie ustawia się stan 1 (bo 0 cały czas panuje), w czasie kompilacji nie ma błędu wiec zacząłem szukać problemu małymi kroczkami jak doradził jeden z kolegów. Napisałem przerwanie CTC dioda niestety nie miga<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 20:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-06T20:00:05+01:00</updated>
<published>2013-01-06T20:00:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23682#p23682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23682#p23682"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23682#p23682"><![CDATA[
<div class="quotetitle">staneq napisał(a):</div><div class="quotecontent"><br />Nie wiem dokładnie co chcesz uzyskać. Czytam i czytam ale nie potrafię tego zrozumieć. <br />Zrozumiałem tylko że masz mierzyć czas impulsu (jak mniemam z kodu w stanie niskim) i ustawić 1 na pinie wyjściowym jeżeli długość ta będzie mieścić się w przedziale &lt;800;1350) w przeciwnym razie ustawić na 0<br />Jakbyś mógł napisać to tak jasno jak się tylko da i być może jakiś algorytm (jeśli masz a jeśli nie to napisz go sobie to Ci znacznie ułatwi sprawę)<br /></div><br /><br />Ja też już wcześniej obserwowałem ten temat ale też przyznam że nie rozumiałem za bardzo o co chodzi więc się nie odzywałem. Teraz z końcówki widzę że chodzi chyba o badanie czasu impulsu jako do serwo. OK już jaśniej ...<br /><br />no ale o co chodzi w ostatnim poście ??? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Panowie jak podajecie jakiś kod - to nie piszcie proszę:<br /><br />&quot;I NIE DZIAŁA&quot;<br /><br />skąd ja czy ktoś może wiedzieć co koledze nie działa ??? no tak nie można opisywać problemu - jest sobie odpalone przerwanie CTC, ma migać dioda. To co to znaczy NIE DZIAŁA ? jaki jest efekt ? dioda miga? nie miga, świeci ale słabiej? przerwanie nie działa? jakiś błąd w kompilatorze ??? no bo tracimy tylko troszkę czas <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />ważne jest aby dobrze zadać pytanie - to wtedy szybciej można udzielić odpowiedzi. Tyle że autor zwykle wiedząc wszystko o swoich założeniach , schemacie itp zakłada że inni też to skądś wiedzą .... tylko ciekawe skąd?<br /><br />no i teraz jakie jest pytanie w ogóle - ??? proszę bardziej sprecyzować temat - wtedy jeśli będę w stanie to postaram się pomóc ok ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sty 2013, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T19:24:59+01:00</updated>
<published>2013-01-06T19:24:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23672#p23672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23672#p23672"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23672#p23672"><![CDATA[
No dobra napisałem coś takowego i... Nie działa;)<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2013-01-06<br /> *      Author: Abobik<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br /><br />#define LED_PIN (1&lt;&lt;PB3)// definicja pinu do którego podłączona jest dioda<br />#define LED_TOG PORTB ^=LED_PIN<br /><br />// ********************************************************* 1-sza wersja<br />int main(void)<br />{<br /><br />DDRB |= LED_PIN;<br />//********    konfiguracjia timera programowego    **********<br /><br />TCCR0A |= (1&lt;&lt;WGM01);        // tryb CTC<br />TCCR0B |= (1&lt;&lt;CS02 | 1&lt;&lt;CS00);       // prescaler 1024<br />OCR0A = 200;                // 1 200 000 / 1024 / 200 ~6hz<br />TIMSK0 |= (1&lt;&lt;OCIE0A); // zezwolenie na przerwanie od timera0<br /><br />//********************************************************************************<br />sei();// globalne zezwolenie na przerwanie<br /><br />}<br />ISR( TIM0_COMPA_vect )<br />{<br />LED_TOG;<br />}<br />[/syntax]<br /><br />Zapwne pomyliłem nazwę któregoś z rejestrów ale nie wiem którego. Prosze o pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 19:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T17:45:09+01:00</updated>
<published>2013-01-06T17:45:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23665#p23665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23665#p23665"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23665#p23665"><![CDATA[
Well, I'm no Servo expert, but... <br /><br />If the RC receiver channel is for driving a servo then the signal is likely a series of pulses. <br /><br />A pulse occurs about once every 20 mSec. <br /><br />The width of the high time of the pulse is about 1 to 2 mSec. <br /><br />A pulse width of 1.5 mSec generally positions the servo to the middle of its full range of travel, (e.g. 90 degrees for a 0 to 180 degree range servo). <br /><br />One could use the micro to read in the pulses and measure their width. <br /><br />If the pulse width is &lt; 1.25 mSec, (Full left rudder = about 1.0 mSec), then turn On the lights. <br /><br />If the pulse width is &gt; 1.75 mSec, (Full right rudder = 2 mSec), then turn Off the lights. <br /><br />If the micro has nothing else to do then it could read the pulse width in the Main Loop. <br /><br />If the micro has other things to do then one could use interrupts to time the pulse. <br /><br /><br /><br />z tego co wywnioskowałem to impuls trwa od 1ms do 2 z przerwą co około 20ms czyli wynika z tego ze gdy jest stan 1 to nic się nie dzieje gdy jest 0 licznik ten wewnętrzny zlicza te 20ms + licznik zewnetrzny który zlicza długość tego impulsu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 17:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-01-06T17:28:15+01:00</updated>
<published>2013-01-06T17:28:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23663#p23663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23663#p23663"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23663#p23663"><![CDATA[
Nie wiem dokładnie co chcesz uzyskać. Czytam i czytam ale nie potrafię tego zrozumieć. <br />Zrozumiałem tylko że masz mierzyć czas impulsu (jak mniemam z kodu w stanie niskim) i ustawić 1 na pinie wyjściowym jeżeli długość ta będzie mieścić się w przedziale &lt;800;1350) w przeciwnym razie ustawić na 0<br />Jakbyś mógł napisać to tak jasno jak się tylko da i być może jakiś algorytm (jeśli masz a jeśli nie to napisz go sobie to Ci znacznie ułatwi sprawę)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 6 sty 2013, o 17:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T16:55:35+01:00</updated>
<published>2013-01-06T16:55:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23655#p23655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23655#p23655"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23655#p23655"><![CDATA[
Ja jestem noga z programowania dlatego pytam tylko, jestem wdzięczny za wszystkie sugestie i podpowiedzi.<br />Jak Twoim zdaniem powinno to wyglądać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-01-06T16:51:05+01:00</updated>
<published>2013-01-06T16:51:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23653#p23653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23653#p23653"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23653#p23653"><![CDATA[
<div class="quotetitle">KBCH napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">staneq napisał(a):</div><div class="quotecontent">To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.<br /></div><br /><br />[syntax=c]f(PORT_WE)<br />    {<br />        TCNT0 = 0;<br />        licznik = 0;<br />    }[/syntax]<br /> A nie jest to zerowanie licznika?</div><br /><br />Jest ale tylko w pewnych warunkach. Jeżeli tak ma być tzn że nie zrozumiałem o co Ci chodzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 6 sty 2013, o 16:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lemosek]]></name></author>
<updated>2013-01-06T16:07:35+01:00</updated>
<published>2013-01-06T16:07:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23648#p23648</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23648#p23648"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23648#p23648"><![CDATA[
Witam,<br />to może inaczej, małymi kroczami. Najpierw sprawdź czy w ogóle generują ci się przerwania zew. np. zapalając diodę. Później sprawdź timer.<br /><br />Pozdrawiam<br />R.L.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=426">Lemosek</a> — 6 sty 2013, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T15:58:38+01:00</updated>
<published>2013-01-06T15:58:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23647#p23647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23647#p23647"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23647#p23647"><![CDATA[
wrzucam kod po poprawkach lecz w dalszym ciągu nic się nie dzieje.<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/eeprom.h&gt;<br />#include &lt;avr/wdt.h&gt;<br /><br /><br />#define PORT_WE(PINB &amp; (1 &lt;&lt; 1))  // PB1 jako wejście<br />#define PORT_WY_1 (PORTB |= (1 &lt;&lt; 3))<br />#define PORT_WY_0 (PORTB &amp;= ~(1 &lt;&lt; 3))<br /><br />//******************************************<br /><br /><br />void ioinit(void);<br />volatile uint32_t licznik = 0;<br />volatile uint16_t dlugosc_impulsu = 0;<br /><br /><br />ISR(TIM0_COMPA_vect)//zwiekszanie licznika co 200us<br />{<br />    licznik++;<br />}<br /><br /><br />ISR(INT0_vect)// zewnętrzne przerwanie<br />{<br />if(PORT_WE)<br />    {<br />        TCNT0 = 0;<br />        licznik = 0;<br />    }<br />    else<br />    {<br />        dlugosc_impulsu = (licznik * 200) + TCNT0; //COnvert the useconds to miliseconds<br />    }<br />}<br />int main(void)<br />{<br />ioinit();//inicjalizacja portów i tmerów<br /><br /><br />while(1)<br />{<br /><br />       if((dlugosc_impulsu &lt; 1350)&amp;&amp;(dlugosc_impulsu &gt;= 800))<br />       {<br />      PORT_WY_1;<br />       }<br />       else<br />       {<br />       PORT_WY_0;<br />       }<br /><br />}<br />}<br />void ioinit(void)<br />{<br />    //konfiguracja portow<br />     DDRB  = 0b00001000;//PB1 jako wejscie, PB3 wyjscie<br />     PORTB |= PORT_WE;<br /><br /><br />    //konfiguracja timera<br />    TCCR0B |= (1&lt;&lt;WGM01);// tryb CTC<br />    TCCR0B |= (1&lt;&lt;CS01); // prescaler=8<br />    OCR0B = 167;// przerwanie co ok 200us (9,6/8)=1,2us 1,2*167~200<br /><br />    //konfiguracja zewnatrznych przerwań<br />    MCUCR |= ((0&lt;&lt;ISC01)|(1&lt;&lt;ISC00)); // dowolna zmiana stanu powoduje przerwanie<br />    GIMSK |= (1&lt;&lt;INT0);// aktywne załączenie przerwania<br /><br />    sei();<br /><br /><br />}<br />[/syntax]<br />Zauważyłem ze procesor jest Tiny13A czy może mieć to znaczenie? Po podciągnięciu zasilania do pinu wejściowego jest dziwne napięcie w granicach 1.5V.<br /><br /><div class="quotetitle">staneq napisał(a):</div><div class="quotecontent"><br />To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.<br /></div><br /><br />[syntax=c]f(PORT_WE)<br />    {<br />        TCNT0 = 0;<br />        licznik = 0;<br />    }[/syntax]<br /> A nie jest to zerowanie licznika?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lemosek]]></name></author>
<updated>2013-01-06T15:45:41+01:00</updated>
<published>2013-01-06T15:45:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23644#p23644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23644#p23644"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23644#p23644"><![CDATA[
Witam,<br />nie widzę w kodzie załączenia przerwań globalnych sei();<br /><br />Pozdrawiam<br />R.L.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=426">Lemosek</a> — 6 sty 2013, o 15:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-01-06T15:43:58+01:00</updated>
<published>2013-01-06T15:43:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23643#p23643</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23643#p23643"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23643#p23643"><![CDATA[
To pobaw się jeszcze w przerwaniu zewnętrznym. Zauważ że stan wysoki na porcie powoduje wyzerowanie licznika natomiast stan niski spowoduje obliczenie czasu trwania ale nie zerujesz licznika.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 6 sty 2013, o 15:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KBCH]]></name></author>
<updated>2013-01-06T15:34:56+01:00</updated>
<published>2013-01-06T15:34:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23637#p23637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23637#p23637"/>
<title type="html"><![CDATA[Re: Problem z przerwaniami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2067&amp;p=23637#p23637"><![CDATA[
masz racje, mój błąd zamieniłem na<br />[syntax=c]PORTB |= PORT_WE;[/syntax]<br />aczkolwiek problem nie jest w dalszym ciągu rozwiazany<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=781">KBCH</a> — 6 sty 2013, o 15:34</p><hr />
]]></content>
</entry>
</feed>