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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-01T16:24:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13733&amp;mode</id>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T16:24:58+01:00</updated>
<published>2015-12-01T16:24:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146801#p146801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146801#p146801"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146801#p146801"><![CDATA[
Ok Wygląda na to, że problemem był reset nadajnika. Problem mogę uznać za rozwiązany, choć nie wiem czy mnie jeszcze coś powiązanego z tym nie zaskoczy, więc wolał bym go jeszcze nie zamykać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-12-01T16:13:30+01:00</updated>
<published>2015-12-01T16:13:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146800#p146800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146800#p146800"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146800#p146800"><![CDATA[
Witam,<br /><br />Hmm..., a jak masz skonfigurowane rejestry od przerwania? I rozumiem, że te makra on(A,0)  i off(A,0) właśnie ustalają stan linii w ATMEGA2560, która to linia jest połączona z INT0 ATMEGA16, tak? Jeśli tak, to pokaż te makra.<br /><br />Dopisane: Kolega wojtekr51 był szybszy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />.<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 1 gru 2015, o 16:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T16:07:10+01:00</updated>
<published>2015-12-01T16:07:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146797#p146797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146797#p146797"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146797#p146797"><![CDATA[
Ok zaraz to sprawdzę, tylko zmienię trochę kod nadajnika, żeby wysyłał liczby po naciśnięciu przycisku innego niż reset.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 16:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojtekr51]]></name></author>
<updated>2015-12-01T16:04:16+01:00</updated>
<published>2015-12-01T16:04:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146796#p146796</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146796#p146796"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146796#p146796"><![CDATA[
Jakim zboczem: narastającym czy opadającym wywołujesz przerwanie int0? <br />Dla testu w nadajniku za pętlą for() która wysyła dane wpisz np.<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">PORTK = 100;</div><br />i zobacz czy teraz przypadkiem po resecie nie jest wysyłana jako pierwsza właśnie ta wartość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1760">wojtekr51</a> — 1 gru 2015, o 16:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T15:52:34+01:00</updated>
<published>2015-12-01T15:52:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146794#p146794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146794#p146794"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146794#p146794"><![CDATA[
Tak właśnie chciałem, żeby się raz wykonał i wysłał 5 liczb. Później pewnie rozbuduję kod nadajnika o odczyt flagi zajętości itd. Hmmm, a to może generować jakieś zakłócenia?<br /><br />Tak resetuję nadajnik.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 15:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojtekr51]]></name></author>
<updated>2015-12-01T15:52:52+01:00</updated>
<published>2015-12-01T15:47:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146793#p146793</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146793#p146793"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146793#p146793"><![CDATA[
W jaki sposób wysyłasz z nadajnika? Przez resetowanie go???<br />Jeżeli tak - to może podczas resetowania generuje się dodatkowe przerwanie które wysyła ostatnio ustawiony bajt na porcie K.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1760">wojtekr51</a> — 1 gru 2015, o 15:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-01T15:44:30+01:00</updated>
<published>2015-12-01T15:44:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146792#p146792</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146792#p146792"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146792#p146792"><![CDATA[
A Twój kod w nadajniku wykonuje się tylko raz.<br />Tak ma być?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 1 gru 2015, o 15:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T15:35:03+01:00</updated>
<published>2015-12-01T15:35:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146791#p146791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146791#p146791"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146791#p146791"><![CDATA[
[syntax=c]ISR(INT0_vect)<br />{<br /> static int interrupt_counter = 0;<br /><br />external_buffor&#91;interrupt_counter&#93; = PINA;<br />interrupt_counter++;<br /><br />if(interrupt_counter == 5)<br />interrupt_counter = 0;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 15:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-01T15:30:22+01:00</updated>
<published>2015-12-01T15:30:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146790#p146790</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146790#p146790"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146790#p146790"><![CDATA[
to pokaż może ten zmieniony kod<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 1 gru 2015, o 15:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T15:25:40+01:00</updated>
<published>2015-12-01T15:25:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146789#p146789</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146789#p146789"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146789#p146789"><![CDATA[
Zmieniłem erternal_buffor na volatile, a interrupt_counter na static int, deklarując ją w przerwaniu. Efektem tego jest poprawne pierwsze ładowanie, natomiast przy kolejnych dalej jest efekt przesuwania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 15:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2015-12-01T15:07:23+01:00</updated>
<published>2015-12-01T15:07:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146788#p146788</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146788#p146788"/>
<title type="html"><![CDATA[Re: Przesyłanie wartości przez cały port pomiędzy mikrokontr]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146788#p146788"><![CDATA[
Spróbuj zmienną:<br />external_buffor zadeklarować jako volatile<br />a interrupt_counter jako static w samym przerwaniu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 1 gru 2015, o 15:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zsefb123]]></name></author>
<updated>2015-12-01T11:43:35+01:00</updated>
<published>2015-12-01T11:43:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146780#p146780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146780#p146780"/>
<title type="html"><![CDATA[Przesyłanie wartości przez cały port pomiędzy mikrokontroler]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13733&amp;p=146780#p146780"><![CDATA[
Dzień dobry wszystkim. Borykam się z problemem przesyłania wartości pomiędzy mikrokonrolerami równolegle ( jeśli tak to mogę nazwać). Ogólnie: komunikują się ze sobą atmega 16 oraz atmega 2560 ( w arduino ). Atmega 16 odczytuje wartości z portu A przy każdym przerwaniu INT0 , które generuje atmega 2560. Oba mikrokontrolery taktowane są 16 Mhz. Jako, że potrzebuję aby atmega 16 pobrała 5 liczb to przy każdym przerwaniu wartość z portu A zapisywana jest do globalnie zdefiniowanej tablicy, a poźniej z niej odczytywana, przez funkcję. Założeniem projektu który robię jest wyświetlacz matrycowy posiadający własny mikrokontroler(atmega 16), komunikujący się ze światem zewnętrznym przez odczyt wartości z portu A przy przerwaniu INT0. Wyświetlacz pokazuje 5 znaków alfanumercznych. Problem jest taki, że znaki za każdym ładowaniem przesuwają się o jedną pozycję. W sensie ładuję ABCDE a otrzymuję EABCD, jeśli załaduję jeszcze raz to samo otrzymam DEABC i tak w kółko.<br /><br />Robiłem testy, i jesli nadam znaki na stałe to wyświetlają się dobrze. Dodam jeszcze, że porty obu mikrokontrolerów połączone są bezpośrednio, odpowiadającymi sobie pinami.<br /><br />Oto mój kod dla odbiornika:<br /><br />[syntax=c]volatile int interrupt_counter = 0;<br /><br />uint8_t external_buffor&#91;&#93; = {1,2,3,4,5};<br /><br />uint8_t tab&#91;&#93; = {5,6,7,8,9};<br /><br />int main(void)<br />{<br />init_display();<br /><br />while(1)<br />{<br />show_all_characters(external_buffor&#91;0&#93;,external_buffor&#91;1&#93;,external_buffor&#91;2&#93;,external_buffor&#91;3&#93;,external_buffor&#91;4&#93;);<br />}<br /><br /><br /><br />}<br /><br /><br />ISR(INT0_vect)<br />{<br />external_buffor&#91;interrupt_counter&#93; = PINA;<br />interrupt_counter++;<br /><br />if(interrupt_counter == 5)<br />interrupt_counter = 0;<br /><br />}[/syntax]<br /><br />Oraz kod dla nadajnika:<br /><br />[syntax=c]uint8_t data&#91;5&#93; = { 0b00000101, 0b00000001, 0b00000010, 0b00000011, 0b00000100 }; <br /><br />int main(void)<br />{<br />  <br />  DDRK = 0b11111111;<br />  on(DDRA,0);<br />  off(PORTA,0);<br />  <br /> for(int i = 0; i &lt; 5; i++)<br /> {<br />   PORTK = data&#91;i&#93;;<br />   on(A,0);<br />   off(A,0);<br />   _delay_ms(1000);<br /><br /> }<br /> <br />  <br />}[/syntax]<br /><br />Z góry dziękuję za pomoc oraz cenne uwagi, proszę o wyrozumiałoś z racji mojego małego doświadczenia z mikrokontrolerami.<br />on i off to makra, funkcje w odbiorniku działają w z nadanie statycznym, więc nie wklejałem ich kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11996">zsefb123</a> — 1 gru 2015, o 11:43</p><hr />
]]></content>
</entry>
</feed>