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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-23T15:37:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1975&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-23T15:37:12+01:00</updated>
<published>2012-12-23T15:37:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21950#p21950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21950#p21950"/>
<title type="html"><![CDATA[Re: Przerwanie INT0 i Timer0 razem się gryzą?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21950#p21950"><![CDATA[
Dokładnie - mam nadzieję, że na tym własnym bolesnym przykładzie zapamiętasz - że jeśli przerwanie to BROŃ BOŻE - żadnych NIGDY w ŻYCIU DELAYów czy też innych długotrwałych operacji - np wyświetlania na LCD itp <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 gru 2012, o 15:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kila]]></name></author>
<updated>2012-12-23T14:53:09+01:00</updated>
<published>2012-12-23T14:53:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21948#p21948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21948#p21948"/>
<title type="html"><![CDATA[Przerwanie INT0 i Timer0 razem się gryzą?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1975&amp;p=21948#p21948"><![CDATA[
Czy to może ja popełniam błąd?<br /><br />Kolejne zadanie, kolejny problem - podłączam wyjście int z PCF pod port PD2, inicjuję przerwanie INT0, i z każdym cyknięciem INT0 zwiększam licznik, na podstawie którego wyświetlam cyfry na 7-seg.<br /><br />Zmodyfikowałem bibliotekę d_led_.h tak, aby dane (katody) były na porcie A, a anody 4 sztuki na C (PC0...PC3)<br /><br />Generalnie działa, ale... no właśnie zawsze musi być to ale... Wygląda na to, jakby dwa przerwania się zakłócały (?) Nie wiem, czy to możliwe, z przerwaniami pracuję dopiero parę godzinek. <br /><br />Oto kod:<br /><br />[syntax=c]<br />/*<br /> * main.c<br /> *<br /> *  Created on: 2012-12-23<br /> *      Author: mateusz.kilinski<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;d_led.h&quot;<br /><br /><br />#define LED (1&lt;&lt;PB0)<br />#define BUTTON (1&lt;&lt;PD2)<br />#define LED_TOGPORTB ^=  LED<br /><br />volatile int sekunda[10] = {0,1,2,3,4,5,6,7,8,9};<br />volatile int flaga;<br /><br />int main(void)<br />{<br /><br /><br />//*************************KONFIGURACJA PORTÓW*************************//<br /><br />DDRB         |=  LED; //port jako wyjście (stan H)<br />PORTB|= LED;//wygaszenie diody (wysłanie stanu H na pin LED<br /><br />DDRD        &amp;=~BUTTON;//port jako wejście (stan L)<br />PORTD|= BUTTON;//podciągnięcie klawisza pod H<br /><br />//***********************INICJALIZACJA PRZERWANIA INT0****************//<br /><br />MCUCR |= (1&lt;&lt;ISC01);                        //konfiguracja wywołania przerwania<br />GICR         |=  (1&lt;&lt;INT0);//włączenie przerwania INT0<br /><br /><br />d_led_init();//inicjalizacja obsługi 7-seg<br />sei();//uruchomienie przerwań<br /><br />while(1)<br />{<br />if (flaga&gt;9)<br />flaga = 0;                //resetowanie flagi<br /><br />cy4 = sekunda[flaga];         //wyświetlanie kolejnej cyfry<br />}<br />}<br /><br /><br />ISR(INT0_vect)<br />{<br />flaga++;<br />LED_TOG;<br />_delay_ms(600);<br />}<br /><br />[/syntax]<br /><br />A to efekty <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 21 minutach ]</span></strong><br /><br />Dobra, w sumie się okazało, że niepotrzebnie dałem _delay_ms(600); w funkcji przerwania <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Teraz działa idealnie!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=699">kila</a> — 23 gru 2012, o 14:53</p><hr />
]]></content>
</entry>
</feed>