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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-07-04T17:51:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18167&amp;mode</id>
<entry>
<author><name><![CDATA[Vroobee]]></name></author>
<updated>2018-07-04T17:51:04+01:00</updated>
<published>2018-07-04T17:51:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209500#p209500</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209500#p209500"/>
<title type="html"><![CDATA[Re: RFM73 problem z inicjalizacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209500#p209500"><![CDATA[
Jeny ... ale jełop ze mnie ....<br /><br />Do dodania mam tylko tyle, że problem się rozwiązał. Pinów CS i CE od RFM73 nie miałem podpiętych do tego samego portu co SPI, trzeba było dodać parę linijek odnośnie deklarowania portu do pinów CS i CE i pozmieniać SPI_DIR i SPI_PORT na SC_CE_DIR i CS_CE_PORT.<br /><br />Komunikacja już działa <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=5942">Vroobee</a> — 4 lip 2018, o 17:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vroobee]]></name></author>
<updated>2018-07-04T09:23:34+01:00</updated>
<published>2018-07-04T09:23:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209494#p209494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209494#p209494"/>
<title type="html"><![CDATA[Re: RFM73 problem z inicjalizacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=209494#p209494"><![CDATA[
Witam,<br /><br />po długim czasie powracam do tematu, gdyż wtedy również nie mogłem go rozwiązać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> teraz potrzebuję wykorzystać tę komunikację.<br /><br />Więc mam układ na płytce PCB z wykorzsytaniem ATmegi328P oraz RFM73D, poniżej zamieszczam schemat, bo może coś jest nie tak przyłączone:<br /><a href="https://obrazkiforum.atnel.pl/5942/f3d7ff5a75fdecfd8a4201d00600c0d4.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/5942/f3d7ff5a75fdecfd8a4201d00600c0d4.png" alt="Obrazek" /></a><br /><br />Poniżej wklejam również zmienione pod atmegę 328p fragmenty kodu z GB:<br />[syntax=c]// konfiguracja połączeń RFM7x ************************************<br />// soft SPI<br />#define CE   (1&lt;&lt;PC5)<br />#define CSN  (1&lt;&lt;PC4)<br />#define MOSI (1&lt;&lt;PB3)<br />#define MISO (1&lt;&lt;PB4)<br />#define SCK  (1&lt;&lt;PB5)<br /><br />#define SPI_DIRDDRB<br />#define SPI_PORT PORTB<br />#define SPI_PINPINB<br /><br />// IRQ<br />#define RF_IRQDDRDDRD<br />#define RF_IRQPORTPORTD<br />#define RF_IRQPINPIND<br />#define IRQ(1&lt;&lt;PD2)// można użyć INT0, INT1 lub INT2<br />// INT2 - po lekkich zmianach kodu<br /><br />/*!<br /> * RF7x_UseIRQ = 1 - używamy przerwań<br /> * RF7x_UseIRQ = 0 - przerwania wyłączone<br /> */<br />#define RFM7x_UseIRQ 1<br /><br />//#define RFM70<br />#define RFM73[/syntax]<br /><br />[syntax=c]void RFM7x_Init() {<br />uint8_t i,j;<br /> uint8_t WriteArr&#91;12&#93;;<br /><br />#if RFM7x_UseIRQ == 1<br /><br />// inicjalizacja przerwania asynchronicznego INT2<br />/*RF_IRQDDR &amp;= ~IRQ;<br />RF_IRQPORT |= IRQ;<br />GICR |= (1&lt;&lt;INT2);<br />MCUCSR &amp;= ~(1&lt;&lt;ISC2);// zbocze opadające*/<br /><br />// inicjalizacja przerwania synchronicznego INT0 / INT1<br />RF_IRQDDR &amp;= ~IRQ;<br />RF_IRQPORT |= IRQ;<br />EIMSK |= (1&lt;&lt;INT0);<br />EICRA |= (1&lt;&lt;ISC01);// zbocze opadające<br /><br />#endif<br /><br /> //! Init soft SPI ********************<br />SPI_DIR |= CE;<br />SPI_DIR |= CSN;<br />SPI_DIR |= SCK;<br />SPI_DIR &amp;= ~MISO;<br />SPI_DIR |= MOSI;<br /><br />SPI_PORT &amp;= ~CE;// CE  = 0;<br />SPI_PORT |= CSN;// CSN = 1;<br />SPI_PORT &amp;= ~SCK;// SCK = 0;<br />SPI_PORT &amp;= ~MOSI;// MOSI = 0;<br />//! Init soft SPI end ****************<br /><br />_delay_ms(200);<br /><br />SwitchCFG(0);<br /><br />for(i=0;i&lt;20;i++) {<br />SPI_Write_Reg((WRITE_REG| pgm_read_byte( &amp;Bank0_Reg&#91;i&#93;&#91;0&#93; ) ), pgm_read_byte( &amp;Bank0_Reg&#91;i&#93;&#91;1&#93; ) );<br />}<br />for(j=0;j&lt;5;j++) {<br />WriteArr&#91;j&#93; = pgm_read_byte( &amp;RX0_Address&#91;j&#93; );<br />}<br />SPI_Write_Buf((WRITE_REG|10),&amp;(WriteArr&#91;0&#93;),5);<br />for(j=0;j&lt;5;j++) {<br />WriteArr&#91;j&#93; = pgm_read_byte( &amp;RX1_Address&#91;j&#93; );<br />}<br />SPI_Write_Buf((WRITE_REG|11),&amp;(WriteArr&#91;0&#93;),5);<br />for(j=0;j&lt;5;j++) {<br />WriteArr&#91;j&#93; = pgm_read_byte( &amp;RX0_Address&#91;j&#93; );<br />}<br />SPI_Write_Buf((WRITE_REG|16),&amp;(WriteArr&#91;0&#93;),5);<br />i=SPI_Read_Reg(29);//read Feature Register Payload With ACK (REG28,REG29).<br />if(i==0) // i!=0 showed that chip has been actived.so do not active again.<br />SPI_Write_Reg(ACTIVATE_CMD,0x73);// Active<br />for(i=22;i&gt;=21;i--){<br />SPI_Write_Reg((WRITE_REG| pgm_read_byte(&amp;Bank0_Reg&#91;i&#93;&#91;0&#93;) ), pgm_read_byte(&amp;Bank0_Reg&#91;i&#93;&#91;1&#93;) );<br />}<br /><br />//********************Write Bank1 register******************<br />SwitchCFG(1);<br />for(i=0;i&lt;=8;i++) {<br />for(j=0;j&lt;4;j++) WriteArr&#91;j&#93; = ( pgm_read_dword( &amp;Bank1_Reg0_13&#91;i&#93; ) &gt;&gt; (8*(j) ) )&amp;0xff;<br />SPI_Write_Buf((WRITE_REG|i),&amp;(WriteArr&#91;0&#93;),4);<br />}<br />for(i=9;i&lt;=13;i++) {<br />for(j=0;j&lt;4;j++) WriteArr&#91;j&#93;=( pgm_read_dword( &amp;Bank1_Reg0_13&#91;i&#93; ) &gt;&gt; (8*(3-j) ) )&amp;0xff;<br />SPI_Write_Buf((WRITE_REG|i),&amp;(WriteArr&#91;0&#93;),4);<br />}<br />for(j=0;j&lt;11;j++) {<br />WriteArr&#91;j&#93; = pgm_read_byte( &amp;Bank1_Reg14&#91;j&#93; );<br />}<br />SPI_Write_Buf((WRITE_REG|14),&amp;(WriteArr&#91;0&#93;),11);<br />for(j=0;j&lt;4;j++) WriteArr&#91;j&#93;=( pgm_read_dword( &amp;Bank1_Reg0_13&#91;4&#93; ) &gt;&gt; (8*(j) ) )&amp;0xff;<br /><br />WriteArr&#91;0&#93;=WriteArr&#91;0&#93;|0x06;<br />SPI_Write_Buf((WRITE_REG|4),&amp;(WriteArr&#91;0&#93;),4);<br /><br />WriteArr&#91;0&#93;=WriteArr&#91;0&#93;&amp;0xf9;<br />SPI_Write_Buf((WRITE_REG|4),&amp;(WriteArr&#91;0&#93;),4);<br /><br />_delay_ms(50);<br /><br />//********************switch back to Bank0 register access******************<br />SwitchCFG(0);<br />SwitchToRxMode();<br />}<br /><br /><br />ISR( INT0_vect ) {<br />register uint8_t value;<br />value = SPI_Read_Reg(READ_REG|STATUS);<br /><br />if( (value &amp; STATUS_RX_DR) ) {<br />SPI_Write_Reg(WRITE_REG | STATUS, value|STATUS_RX_DR);<br />rfm7x_RX_flag = 1;<br />}<br /><br />if( (value &amp; STATUS_TX_DS) ) {<br />SPI_Write_Reg(WRITE_REG | STATUS, value|STATUS_TX_DS);<br /><br />rfm7x_TX_flag = 0;<br />}<br />}<br />#endif[/syntax]<br /><br />[syntax=c]int main( void ) {<br /><br />    LED_DDR |= LEDR_PIN;<br /><br />    RFM7x_Init();<br />    _delay_ms(200);<br /><br /><br />uint8_t j;<br />if( is_rfm7x_connected() ) {<br />for(j=0;j&lt;20;j++) {<br />LEDR_TOG;<br />_delay_ms(50);<br />}<br />uart_puts(&quot;RFM73 connected&quot;);<br />} else {<br />for(j=0;j&lt;5;j++) {<br />LEDR_ON;<br />_delay_ms(20);<br />LEDR_OFF;<br />_delay_ms(470);<br />}<br />uart_puts(&quot;RFM73 not connected !!&quot;);<br />}<br /><br /><br />SetChannelNum(41);<br />register_rfm7x_rx_event_callback(my_receive_packet);<br /><br />        sei();<br /><br />    while ( 1 ) {<br /><br /><br />    }<br /><br />}[/syntax]<br /><br />Problem jest taki, że RFM'a nie wykrywa zupełnie. Można powiedzieć, że kod został przekopiowany z GB i tylko zmieniłem konfigurację pod piny ATmegi 328p. Jeśli ktoś mógłby się temu przyjrzeć to byłbym wdzięczny za pomoc i uwagi co robię źle.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5942">Vroobee</a> — 4 lip 2018, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vroobee]]></name></author>
<updated>2017-04-16T13:29:35+01:00</updated>
<published>2017-04-16T13:29:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187257#p187257</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187257#p187257"/>
<title type="html"><![CDATA[Re: RFM73 problem z inicjalizacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187257#p187257"><![CDATA[
Połączenie sprawdzałem już miliardy razy, zwarć nie ma, przejścia są. Dodatkowo poprawność połączenia dok poszczególnych pinów też jest zachowana. Próbowałem wykorzystać zarówno piny należące do SPI ATmegi jak i piny na porcie C. Za każdym razem obsługując software'owe SPI i nic. Sprawdzanie gotowości odbywa się identycznie jak w programie z GB, z resztą całość jest również stamtąd wzięta tylko przeportowana na procek ATmega8 z taktowaniem 8 MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5942">Vroobee</a> — 16 kwi 2017, o 13:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2017-04-15T23:49:24+01:00</updated>
<published>2017-04-15T23:49:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187247#p187247</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187247#p187247"/>
<title type="html"><![CDATA[Re: RFM73 problem z inicjalizacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187247#p187247"><![CDATA[
a) błędne podłączenie / niestykające kabelki (był już taki jeden ze skrętką)<br />b) Zbyt wcześnie sprawdzasz gotowość i tylko 1 raz.<br /><br />Po za tym POR może trwać nawet do ~16ms, więc inicjalizację należy wykonać dopiero jak już się ten moduł &quot;obudzi&quot;.<br />[syntax=c]while(!is_rfm7x_connected());<br />RFM7x_Init();[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 15 kwi 2017, o 23:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Vroobee]]></name></author>
<updated>2017-04-15T09:53:38+01:00</updated>
<published>2017-04-15T09:53:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187151#p187151</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187151#p187151"/>
<title type="html"><![CDATA[RFM73 problem z inicjalizacją]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18167&amp;p=187151#p187151"><![CDATA[
Witam,<br />jakiś czas temu rozważyłem zakup modułów RFM73 i zacząłem zabawy z pierwszymi programami na ATmedze8. Niestety już na początku (przeczytawszy wcześniej wszystko co dotyczy komunikacji radiowej opartej na tych modułach w GB) napotkałem problem. Korzystam z bibliotek dołączonych do GB. Poniżej przedstawię fragmenty programu, które są wykorzystywane oraz zmiany w bibliotekach p. Mirka. Może ktoś podrzuci mi pomysł co mogło pójść nie tak. Po kilku dniach walki z inicjalizacją nadal po wywołaniu funkcji RFM7x_Init() diodka miga pięciokrotnie wskazując że rfm73 is not connected.<br /><br />main.c<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;string.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;MK_RFM7x/rfm7x.h&quot;<br /><br />#define LED_PORT PORTB<br />#define LED_DIR DDRB<br />#define LED (1&lt;&lt;PB0)<br /><br />#define LED_OFF LED_PORT |= LED<br />#define LED_ON LED_PORT &amp;= ~LED<br />#define LED_TOG LED_PORT ^= LED<br /><br />int main(void){<br /><br />LED_DIR |= LED;<br />LED_OFF;<br /><br />RFM7x_Init();<br /><br />uint8_t j;<br />if( is_rfm7x_connected() ) {<br />for(j=0;j&lt;20;j++) {<br />LED_TOG;<br />_delay_ms(50);<br />}<br />} else {<br />for(j=0;j&lt;5;j++) {<br />LED_ON;<br />_delay_ms(20);<br />LED_OFF;<br />_delay_ms(470);<br />}<br />}<br /><br />SetChannelNum(41);<br /><br />sei();<br /><br />while(1){<br />_delay_ms(200);<br />LED_TOG;<br />}<br />}[/syntax]<br /><br />zmiany w RFM7x.h<br />[syntax=c]// konfiguracja połączeń RFM7x ************************************<br />// soft SPI<br />#define CE   (1&lt;&lt;PD3)<br />#define CSN  (1&lt;&lt;PD4)<br />#define MOSI (1&lt;&lt;PB3)<br />#define MISO (1&lt;&lt;PB4)<br />#define SCK  (1&lt;&lt;PB5)<br /><br />#define SPI_DIRDDRB<br />#define SPI_PORT PORTB<br />#define SPI_PINPINB<br /><br />// IRQ<br />#define RF_IRQDDRDDRD<br />#define RF_IRQPORTPORTD<br />#define RF_IRQPINPIND<br />#define IRQ(1&lt;&lt;PD2) //wykorzystywane zewnętrzne przerwanie INT0[/syntax]<br /><br />Zmiany w RFM7x.c<br />[syntax=c]#if RFM7x_UseIRQ == 1<br /><br />// inicjalizacja przerwania asynchronicznego INT2<br />/*RF_IRQDDR &amp;= ~IRQ;<br />RF_IRQPORT |= IRQ;<br />GICR |= (1&lt;&lt;INT2);<br />MCUCSR &amp;= ~(1&lt;&lt;ISC2);// zbocze opadające*/<br /><br />// inicjalizacja przerwania synchronicznego INT0 / INT1<br />RF_IRQDDR &amp;= ~IRQ;<br />RF_IRQPORT |= IRQ;<br />SPI_PORT |= IRQ;<br />GICR |= (1&lt;&lt;INT0); //(1&lt;&lt;INT1);<br />MCUCR |= (1&lt;&lt;ISC01); //(1&lt;&lt;ISC11);// zbocze opadające<br /><br />#endif[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5942">Vroobee</a> — 15 kwi 2017, o 09:53</p><hr />
]]></content>
</entry>
</feed>