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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-10T08:53:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=7&amp;t=17288&amp;mode</id>
<entry>
<author><name><![CDATA[Mellanogaster]]></name></author>
<updated>2017-01-10T08:53:29+01:00</updated>
<published>2017-01-10T08:53:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179539#p179539</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179539#p179539"/>
<title type="html"><![CDATA[Re: WiFi 232 UART i Mega2560]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179539#p179539"><![CDATA[
<div class="quotetitle">roland12 napisał(a):</div><div class="quotecontent"><br />Chciał bym zapytać bardziej doświadczonych użytkowników forum którzy może znają dobrze Atmege 2560 i wiedzą co źle skonfigurowałem.<br /></div><br />Szefuje nam na forum Mirek, za to o wróżbicie Macieju nie słyszeliśmy. Zdjęcia schematy podrzuć bo skąd możemy wiedzieć co tam namodziłeś;)<br />Czasem opis słowny a rzeczywiste podłączenie to dwie inne rzeczywistości.<br />A za wrzucanie fragmentów kodów z książek pomniejsi szefowie mogą wyciągnąć konsekwencje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2911">Mellanogaster</a> — 10 sty 2017, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roland12]]></name></author>
<updated>2017-01-10T01:06:04+01:00</updated>
<published>2017-01-10T01:06:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179531#p179531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179531#p179531"/>
<title type="html"><![CDATA[WiFi 232 UART i Mega2560]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17288&amp;p=179531#p179531"><![CDATA[
Witam,<br /><br />Ja też mam problem z dogadaniem się Atnel WiFi 232 z Atmega 2560.<br />Próbuję uruchomić serwer www według poradnika Pana Mirka na płytce MEGA 2560 R3 poprzez UART 3 tego procesora. <br />Sprawa jest dla mnie bardzo dziwna i brakło mi już pomysłów. Chciał bym zapytać bardziej doświadczonych użytkowników forum którzy może znają dobrze Atmege 2560 i wiedzą co źle skonfigurowałem. <br /><br />Najpierw podsumowanie moich doświadczeń i ustawienia modułu Wifi. <br /><br />1. Serwer www bez problemu działa mi na innej płytce z Atmega32 na UART0. Z tego wnioskuję, że moduł WiFi jest skonfigurowany prawidłowo. <br /><br />2. Jeżeli zamiast modułu WiFi podepnę do płytki z Mega 2560 przejściówkę RS232 do COM1 w komputerze i wpiszę w putty <br />[syntax=html4strict]GET /[/syntax]<br />to otrzymam ładnie odpowiedź HTTP Response jak w poradniku. Czyli program jest również napisany prawidłowo. <br /><br />3. Jeżeli włożę zamiast przejściówki RS232 z punktu 2. powyżej, moduł Wifi to nie może on się dogadać z Mega2560. Nie ma odpowiedzi w przeglądarce. Moduł jest na pewno dobrze podpięty do UART3 Mega (tak samo jak przejściówka)<br /><br />4. Zasilanie w płytce z Mega2560 jest też odpowiednie, ponieważ przez ATBWiFi można go odczytać i konfigurować. <br /><br />5. Moduł Wifi test sprawny. Na przejściówce UART/USB można go odczytać i zapisać i działa jako wirtualny COM.<br /><br />KONFIGURACJA ATB WiFi:<br /><a href="https://obrazkiforum.atnel.pl/14050/de6a7b7aaa717468cecf4d0863f0a3f2.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14050/de6a7b7aaa717468cecf4d0863f0a3f2.jpg" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/14050/e58a546c8438aee585355dbd8ea911a7.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14050/e58a546c8438aee585355dbd8ea911a7.jpg" alt="Obrazek" /></a><br /><br />KONFIGURACJA UART MEGA 2560<br /><br />mkuart.h<br />[syntax=c]#define UART_BAUD 38400[/syntax]<br /><br />mkuart.c<br />[syntax=c]void USART_Init( uint16_t baud ) {<br />/* Ustawienie prędkości */<br />UBRR3H = (uint8_t)(baud&gt;&gt;8);<br />UBRR3L = (uint8_t)baud;<br />/* Załączenie nadajnika I odbiornika */<br />UCSR3B |= (1&lt;&lt;RXEN3)|(1&lt;&lt;TXEN3)|(1&lt;&lt;RXCIE3);<br />/* Ustawienie format ramki: 8bitów danych, 1 bit stopu */<br />UCSR3C |= (1&lt;&lt;UCSZ31)|(1&lt;&lt;UCSZ30);<br />}<br /><br />// kompilacja gdy używamy RS485<br />#ifdef UART_DE_PORT<br />ISR( USART3_TX_vect ) {<br />UART_DE_ODBIERANIE;// zablokuj nadajnik RS485<br />}<br />#endif<br /><br />// definiujemy funkcję dodającą jeden bajtdoz bufora cyklicznego<br />void uart_putc( char data ) {<br />    //brakujący kod w książce<br /><br />    // inicjalizujemy przerwanie występujące, gdy bufor jest pusty, dzięki<br />    // czemu w dalszej części wysyłaniem danych zajmie się już procedura<br />    // obsługi przerwania<br />    UCSR3B |= (1&lt;&lt;UDRIE3);<br />}<br /><br />// definiujemy procedurę obsługi przerwania nadawczego, pobierającą dane z bufora cyklicznego<br />ISR( USART3_UDRE_vect)  {<br />    // sprawdzamy czy indeksy są różne<br />    if ( UART_TxHead != UART_TxTail ) {<br />        // brakujący kod w książce<br />    UDR3 = UART_TxBuf&#91;UART_TxTail&#93;;<br />    } else {<br />// zerujemy flagę przerwania występującego gdy bufor pusty<br />UCSR3B &amp;= ~(1&lt;&lt;UDRIE3);<br />    }<br />}<br /><br />// definiujemy procedurę obsługi przerwania odbiorczego, zapisującą dane do bufora cyklicznego<br />ISR( USART3_RX_vect ) {<br /><br /> //brakujący kod w książce<br /><br />    data = UDR3; //pobieramy natychmiast bajt danych z bufora sprzętowego<br /><br />   //brakujący kod w książce<br /><br />    }<br />}[/syntax]<br /><br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/wdt.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;string.h&gt;<br /><br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />#include &quot;common.h&quot;<br /><br /><br />void http200ok(void);<br />void print_webpage(void);<br />void parse_rs232(char * buf);<br /><br />/************ Zmmienne globalne ***********/<br /><br />volatile uint8_t flag_1s;<br />volatile uint16_t Timer1, Timer2, Timer3, Timer4;/* timery programowe 100Hz */<br />char uart_buf&#91;256&#93;;<br /><br />int main(void)<br />{<br />/****** inicjalizacja kierunków pinów ******** */<br />DDRC |= LED1;// kierunek pinu PC0 – wyjściowy<br />LED1_OFF;// wyłączenie diody LED<br />DDRC |= LED2;// kierunek pinu PC1 – wyjściowy<br />LED2_OFF;// wyłączenie diody LED<br /><br /><br />/*----------------------------- inicjalizacja przerwań  ---------------*/<br />//<br /><br />/* Timer2 – inicjalizacja przerwania co 10ms */<br />TCNT0 = 0;<br />TCCR0B |= (1&lt;&lt;WGM02);// tryb pracy CTC<br />TCCR0B |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);// preskaler = 1024<br />OCR0A = 155;<br />// przerwanie porównania co 10ms (100,16Hz)<br />TIMSK0 = (1&lt;&lt;OCIE0B);// Odblokowanie przerwania CompareMatch<br /><br />USART_Init( __UBRR );// inicjalizacja UART<br />register_uart_str_rx_event_callback( parse_rs232 );// rejestracja własnej funkcji do analizowania danych odebranych przez UART<br /><br />LED2_ON;<br />_delay_ms(1000);<br />LED2_OFF;<br /><br />sei();// globalne odblokowanie przerwań<br /><br />Timer4 = 50;<br /><br />while(1)<br />{<br />UART_RX_STR_EVENT(uart_buf);// zdarzenie odbiorcze UART<br /><br />if( Timer4 == 0) {//Przerwanie INT0 co sekundę<br />LED1_TOG;<br />Timer4 = 50;<br />}<br /><br /><br /><br />}<br />} // koniec main<br /><br />/****************** obsługa www *****************************************/<br />void http200ok(void)<br />{<br />uart_puts_P( PSTR( &quot;HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n&quot;));<br />}<br />void print_webpage(void){<br />http200ok();<br /><br />uart_puts_P(PSTR(&quot;&lt;html&gt;&lt;body&gt;Witam.&lt;/body&gt;&lt;/html&gt;&quot;));<br />}<br />void parse_rs232(char * buf){<br /><br />if( !strncmp(&quot;GET /&quot;,buf,5))<br />{<br />print_webpage();<br /><br />}<br />}<br /><br /><br />ISR(TIMER0_COMPB_vect)<br />{<br />uint16_t n;<br /><br />n = Timer1;/* 100Hz Timer1 */<br />if (n) Timer1 = --n;<br />n = Timer2;/* 100Hz Timer2 */<br />if (n) Timer2 = --n;<br />n = Timer3;/* 100Hz Timer3 */<br />if (n) Timer3 = --n;<br />n = Timer4;/* 100Hz Timer4 */<br />if (n) Timer4 = --n;<br />}[/syntax]<br /><br />Zamieściłem powyżej tylko te fragmenty biblioteki Pana Mirka do obsługi UART, które wymagały zamiany aby było można korzystać z UART3 procesora. Podejrzewam, że w tej zmianie może leżeć problem. <br /><br />Bardzo proszę o jakieś wskazówki.<br />Jeżeli brakuje jeszcze jakiś informacji to postaram się je jak najszybciej dodać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14050">roland12</a> — 10 sty 2017, o 01:06</p><hr />
]]></content>
</entry>
</feed>