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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-07T08:33:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8420&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-07T08:33:21+01:00</updated>
<published>2014-09-07T08:33:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94544#p94544</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94544#p94544"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94544#p94544"><![CDATA[
<div class="quotetitle">gordo napisał(a):</div><div class="quotecontent"><br />Tak z ciekawości zapytam - dlaczego poprawnie ?<br /></div><br /><br />WARTO wyjaśnić - a mówię też o tym sporo w Bluebooku ... tylko chyba nie każdy to załapał a przynajmniej nie od razu ...<br /><br />co to  znaczy w C ? tzn zapis poniżej ?<br /><br />[syntax=c]( )[/syntax]<br /><br />to znaczy WYRAŻENIE .... w nawiasy okrągłe można &quot;ubrać&quot; cokolwiek ... i będzie to zawsze wyrażeniem, które przyjmie jakąś wartość .... poniżej przykłady kilku różnych wyrażeń <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />[syntax=c]( 1&gt;&gt;5 )<br /><br />( a&lt;5 )<br /><br />( g==b )[/syntax]<br /><br />ale równie dobrze wyrażeniem może być funkcja<br /><br />[syntax=c]( fun() )[/syntax]<br /><br />a także zwykła zmienna<br /><br />[syntax=c]( a )[/syntax]<br /><br />czy stała dosłowna<br /><br />[syntax=c]( 7 )[/syntax]<br /><br />zatem co stoi na przeszkodzie żeby napisać:<br /><br />[syntax=c]return (0);[/syntax]<br /><br />??? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... mam nadzieję, że teraz już jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 wrz 2014, o 08:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-07T08:01:15+01:00</updated>
<published>2014-09-07T08:01:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94539#p94539</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94539#p94539"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94539#p94539"><![CDATA[
Oba sposoby są równie poprawne. Jest to raczej kwestia kosmetyczna niż funkcjonalna.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 7 wrz 2014, o 08:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gordo]]></name></author>
<updated>2014-09-07T01:44:59+01:00</updated>
<published>2014-09-07T01:44:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94528#p94528</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94528#p94528"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94528#p94528"><![CDATA[
<div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br />(...)<br />Oraz na koniec return:<br /><br />[syntax=c]return (0);[/syntax]<br /><br />Poprawnie jest:<br /><br />[syntax=c]return 0;[/syntax]<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><br /></div><br /><br />Tak z ciekawości zapytam - dlaczego poprawnie ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2592">gordo</a> — 7 wrz 2014, o 01:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-06T23:08:57+01:00</updated>
<published>2014-09-06T23:08:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94525#p94525</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94525#p94525"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94525#p94525"><![CDATA[
Witam,<br /><br /><div class="quotetitle">Pixello napisał(a):</div><div class="quotecontent"><br />Dziękuję za pomoc, kolega doman89 mnie trochę zdezorientował. Problem został rozwiązany.<br /></div><br /><br />Na początek wielkie sorki, mogłem lekki zamęt wprowadzić <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />, ale po północy człowiek się położył, wstał po 4 rano, bo do Torunia na mecz się wybierał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Na szybkiego pisałem więc walnąłem babola.<br /><br />Co do delay masz zdefinowane F_CPU i ustawioną optymalizację na -Os ?<br />Jeżeli nie to: <a href="http://forum.atnel.pl/topic8131.html#p91516"  class="postlink">KLIK</a><br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 6 wrz 2014, o 23:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixello]]></name></author>
<updated>2014-09-06T07:23:01+01:00</updated>
<published>2014-09-06T07:23:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94435#p94435</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94435#p94435"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94435#p94435"><![CDATA[
Dziękuję za pomoc, kolega doman89 mnie trochę zdezorientował. Problem został rozwiązany.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5672">Pixello</a> — 6 wrz 2014, o 07:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixello]]></name></author>
<updated>2014-09-06T07:07:33+01:00</updated>
<published>2014-09-06T07:07:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94431#p94431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94431#p94431"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94431#p94431"><![CDATA[
Witam, <br />Dziękuję za podpowiedź, ale po odpowiedzi kolegi atmel kod już działa, miałem później problem z _delay_ms, ale go rozwiązałem stosując pętlę porównywającą licznik pętli do wartości z tablicy, a w oczekiwanie wstawiłem stałą. Bardzo dziękuję za rady. Mam pytanie. W datashecie atmegi8 jest wpis na temat <div class="codetitle"><b>Code:</b></div><div class="codecontent">General Interrupt <br />Control Register – GICR</div>. Nie mogę znaleźć nic o GIMSK. Nie wiem dlaczego, ale mi bardziej odpowiada zapis szesnastkowy, ew dwójkowy portów.<br /><br />Jeszcze raz dziękuję za pomoc i pozdrawiam<br />Pixello<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5672">Pixello</a> — 6 wrz 2014, o 07:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-09-06T04:00:15+01:00</updated>
<published>2014-09-06T04:00:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94424#p94424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94424#p94424"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94424#p94424"><![CDATA[
Witam,<br /><br />Na początek kolega proponuję, jakąkolwiek książkę do języka C, jeżeli stricte mikrokontrolery, to niebieska książka p. Mirka. To jedziemy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> :<br />[syntax=c]DDRC = 0xff;<br />PORTC = 0xff;[/syntax]<br /><br />Myślę, że klasyczne:<br />[syntax=c]DDRC |= (1&lt;&lt;PC0) | (1&lt;&lt;PC1) | (1&lt;&lt;PC2) | (1&lt;&lt;PC3) | (1&lt;&lt;PC4) | (1&lt;&lt;PC5) | (1&lt;&lt;PC6) | (1&lt;&lt;PC7);<br />PORTC |= (1&lt;&lt;PC0) | (1&lt;&lt;PC1) | (1&lt;&lt;PC2) | (1&lt;&lt;PC3) | (1&lt;&lt;PC4) | (1&lt;&lt;PC5) | (1&lt;&lt;PC6) | (1&lt;&lt;PC7);[/syntax]<br /><br />Jest dużo lepsze, jeszcze w połączeniu z makrodefinicjami, jeżeli kiedykolwiek będziesz cokolwiek modyfikował w takim kodzie (albo wykorzystać napisane funkcje programu w innym kodzie).<br /><br />Dalej:<br />[syntax=c]GICR |= (1&lt;&lt;INT0); // załączam przerwania PD2[/syntax]<br /><br />Nie jestem pewny, ale ja bym celował w rejestr GIMSK<br /><br />[syntax=c]volatile int numerdiody = 0;[/syntax]<br /><br />Jak kolega wyżej podpowiada bez volatile - niu używasz zmiennej w przerwaniu.<br /><br />[syntax=c]ISR ( INT0_vect ) //początek funkcji obsługi przerwania<br />{<br />if ( time &lt;= 7 )<br />{<br />time = time + 1;<br />}<br />else<br />{<br />time = 0;<br />}<br />}[/syntax]<br /><br />Również jak kolega wyżej wspomniał, wywal obsługę przerwania poza main.<br /><br />[syntax=c]for (;;)[/syntax]<br /><br />Ja bym zmienił na klasycznego while(1), tak chyba każdy ma zakodowane i widać odrazu, że pętla główna programu.<br /><br />[syntax=c]numerdiody = numerdiody + 1;[/syntax]<br /><br />Zamień na:<br /><br />[syntax=c]numerdiody++;[/syntax]<br /><br />Oraz na koniec return:<br /><br />[syntax=c]return (0);[/syntax]<br /><br />Poprawnie jest:<br /><br />[syntax=c]return 0;[/syntax]<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 6 wrz 2014, o 04:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-09-05T22:54:30+01:00</updated>
<published>2014-09-05T22:54:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94417#p94417</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94417#p94417"/>
<title type="html"><![CDATA[Re: Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94417#p94417"><![CDATA[
Ciężko się w kodzie rozeznać ponieważ nie wstawiłeś go zgodnie z zasadami panującymi na forum tj. w znacznikach SYNTAX C kolorujących składnię.<br /><br />Z tego co na szybko i z grubsza widzę to procedura obsługi przerwania powinna znaleźć się poza główną funkcją programu &quot;main()&quot;.<br />Zmienna &quot;time&quot; musi być zmienną globalną lub lepiej statyczną dla funkcji obsługi przerwania. Natomiast &quot;numerdiody&quot; nie musi mieć modyfikatora volatile.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 5 wrz 2014, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Pixello]]></name></author>
<updated>2014-09-06T10:58:19+01:00</updated>
<published>2014-09-05T22:47:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94416#p94416</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94416#p94416"/>
<title type="html"><![CDATA[Nieznany błąd w przerwaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8420&amp;p=94416#p94416"><![CDATA[
Witam. Skleciłem sobie taki kod<br /><br /><br /> [syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />// tablica<br /><br />uint8_t tab&#91;&#93; = {32,16,8,4,2,1,2,4,8,16};<br />int czas&#91;&#93; = {1000,500,250,125,72,36,18};<br /><br />int main( void )<br /> {<br />sei(); // załączam przerwania<br />DDRC = 0xff;<br />PORTC = 0xff;<br />PORTD &amp;= ~(1&lt;&lt;PD2);// wejście pd2<br />GICR |= (1&lt;&lt;INT0); // załączam przerwania PD2<br />PORTD |= 1&lt;&lt;PD2; //pullup<br /><br /><br /><br />int time = 0;<br />volatile int numerdiody = 0;<br /><br />ISR ( INT0_vect ) //początek funkcji obsługi przerwania<br />{<br />if ( time &lt;= 7 )<br />{<br />time = time + 1;<br />}<br />else<br />{<br />time = 0;<br />}<br />}<br /><br />for (;;)<br />{<br />if (numerdiody &lt;= 9)<br />{<br />PORTC = ~tab&#91; numerdiody &#93;;<br />numerdiody = numerdiody + 1;<br />_delay_ms (czas&#91;time&#93;);<br />}<br />else<br />{<br />numerdiody = 0;<br />}<br />}<br />return (0);<br /><br />}[/syntax]<br />który ma mi ładnie migać diodami przy zmiennym opóźnieniu. Problem jest taki, że w error list dostaję <div class="codetitle"><b>Code:</b></div><div class="codecontent">Error   1   invalid storage class for function '__vector_1'   C:\Users\a\Documents\Atmel Studio\6.2\GccApplication6\GccApplication6\GccApplication6.c   24   14   GccApplication6</div>, i za nic w świecie nie wiem jak to ugryźć. Dodam że jestem początkującym. Uc to atmega8.<br /><br />@Edit.<br /><br />Przepraszam za złe sformatowanie, poprawiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5672">Pixello</a> — 5 wrz 2014, o 22:47</p><hr />
]]></content>
</entry>
</feed>