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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-22T21:25:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11455&amp;mode</id>
<entry>
<author><name><![CDATA[asek5]]></name></author>
<updated>2015-04-22T21:25:47+01:00</updated>
<published>2015-04-22T21:25:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127206#p127206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127206#p127206"/>
<title type="html"><![CDATA[Re: Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127206#p127206"><![CDATA[
NO i działa !!<br />Dziękuje koledze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5515">asek5</a> — 22 kwi 2015, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-04-22T21:14:30+01:00</updated>
<published>2015-04-22T21:14:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127204#p127204</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127204#p127204"/>
<title type="html"><![CDATA[Re: Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127204#p127204"><![CDATA[
Z tego co widzę używasz Mirkowej biblioteki do Uartu, która do działania wykorzystuje przerwania.  A ty używasz jej wewnątrz przerwania INT0. A jak wiadomo, po wejściu do jakiegokolwiek przerwania, procesor wyłącza wszystkie inne przerwania. I pewnie dlatego nie działa ci uart_putc wewnątrz przerwania INT0.<br /><br />Dla testu w przerwaniu INT0 ustaw tylko flagę. W pętli głównej sprawdzaj czy flaga ustawiona. Jeśli tak to wyzeruj ją i wyślij dane przez uart<br />[syntax=c]ISR( INT0_vect )<br />{<br />      flaga=1;<br />}[/syntax]<br /><br />[syntax=c]if(flaga)<br />{<br />      flaga=0;<br />      uart_puts(&quot;INT0&quot;);<br />      uart_puts(&quot;\r\n&quot;);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 22 kwi 2015, o 21:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[asek5]]></name></author>
<updated>2015-04-22T17:08:05+01:00</updated>
<published>2015-04-22T17:08:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127169#p127169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127169#p127169"/>
<title type="html"><![CDATA[Re: Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127169#p127169"><![CDATA[
Przepraszam myślałem że problem może być znany. [syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &quot;MK_RFM69C/mk_rfm69.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br />//----- preprocesor -------------------------------------------<br />#define TIMEOUT_LED(1&lt;&lt;PD7)<br />#define TIMEOUT_LED_PORTPORTD<br />#define TIMEOUT_LED_DIRDDRD<br />#define TIMEOUT_LED_ONTIMEOUT_LED_PORT &amp;= ~TIMEOUT_LED<br />#define TIMEOUT_LED_OFFTIMEOUT_LED_PORT |= TIMEOUT_LED<br />#define TIMEOUT_LED_TOGTIMEOUT_LED_PORT ^= TIMEOUT_LED<br /><br />#define DATA_LED(1&lt;&lt;PB1)<br />#define DATA_LED_PORTPORTB<br />#define DATA_LED_DIRDDRB<br />#define DATA_LED_ONDATA_LED_PORT &amp;= ~DATA_LED<br />#define DATA_LED_OFFDATA_LED_PORT |= DATA_LED<br />#define DATA_LED_TOGDATA_LED_PORT ^= DATA_LED<br /><br />#define PWM1_LED(1&lt;&lt;PB3)<br />#define PWM1_LED_PORTPORTB<br />#define PWM1_LED_DIRDDRB<br />#define PWM1_LED_ONPWM1_LED_PORT &amp;= ~PWM1_LED<br />#define PWM1_LED_OFFPWM1_LED_PORT |= PWM1_LED<br />#define PWM1_LED_TOGPWM1_LED_PORT ^= PWM1_LED<br />//------------------ variables --------------------------------<br />uint8_t out_buf&#91; MAX_RFM69_BUF+1 &#93; = &quot;mirekk36&quot;;<br />uint8_t in_buf&#91; MAX_RFM69_BUF+1 &#93; ;<br /><br />const char net_id&#91;&#93; PROGMEM = &quot;atnel.pl&quot;;<br /><br />volatile uint16_t Timer1m, Timer2m, Timer3m, Timer4m, Timer5m;/* timery programowe 100Hz */<br /><br /><br /><br />uint8_t answer_timeout=5;<br />uint8_t can_send=1;<br /><br />//------------------ function headers ----------------------------<br />void mDelay( uint16_t ms );// our delay ms fun<br />void rfm_rx( uint8_t * data, uint8_t len );// your function to parse received data<br /><br />void parse_uart_data( char * pBuf );<br />char bufor&#91;120&#93;;// bufor na potrzeby odebranych danych z UART<br /><br />//********************** main function - program starts here *************************************<br />int main( void ) {<br />USART_Init(__UBRR);<br /><br />// rejestracja własnej funkcji do analizowania danych odebranych przez UART<br />register_uart_str_rx_event_callback( parse_uart_data );<br />TIMEOUT_LED_DIR |= TIMEOUT_LED;<br />TIMEOUT_LED_OFF;<br /><br />DATA_LED_DIR |= DATA_LED;<br />DATA_LED_OFF;<br /><br />PWM1_LED_DIR |= PWM1_LED;<br />PWM1_LED_ON;<br /><br />// rfm69 init - 433MHz, with own net_id, use addr and broadcast addr<br />//rfm69_init( FREQ(433), net_id, 2, 2, 255 );<br />//rfm69_init( FREQ(868), 0, ADDR_FILTER_OFF, 0, 0 );<br />rfm69_init( FREQ(868), net_id, ADDR_FILTER_BROADCAST, 2, 255 );<br />// register your own callback function &quot;rfm_rx&quot;<br />rfm69_rx_event_callback( rfm_rx );<br /><br /><br />    TCCR0 |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02);<br />    TIMSK |= 1&lt;&lt;TOIE0;<br />    TCNT0 = 179;<br />/////////////////////////przerwania<br />// Przerwanie INT0 <br />MCUCR |= (0&lt;&lt;ISC01)|(1&lt;&lt;ISC00);// Zmiana stanu na INT0 generuje przerwanie<br />GICR |= (1&lt;&lt;INT0);// odblokowanie przerwania<br />PORTD &amp;= ~ (1&lt;&lt;PD2);// podciągnięcie pinu INT0 do VCC<br />//DDRD &amp;= ~(1&lt;&lt;PORTD2); //konfiguracja 2 pinu portu D jako wejście<br /><br />sei();// global interrupts enable<br /><br /><br />//------------- main loop ---------------------<br />while(1) {<br /><br /><br /><br /><br /><br />RFM69_RX_EVENT( in_buf );// rfm69 receive event<br />UART_RX_STR_EVENT(bufor);// zdarzenie odbiorcze UART<br />if( !Timer1m ) {<br /><br />if( can_send ) {<br />rfm69_transmit( 1, out_buf, 0 );<br />// set different timeout for every tested module<br />answer_timeout=3;<br />can_send=0;<br />TIMEOUT_LED_OFF;<br />} else<br />if( !answer_timeout ) {<br />TIMEOUT_LED_ON;<br />rfm69_rxon();<br />can_send=1;<br />}<br /><br />if( answer_timeout ) answer_timeout--;<br /><br />Timer1m = 100;// Timer1 starts every 250 ms<br />}<br /><br />}<br />}<br /><br /><br />void rfm_rx( uint8_t * data, uint8_t len ) {<br />// here we check if our data are valid<br />if( 8==len &amp;&amp; !memcmp( &quot;mirekk36&quot;, data, 8 ) )<br />{<br />DATA_LED_TOG;<br />}<br /><br />can_send=1;// after complete we can send data<br />}<br /><br />void mDelay( uint16_t ms ) {<br />while( ms-- ) _delay_ms( 0.99 );// little short time than 1 ms ;)<br />}<br /><br /><br />//------------- soft timers -----------------------<br />ISR(TIMER0_OVF_vect)<br />{<br />uint16_t n;<br /><br />n = Timer1m;/* 100Hz Timer1 */<br />if (n) Timer1m = --n;<br />n = Timer2m;/* 100Hz Timer2 */<br />if (n) Timer2m = --n;<br />n = Timer3m;/* 100Hz Timer3 */<br />if (n) Timer3m = --n;<br />n = Timer4m;/* 100Hz Timer4 */<br />if (n) Timer4m = --n;<br />n = Timer5m;/* 100Hz Timer4 */<br />if (n) Timer5m = --n;<br /><br />TCNT0 = 179;<br /><br />}<br /><br /><br /><br />void parse_uart_data( char * pBuf ) {<br /> uart_puts(pBuf);<br /> uart_puts(&quot;\r\n&quot;);<br />}<br /><br /><br /><br /><br />ISR( INT0_vect ) {<br /> uart_puts(&quot;INT0&quot;);<br /> uart_puts(&quot;\r\n&quot;);<br /><br />}[/syntax]<br /><br />Po zmianie stanu na INT0 w terminalu dostaje tylko &quot;IN&quot; i dalej tylko reset.<br />Jeszcze raz przepraszam za brak kodu programu w pierwszym poście.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5515">asek5</a> — 22 kwi 2015, o 17:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz...]]></name></author>
<updated>2015-04-22T08:47:53+01:00</updated>
<published>2015-04-22T08:47:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127138#p127138</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127138#p127138"/>
<title type="html"><![CDATA[Re: Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127138#p127138"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />I co? mamy się domyślać gdzie zrobiłeś babola w kodzie ? ... sądzisz, że tak się da ?<br /></div><br /><br />Mirku, a Ty nie wyczuwasz błędu w kodzie &quot;podskórnie&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ?<br /><br />Tak na poważnie to kolego kod, kod, kod albo pisz lub dzwoń do wróżki <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />.<br /><br />-- <br />Grzegorz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1748">Grzegorz...</a> — 22 kwi 2015, o 08:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T22:13:00+01:00</updated>
<published>2015-04-21T22:13:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127120#p127120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127120#p127120"/>
<title type="html"><![CDATA[Re: Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127120#p127120"><![CDATA[
No tak kolejne pytanie do RENOMOWANEGO JASNOWIDZA 5-tej kategorii. Panowie, panowie - tak zadane pytania będą w nagrodę po prostu usuwane .... No jak tak można zadawać pytanie ? Szanujmy swój czas nawzajem proszę .... <br /><br />I co? mamy się domyślać gdzie zrobiłeś babola w kodzie ? ... sądzisz, że tak się da ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 kwi 2015, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[asek5]]></name></author>
<updated>2015-04-21T22:09:04+01:00</updated>
<published>2015-04-21T22:09:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127118#p127118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127118#p127118"/>
<title type="html"><![CDATA[Biblioteka rfm69 a przerwania]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11455&amp;p=127118#p127118"><![CDATA[
Witam <br />Używam biblioteki z książki do obsługi rfm69 i działa fajnie. Używam przerwania INT1 do rfm69, chce na INT0 podpiąć czujnik wykrycia ruchu który daje stan wysoki na wyjściu. Problem w tym że po wykryciu przerwania atmega8 zawiesza się w przerwaniu wpisuje po rs232 tylko jedną linijkę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5515">asek5</a> — 21 kwi 2015, o 22:09</p><hr />
]]></content>
</entry>
</feed>