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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-09-09T18:35:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12888&amp;mode</id>
<entry>
<author><name><![CDATA[PJasinski91]]></name></author>
<updated>2015-09-09T18:35:59+01:00</updated>
<published>2015-09-09T18:35:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139392#p139392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139392#p139392"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139392#p139392"><![CDATA[
Znacznie jaśniej. Jutro podłączę oscyloskop i zobaczę czy wszystko działa. <br />Dziękuję za podpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8607">PJasinski91</a> — 9 wrz 2015, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-09T18:32:50+01:00</updated>
<published>2015-09-09T18:32:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139390#p139390</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139390#p139390"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139390#p139390"><![CDATA[
<div class="quotetitle">PJasinski91 napisał(a):</div><div class="quotecontent"><br />W Pana przypadku ustawiam jedynki na ww. bitach zerując pozostałe<br /></div><br />Zrozum, ZEROWANIE wybranej flagi następuje nie przez wpisanie zera do bitu (bo to jest IGNOROWANE), <br /><br />więc wpisując zera do pozostałych bitów NICZEGO NIE ZERUJESZ w przypadku rejestrów flag przerwań. Warto to zapamiętać, bo jeśli w programie będziesz używał kilku różnych przerwań a zechcesz sobie rozpisać na poszczególne kroki (tak jak pokazałem to na rysunkach w Bluebooku) to zobaczysz, że stosując tu operator OR czyli |= robisz sobie dopiero bigos ....<br /><br />reasumując chcesz wyzerować konkretną flagę czy konkretne flagi żeby przypadkowo nie dziabnąć innych to nie stosuj w tym konkretnym przypadku |=<br /><br />mam nadzieję, że teraz jaśniej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 wrz 2015, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJasinski91]]></name></author>
<updated>2015-09-09T18:09:35+01:00</updated>
<published>2015-09-09T18:09:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139389#p139389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139389#p139389"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139389#p139389"><![CDATA[
Dostrzegam drobną różnicę.<br />W moim przypadku dodaję jedynki na bitach INTF1 i INTF0 pozostałych nie zmieniając. W Pana przypadku ustawiam jedynki na ww. bitach zerując pozostałe. Nie potrafię jednak zrozumieć jaki to ma wpływ. Czy to o czym Pan mówi ma znaczenie tylko gdy używam też przerwania INT2?<br />Z góry dziękuję za wyjaśnienia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8607">PJasinski91</a> — 9 wrz 2015, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-09T13:45:30+01:00</updated>
<published>2015-09-09T13:45:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139380#p139380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139380#p139380"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139380#p139380"><![CDATA[
I tak i nie .... <br /><br />tzn DOKŁADNIE chodzi o to żeby je wyzerować w GIFR ale uwaga nie można tego robić tak jak wyżej napisałeś .... trzeba tak <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]GIFR = (1&lt;&lt;INTF1)|(1&lt;&lt;INTF0);[/syntax]<br /><br />dostrzegasz drobną różnicę ? to akurat jest bardzo istotne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 wrz 2015, o 13:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJasinski91]]></name></author>
<updated>2015-09-09T13:05:50+01:00</updated>
<published>2015-09-09T13:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139379#p139379</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139379#p139379"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139379#p139379"><![CDATA[
Nie mogę w tej chwili sprawdzić w praktyce. Czy chodzi o:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Register – GIFR<br />Bit 7 – INTF1: External Interrupt Flag 1<br />The flag is cleared when the interrupt routine is executed.<br />Alternatively, the flag can be cleared by writing a logical one to it.<br /></div><br />[syntax=c]GIFR |= (1&lt;&lt;INTF1)|(1&lt;&lt;INTF0);[/syntax]<br />Tak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8607">PJasinski91</a> — 9 wrz 2015, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-09T11:10:02+01:00</updated>
<published>2015-09-09T11:10:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139376#p139376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139376#p139376"/>
<title type="html"><![CDATA[Re: Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139376#p139376"><![CDATA[
<div class="quotetitle">PJasinski91 napisał(a):</div><div class="quotecontent"><br />1. Stan niski na pinie PC0 nie pojawia się &quot;pionowo&quot; lecz łagodnie jakby się rozładowuje. Czy to naturalne i tak powinno być?<br /></div><br />Powinno - tzn zależy jak zaprojektowałeś układ wyjściowy na którym to badasz .... <br /><br /><div class="quotetitle">PJasinski91 napisał(a):</div><div class="quotecontent"><br />2. Po upływie tych 500ms gdy przerwania się włączają na PC0 pojawia się niezamierzony pik.<br /></div><br />To też jest całkiem normalne, po prostu przed ponownym włączeniem przerwań skasuj sprzętowe flagi tych przerwań bo widać, że się wyzwalają po załączeni na skutek poprzedniego zgłoszenia przed wyłączeniem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 wrz 2015, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJasinski91]]></name></author>
<updated>2015-09-09T10:58:32+01:00</updated>
<published>2015-09-09T10:58:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139375#p139375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139375#p139375"/>
<title type="html"><![CDATA[Przerwania zewnętrzne oraz zmiana stanu na innym pinie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12888&amp;p=139375#p139375"><![CDATA[
Witam,<br />Mam problem z poprawnym działaniem programu i nijak nie potrafię go rozwiązać. Może ktoś rzuci świeżym, bardziej doświadczonym okiem i powie mi gdzie popełniłem błąd?<br /><br />Program na Atmege32, taktowaną zewnętrznym kwarcem 8MHz.<br /><br />Program powinien działać następująco:<br />1. Gdy przyjdzie sygnał na jeden z pinów INT0 lub INT1 na pinie PC0 ma pojawić się stan wysoki, a przerwanie to ma zostać wyłączone.<br />2. Gdy przyjdzie sygnał na drugi z pinów przerwań na pinie PC0 ma pojawić się stan niski, a przerwanie to ma zostać wyłączone.<br />3. Po 500 ms przerwania INT0 i INT1 mają zostać ponownie włączone i czekać na kolejny sygnał.<br /><br />W czym problem?<br />1. Stan niski na pinie PC0 nie pojawia się &quot;pionowo&quot; lecz łagodnie jakby się rozładowuje. Czy to naturalne i tak powinno być?<br /><a href="https://obrazkiforum.atnel.pl/8607/b17c482df5fd4a87a6df8f0361305628.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8607/b17c482df5fd4a87a6df8f0361305628.jpg" alt="Obrazek" /></a><br />2. Po upływie tych 500ms gdy przerwania się włączają na PC0 pojawia się niezamierzony pik.<br /><a href="https://obrazkiforum.atnel.pl/8607/e48eef5094634204a0fcaefd231465c4.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8607/e48eef5094634204a0fcaefd231465c4.jpg" alt="Obrazek" /></a><br />Sytuacje zamieszczam na screenach.<br /><br />Legenda:<br />zółty - INT0<br />niebieski - INT1<br />różowy - PC0<br /><br />Kod:<br />[syntax=c]{<br />(...)Wycięte z całości programu<br />//------------------USTAWIENIE TIMER0---------------------<br />//zeruj licznik przepełnień Timera0<br />ilosc_przepelnien0 = 0;<br />//Prescaler = 64<br />TCCR0 |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00);<br />//Wartośc startu licznika - przepełnienie co 1ms<br />TCNT0 = 131;<br />//Włącz przerwania od przepełnienia timer0<br />TIMSK |= (1&lt;&lt;TOIE0);<br />}<br />//Obsługa przerwania po przepełanieniu licznika Timera0<br />ISR(TIMER0_OVF_vect){<br />//powiększ licznik przepełnień Timera0<br />ilosc_przepelnien0++;<br />//Wartośc startu licznika - przepełnienie co 1 ms<br />TCNT0 = 131;<br />//Co 500 ms wykonaj:<br />if(ilosc_przepelnien0 &gt; 500){<br />//Wyłącz Timer0<br />TCCR0 = 0;<br />//Wyłącz przerwania od przepełnienia timer0<br />TIMSK &amp;= ~(1&lt;&lt;TOIE0);<br /><br />//Właczenie przerwania INT0 i INT1<br />GICR |= (1&lt;&lt;INT0)|(1&lt;&lt;INT1);<br /><br />//---------------------------------------------------------<br />//Zerowanie zmiennych do ponownego pomiaru<br />pomiar_zbocze_nr = 1;<br />//Zerowanie zmiennych do ponownego pomiaru<br />ilosc_przepelnien0 = 0;<br />lewy = 0;<br />prawy = 0;<br />}<br />}<br />//Obsługa przerwania INT0 - <br />ISR(INT0_vect){<br />//Wyłączanie przerwania INT0<br />GICR &amp;= ~(1&lt;&lt;INT0);<br />if(prawy == 0)<br />{<br />//Ustaw lewy jako pierwszy<br />lewy = 1;<br />//Ustawnienie stanu wysokiego na PB1<br />PORTC |= (1&lt;&lt;PC0);<br />}<br />//Jeśli tak:<br />else{<br />//Ustawnienie stanu niskiego na PB1<br />PORTC &amp;= ~(1&lt;&lt;PC0);<br />}<br />}<br /><br />//Obsługa przerwania INT1 <br />ISR(INT1_vect){<br />//Wyłączanie przerwania INT1<br />GICR &amp;= ~(1&lt;&lt;INT1);<br />if(lewy == 0)<br />{<br />//Ustaw lewy jako pierwszy<br />prawy = 1;<br />//Ustawnienie stanu wysokiego na PB1<br />PORTC |= (1&lt;&lt;PC0);<br />}<br />//Jeśli tak:<br />else{<br />//Ustawnienie stanu niskiego na PB1<br />PORTC &amp;= ~(1&lt;&lt;PC0);<br /><br />}<br />}<br />int main (void) {<br />//-------------------------------------------------------------<br /><br />//zerujemy flagę który mikrofon był pierwszy<br />lewy = 0;<br />prawy = 0;<br />//Port D jako wejscie<br />DDRD = 0;<br /><br />//---------------------PRZERWANIA INT0 I INT1--------------<br />//Generowanie przerwania INT0 i INT1 zboczem narastajacym<br />MCUCR |= (1&lt;&lt;ISC11)|(1&lt;&lt;ISC10)|(1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);<br />//Właczenie przerwania INT0 i INT1<br />GICR |= (1&lt;&lt;INT0)|(1&lt;&lt;INT1);<br />//---------------------------------------------------------<br />sei();<br />while(1) {<br />(...)<br />}<br />}[/syntax]<br />Kod wycięty z całości programu, mam nadzieję, że niczego nie pominąłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8607">PJasinski91</a> — 9 wrz 2015, o 10:58</p><hr />
]]></content>
</entry>
</feed>