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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-30T13:49:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12166&amp;mode</id>
<entry>
<author><name><![CDATA[jerrylu]]></name></author>
<updated>2015-06-30T13:49:11+01:00</updated>
<published>2015-06-30T13:49:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133260#p133260</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133260#p133260"/>
<title type="html"><![CDATA[Re: INT0 i UART - po raz kolejny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133260#p133260"><![CDATA[
Superbomba, bombiaście <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=8719">jerrylu</a> — 30 cze 2015, o 13:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tec-dive]]></name></author>
<updated>2015-06-30T13:46:05+01:00</updated>
<published>2015-06-30T13:46:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133259#p133259</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133259#p133259"/>
<title type="html"><![CDATA[Re: INT0 i UART - po raz kolejny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133259#p133259"><![CDATA[
No i dokładnie to był ten problem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Kompletnie o tym zapomniałem, że trzeba pozbyć się tego RS485.<br />Dziękuję za szybką i rzeczową pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4916">tec-dive</a> — 30 cze 2015, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jerrylu]]></name></author>
<updated>2015-06-30T13:40:10+01:00</updated>
<published>2015-06-30T13:40:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133258#p133258</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133258#p133258"/>
<title type="html"><![CDATA[Re: INT0 i UART - po raz kolejny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133258#p133258"><![CDATA[
Z tego co kojarzę na PD2 jest konfigurowany w UART RS485.<br />Masz zakomentowany ten RS?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8719">jerrylu</a> — 30 cze 2015, o 13:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tec-dive]]></name></author>
<updated>2015-06-30T13:15:09+01:00</updated>
<published>2015-06-30T13:15:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133256#p133256</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133256#p133256"/>
<title type="html"><![CDATA[INT0 i UART - po raz kolejny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12166&amp;p=133256#p133256"><![CDATA[
Witam,<br /><br />temat już był nie raz poruszany na tym forum ale ja jako mocno początkujący nadal nie panuję w pełni nad kodem.<br />Mianowicie w projekcie chcę użyć bibliotek P. Mirka MK_TERMINAL. I to nie pierwszy raz - większość projektów testuję z użyciem terminala, bo to metoda genialna jak nie ma się wystarczająco &quot;obfitego&quot; wyświetlacza.<br />Jednak od kilku już dni nie mogę sobie z tym poradzić, a zachowanie układu po wgraniu wsadu doprowadza mnie do rozpaczy.<br />Poniżej prosty i oczywisty - tak mi się wydaje - kod:<br /><br />[syntax=c]/*<br /> * main.c<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br /><br /><br />#define REL (1&lt;&lt;PB0)// Przekaźnik<br /><br />#define REL_ON PORTB &amp;= ~REL<br />#define REL_OFF PORTB |= REL<br />#define REL_TOG PORTB ^= REL<br />#define REL_DDR DDRB<br /><br />volatile uint16_t Timer1, Timer2, Timer3, Timer4;/* timery programowe 100Hz */<br />volatile uint8_t int0_flag;<br /><br />int main( void )<br />{<br /><br />/*----------------------------- inicjalizacja kierunków pinów  ---------------*/<br /><br />/* ustalamy kierunki pinów */<br />REL_DDR |= REL;// wyjście przekaźnika<br /><br />DDRD &amp;= ~(1&lt;&lt;PD2); // wejście INT0<br /><br /><br />/*----------------------------- inicjalizacja przerwań  ---------------*/<br />// Przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01);// wyzwalanie zboczem opadającym<br />PORTD |= (1&lt;&lt;PD2);// podciągnięcie pinu INT0 do VCC<br />GICR |= (1&lt;&lt;INT0);// odblokowanie przerwania<br /><br /><br />/* Timer2 – inicjalizacja przerwania co 10ms */<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb pracy CTC<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);// preskaler = 1024<br />OCR2 = 108;// przerwanie porównania co 10ms (100Hz)<br />TIMSK = (1&lt;&lt;OCIE2);// Odblokowanie przerwania CompareMatch<br /><br />_delay_ms(20);<br /><br />//USART_Init( __UBRR );<br /><br /><br />sei();<br /><br /><br />//tr_cls(0);<br />//tr_cursor_hide(1);<br />//tr_locate(1,5);<br />//tr_attr( BOLD, YELLOW, BLACK );<br />//uart_puts( &quot;Start...&quot;);<br />//tr_attr( BOLD, WHITE, BLACK );<br /><br />while(1)<br />{<br /><br />if ( int0_flag )<br />{<br />REL_TOG;<br />int0_flag=0;<br /><br />}<br /><br />if(!Timer1)<br />{<br />Timer1=25;<br />//.........<br />}<br /><br />}<br />}<br /><br />ISR(INT0_vect)<br />{<br />int0_flag = 1;<br />}<br /><br />ISR(TIMER2_COMP_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 />No i problem polega na tym, że kiedy używam tylko przerwania INT0 (przełączenie przekaźnika - taki debuger zamiast diody) to wszystko ładnie działa. Ale jak tylko dodam inicjalizację UART - USART_Init( __UBRR ), to blokują mi się przerwania od INT0. Dodatkowo na terminalu nie wyświetla się tekst ale ekran się czyści. <br />Co ciekawe... co jakiś czas jak zakomentuję inicjalizację UART-a to nadal mam zablokowane INT0. Pomaga tylko przekopiowanie do nowego projektu.<br />Próby wykonywałem na docelowym układzie, który już wielokrotnie dobrze działał z innym bardzo podobnym kodem ale też testuję na zestawie ATB rev. 1.04<br />Wiem, że takie efekty pojawiają się kiedy używamy przerwanie w przerwaniu, a biblioteki z książki do UART są o nie oparte. Jednak ja tutaj tylko ustawiam flagę w przerwaniu, a resztę operacji wykonuję w pętli while(1).<br />Nie potrafię doszukać się miejsca w którym popełniam błąd - może ktoś z szanownych Forumowiczów pochyli się nad moim problemem i nakieruje mnie na właściwe tory.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4916">tec-dive</a> — 30 cze 2015, o 13:15</p><hr />
]]></content>
</entry>
</feed>