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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-16T16:28:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14182&amp;mode</id>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-16T16:28:04+01:00</updated>
<published>2016-01-16T16:28:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150767#p150767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150767#p150767"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150767#p150767"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />polutowałem wszystko na płytce i jest ok <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />To super. I znowu wyszło, że grunt to dobrze przygotować płytkę / podłączenie do układów zewnętrznych. Szczególnie jak się z nimi komunikuje z taką częstotliwością.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 16 sty 2016, o 16:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lisek120]]></name></author>
<updated>2016-01-16T15:38:40+01:00</updated>
<published>2016-01-16T15:38:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150761#p150761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150761#p150761"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150761#p150761"><![CDATA[
polutowałem wszystko na płytce i jest ok <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=628">lisek120</a> — 16 sty 2016, o 15:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-14T19:08:23+01:00</updated>
<published>2016-01-14T19:08:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150617#p150617</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150617#p150617"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150617#p150617"><![CDATA[
A daj co jakiś czas inicjalizację LCD. I jak się podwiesi, to wyłącz mu zasilanie i ponownie podłącz. Jak się znowu zainicjalizuje i zacznie wyświetlać, to będzie lcd. Jak nie, to nie lcd się wiesza ;(<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 sty 2016, o 19:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lisek120]]></name></author>
<updated>2016-01-14T18:47:46+01:00</updated>
<published>2016-01-14T18:47:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150615#p150615</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150615#p150615"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150615#p150615"><![CDATA[
z tego co widzę to chyba sam lcd się zawiesza... na płytce stykowej mam 2 atmegi i 2 lcd. Filtracje moim zdaniem mam ok więc nie wiem. Zawiesza się nawet jak dokonuję zapisu do lcd co 1 sek. Wygląda to tak jakby w momencie zapisu do lcd wystąpiło przerwanie UART i wtedy zaczynają się błędy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=628">lisek120</a> — 14 sty 2016, o 18:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-14T13:23:57+01:00</updated>
<published>2016-01-14T13:23:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150577#p150577</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150577#p150577"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150577#p150577"><![CDATA[
Mając to na stykówce i ciągle obsługując wyświetlacz podłączony kilku/kilkunasto centymetrowymi kabelkami, masz zrobiony piękny nadajnik o częstotliwości kilku MHz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Więc może on powodować zakłócenia w pracy. Dlatego filtrowanie zasilania, jego poprowadzenie ma bardzo duże znaczenie.<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 14 sty 2016, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lisek120]]></name></author>
<updated>2016-01-14T12:59:22+01:00</updated>
<published>2016-01-14T12:59:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150574#p150574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150574#p150574"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150574#p150574"><![CDATA[
Chyba miałeś rację, że komunikacja z wyświetlaczem powodowała jakieś zakłócenia, zrobiłem tak że odświerzam wyświetlacz dopiero gdy odbiorę bajt w przerwaniu i od tego momentu jest ok:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;lcd44780.h&quot;<br /><br /><br /><br />#define UART_BAUD9600<br />#define __UBRR((F_CPU + UART_BAUD * 8UL)/(16UL * UART_BAUD)-1)<br /><br />volatile uint8_t dane;<br />volatile uint8_t odswierz;<br /><br /><br />void rs232_init(uint16_t baud)<br />{<br /><br />UBRR0H = (uint8_t)(baud&gt;&gt;8);<br />UBRR0L = (uint8_t)baud;<br /><br />/* włączenie odbierania i nadawania */<br />UCSR0B |= (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(1&lt;&lt;RXCIE0);<br /><br />/* 1 bit stopu, 8 bitów danych, brak parzystoci */<br />UCSR0C |= (1&lt;&lt;UCSZ00)|(1&lt;&lt;UCSZ01);<br /><br />}<br /><br />char usart_rec(void)<br />{<br />while(!(UCSR0A &amp; (1&lt;&lt;RXC0)));<br />return UDR0;<br />}<br /><br />ISR(USART0_RX_vect)<br />{<br /><br />dane=UDR0;<br />odswierz=1;<br />PORTD^=(1&lt;&lt;PD7);<br /><br />}<br /><br />int main(void)<br />{<br />DDRD |= (1&lt;&lt;PD7); // PD7 jako wyjcie<br />PORTD |= (1&lt;&lt;PD7); // stan wysoki na wyjciu<br /><br />lcd_init();<br />rs232_init(__UBRR);<br /><br />sei();<br /><br />while(1)<br />{<br />//if(UCSR0A &amp; (1&lt;&lt;RXC0))dane=UDR0;<br /><br />if(odswierz)<br />{<br />lcd_locate(0,0);lcd_int(dane);<br />odswierz=0;<br />}<br /><br /><br />}<br />}[/syntax]<br /><br />zasilam płytkę prototypową z przetwornicy ATB i na każdym uC mam po dwa kondensatory , na wyświetlaczach także więc to chyba nie kwestia filtrowania. Czy to możliwe że podczas komunikacji z wyświetlaczem wywołanie przerwania RXCIE powoduje błędy i zawieszanie procka? Jeśli tak to jak sobie z tym poradzić w konkretnym projekcie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=628">lisek120</a> — 14 sty 2016, o 12:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-01-13T22:38:14+01:00</updated>
<published>2016-01-13T22:38:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150534#p150534</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150534#p150534"/>
<title type="html"><![CDATA[Re: UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150534#p150534"><![CDATA[
Kod programu wygląda na poprawny.<br />Jak nie odbierasz danych na przerwaniu, to czekasz w pętli czekającej na flagę RXC0. Ale gdy używasz przerwania, to non stop komunikujesz się z wyświetlaczem. Może to powoduje Twoje problemy. Czy na pewno masz poprawnie zrobione filtrowanie zasilania?<br /><br />Przetestuj czy problem będzie występował jak wyświetlać będzie tylko raz dla jednej odebranej danej.<br />Możesz to zrobić poprzez uśpienie procesora. Kolejne przerwanie obudzi Ci procesor, więc będziesz miał poprawny odbiór danych i poprawne wyświetlanie. Aby to zrobić dodaj:<br />[syntax=c]#include &lt;avr/sleep.h&gt;[/syntax]<br />Przed pętlą while (po sei();) daj:<br />[syntax=c]set_sleep_mode(SLEEP_MODE_IDLE);[/syntax]<br />i na koniec pętli while (po wyświetleniu danych na lcd) daj:<br />[syntax=c]sleep_mode();[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 13 sty 2016, o 22:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lisek120]]></name></author>
<updated>2016-01-13T21:51:15+01:00</updated>
<published>2016-01-13T21:51:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150527#p150527</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150527#p150527"/>
<title type="html"><![CDATA[UART - problem z odbieraniem danych w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14182&amp;p=150527#p150527"><![CDATA[
witam wszystkich!<br />testuję sobie komunikację pomiędzy dwoma prockami Atmega644PA i o ile kiedy podczas odbierania nie używam przerwania RXCIE to wszystko działa bez problemu to kiedy odbieram daną w przerwaniu to nie dość, że czasem odbieram wartość 0 choć wysyłam inną to <br />po jakimś czasie procek się zawiesza. Dodam jeszcze że program jest banalny - wysyłam i odbieram zmienną 1 bajtową<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;lcd44780.h&quot;<br /><br /><br /><br />#define UART_BAUD9600<br />#define __UBRR((F_CPU + UART_BAUD * 8UL)/(16UL * UART_BAUD)-1)<br /><br />volatile uint8_t dane;<br />uint8_t licznik;<br /><br /><br />void rs232_init(uint16_t baud)<br />{<br /><br />UBRR0H = (uint8_t)(baud&gt;&gt;8);<br />UBRR0L = (uint8_t)baud;<br /><br />/* włączenie odbierania i nadawania */<br />UCSR0B |= (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(RXCIE0);<br /><br />/* 1 bit stopu, 8 bitów danych, brak parzystoci */<br />UCSR0C |= (1&lt;&lt;UCSZ00)|(1&lt;&lt;UCSZ01);<br /><br />}<br /><br />char usart_rec(void)<br />{<br />while(!(UCSR0A &amp; (1&lt;&lt;RXC0)));<br />return UDR0;<br />}<br /><br />ISR(USART0_RX_vect)<br />{<br /><br />dane=UDR0;<br /><br />PORTD^=(1&lt;&lt;PD7);<br /><br />}<br /><br />int main(void)<br />{<br />DDRD |= (1&lt;&lt;PD7); // PD7 jako wyjcie<br />PORTD |= (1&lt;&lt;PD7); // stan wysoki na wyjciu<br /><br />lcd_init();<br />rs232_init(__UBRR);<br /><br />sei();<br /><br />while(1)<br />{<br /><br />//licznik++;<br />lcd_locate(0,0);lcd_int(dane);<br /> lcd_locate(1,0);lcd_int(licznik);<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=628">lisek120</a> — 13 sty 2016, o 21:51</p><hr />
]]></content>
</entry>
</feed>