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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-31T20:34:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14297&amp;mode</id>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-31T20:34:36+01:00</updated>
<published>2016-01-31T20:34:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=152240#p152240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=152240#p152240"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=152240#p152240"><![CDATA[
Dziękuje za pomoc:) Udało się zrobić ze zrozumieniem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 31 sty 2016, o 20:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-01-27T00:09:32+01:00</updated>
<published>2016-01-27T00:09:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151861#p151861</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151861#p151861"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151861#p151861"><![CDATA[
W każdym obiegu pętli while tworzysz dwie zmienne flaga i flaga2. Zmienne te są zmiennymi lokalnymi bo są tworzone wewnątrz funkcji main. Zmienne lokalne tworzone są na stosie i jeśli nie przypiszesz im jakiś konkretnych wartości to wtedy będą miały przypadkowe wartości.<br /><br />Kompilator ostrzega, że próbujesz użyć zmiennej lokalnej bez jej wcześniejszej inicjalizacji. Podczas tworzenia tych zmiennych przypisz im  np. zerowe wartości.<br /><br />I przenieś je poza while do funkcji main. Bo teraz to niepotrzebnie z każdym obiegiem pętli są wciąz tworzone na nowo.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 10 minutach ]</span></strong><br /><br />Chodzi ci o to, że ten fragment ci nie działa?<br />[syntax=c]if (timer==5 &amp;&amp; flaga==1)<br />{<br />      PORTC |= LED;<br />      PORTC &amp;= ~LED1;<br />}[/syntax]<br />Tak napisałeś program, że nie będzie działał.<br /><br />No popatrz. Na początku zmienna keylock ma wartość równą zero. Po wciśnięciu klawisza ten warunek zostaje spełniony<br />[syntax=c]if(!keylock &amp;&amp; !(PINC&amp;KEY_DOWN)) //obsługa przycisku[/syntax]<br /><br />W jego wnętrzu, zmiennej keylock przypisujesz wartość jeden. W każdym następnym obiegu pętli while ten warunek już nie będzie spełniony. Bo wartość keylock jest różna od zera. Więc jak ma się wykonać to co jest we wnętrzu tego warunku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 27 sty 2016, o 00:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-27T00:15:18+01:00</updated>
<published>2016-01-27T00:04:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151860#p151860</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151860#p151860"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151860#p151860"><![CDATA[
Poprawiłem to ale dalej mi to nie działa więc zrobiłem jedną lampke:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #define KEY_DOWN (1&lt;&lt;PC0)<br />#define LED (1&lt;&lt;PC1)<br />#define LED1 (1&lt;&lt;PC2)<br />    volatile uint8_t timer;<br />    uint8_t keylock;<br />        int main (void)<br />        {<br />        DDRC |= LED;<br />        PORTC |= KEY_DOWN|LED;<br />        TCCR1B |= (1&lt;&lt;WGM12);<br />        TCCR1B |= (1&lt;&lt;CS12)|(1&lt;&lt;CS10);<br />        OCR1A = 7811; //1 na sekundę<br />        TIMSK |= (1&lt;&lt;OCIE1A);<br />        sei();<br />while(1)<br />        {<br />uint8_t flaga;<br />        if(!keylock &amp;&amp; !(PINC&amp;KEY_DOWN)) //obsługa przycisku<br />        {<br />            keylock=1;<br />            flaga=1;<br />            PORTC &amp;= ~LED;<br />            if (timer==5 &amp;&amp; flaga==1)<br />            {<br />            PORTC |= LED;<br />            PORTC &amp;= ~LED1;<br />            }<br /><br />            }<br />else if (keylock &amp;&amp; (PINC&amp;KEY_DOWN)) keylock++;<br />}<br />}<br />ISR(TIMER1_COMPA_vect)<br />{<br />timer++;<br />if (timer&gt;5)timer=0;<br />}[/syntax]<br /><br />Też nie działa. Chyba z timerem coś pomieszałem. Mógłby ktoś zerknąć. W OCR1A wyszło mi 7811,5 ale wstawiłem 7811 czy to przez to?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 27 sty 2016, o 00:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-26T22:58:30+01:00</updated>
<published>2016-01-26T22:58:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151851#p151851</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151851#p151851"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151851#p151851"><![CDATA[
<a href="https://obrazkiforum.atnel.pl/11544/973bde658ff11539a677608db20587ea.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11544/973bde658ff11539a677608db20587ea.jpg" alt="Obrazek" /></a><br />Faktycznie ;( dziękuje za pomoc.<br />A taki błąd co oznacza?<br /><br />Chyba z tymi flagami coś nie tak. Jak już warunek jest spełniony to ja chce je wyzerować na tym polega błąd?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 26 sty 2016, o 22:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2016-01-26T22:49:31+01:00</updated>
<published>2016-01-26T22:49:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151850#p151850</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151850#p151850"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151850#p151850"><![CDATA[
Sprawdź dokładnie kod a szczególnie nawiasy klamrowe. Taki błąd się pojawia jeśli funkcję obsługi przerwania umieści się np. wewnątrz funkcji main a nie poza nią.<br /><br />W przedstawionym kodzie tak właśnie jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 26 sty 2016, o 22:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-26T22:18:06+01:00</updated>
<published>2016-01-26T22:18:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151847#p151847</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151847#p151847"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151847#p151847"><![CDATA[
Oscylator wewnętrzny 8MHz.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #define KEY_DOWN (1&lt;&lt;PC0)<br />    #define LED (1&lt;&lt;PC1)<br />#define KEY_DOWN (1&lt;&lt;PC0)<br />#define LED (1&lt;&lt;PC1)<br />#define LED1 (1&lt;&lt;PC2)<br />#define LED2 (1&lt;&lt;PC3)<br />    volatile uint8_t timer;<br />    uint8_t keylock;<br />        int main (void)<br />        {<br />        DDRC |= LED;<br />        PORTC |= KEY_DOWN|LED;<br />        TCCR1B |= (1&lt;&lt;WGM12);<br />        TCCR1B |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br />        OCR1A = 7811; //1 na sekundę<br />        TIMSK |= (1&lt;&lt;OCIE1A);<br />        sei();<br />while(1)<br />        {<br />        uint8_t flaga, flaga2;<br />        if(!keylock &amp;&amp; !(PINC&amp;KEY_DOWN)) //obsługa przycisku<br />        {<br />            keylock=1;<br />            PORTC &amp;= ~LED;<br /><br />            if (timer&gt;5)<br />            {<br />            PORTC |= LED;<br />            PORTC &amp;= ~LED1;<br />            flaga=1;<br />            }<br />            else if (timer&gt;10 &amp;&amp; flaga==1)<br />                    {<br />                    PORTC |= LED1;<br />                    PORTC &amp;= ~LED2;<br />                    flaga=0;<br />                    flaga2=1;<br />                    }<br />            else if (timer&gt;15 &amp;&amp; flaga2==1)<br />            {<br />            PORTC |= LED2;<br />                flaga2=0;<br />            }<br /><br />        }<br />else if (keylock &amp;&amp; (PINC&amp;KEY_DOWN)) keylock++;<br />}<br /><br />ISR(TIMER1_COMPA_vect)<br />{<br />timer++;<br />if (timer==12)timer=0;<br />}[/syntax]<br /><br />I tak zrobiłem, że każda się pali po 10 sek. Ale jak miałem ~32 200 w OCR1A to wyrzucił mi błąd. Ale jak wpisałem 7811 to jest ok, nie wiem dlaczego krzyczał dla 32 200. <br /><br />Tak jak rozumiem tak zrobiłem, nie posiłkuje się na razie żadnym z programów kolegów bo chciałem zobaczyć czy sam dam radę. Niestety cała linijka od przerwania:[syntax=c]ISR(TIMER1_COMPA_vect)<br />{<br />timer++;<br />if (timer==12)timer=0;<br />}[/syntax]<br />podkreślona na czerwono <br /><br /><a href="https://obrazkiforum.atnel.pl/11544/bc1e5400862ca9720fbfdd557964b287.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/11544/bc1e5400862ca9720fbfdd557964b287.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 26 sty 2016, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarecki]]></name></author>
<updated>2016-01-25T11:26:13+01:00</updated>
<published>2016-01-25T11:26:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151651#p151651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151651#p151651"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151651#p151651"><![CDATA[
[syntax=c]if (timer=1&amp;&amp;flaga=1)  //??????????<br />        {<br />                PORTC |= LED;<br />                PORTC &amp;= ~LED1;<br />        }<br /><br />//chyba powinno być tak:<br /><br />        if (((timer == 1) &amp;&amp; (flaga ==  1)))<br />        {<br />                PORTC |= LED;<br />                PORTC &amp;= ~LED1;<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2511">Jarecki</a> — 25 sty 2016, o 11:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wchpikus]]></name></author>
<updated>2016-01-25T08:54:09+01:00</updated>
<published>2016-01-25T08:54:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151641#p151641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151641#p151641"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151641#p151641"><![CDATA[
Hmm, sciagnij sobie mkavr-calkulator, tam masz zakladke do timerow.<br /><br />Co do rezonatora, masz 8Mhz, a mówisz ze nie masz..znaczy masz włączony wewnętrzny oscylator na 1MHz?<br />Jak masz ustawione fuse bity?<br /><br />Program powinien wygladac tak:<br /><br />main:<br />&gt;ustawienie portow i timera<br />&gt;while<br />-sprawdzasz przerwanie<br />-migasz ledka<br /><br />vector przerwania poza main...<br /><br /><br />Taki przyklad:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />volatile uint8_t count;<br /><br />void main()<br />{<br />   // Prescaler = FCPU/1024<br />   TCCR0|=(1&lt;&lt;CS02)|(1&lt;&lt;CS00);<br /><br />   //Enable Overflow Interrupt Enable<br />   TIMSK|=(1&lt;&lt;TOIE0);<br /><br />   //Initialize Counter<br />   TCNT0=0;<br /><br />   //Initialize our varriable<br />   count=0;<br /><br />   //Port C&#91;3,2,1,0&#93; as out put<br />   DDRC|=0x0F;<br /><br />   //Enable Global Interrupts<br />   sei();<br /><br />   //Infinite loop<br />   while(1);<br />}<br /><br />ISR(TIMER0_OVF_vect)<br />{<br />   //This is the interrupt service routine for TIMER0 OVERFLOW Interrupt.<br />   //CPU automatically call this when TIMER0 overflows.<br /><br />   //Increment our variable<br />   count++;<br />   if(count==61)<br />   {<br />      PORTC=~PORTC; //Invert the Value of PORTC<br />      count=0;<br />   }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3859">wchpikus</a> — 25 sty 2016, o 08:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-25T00:33:28+01:00</updated>
<published>2016-01-25T00:33:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151632#p151632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151632#p151632"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151632#p151632"><![CDATA[
Atmega16, bez rezonatora. 8000 000Mhz.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#define KEY_DOWN (1&lt;&lt;PC0)<br />#define LED (1&lt;&lt;PC1)<br />volatile uint8_t timer, flaga;<br />uint8_t keylock;<br />    int main(void)<br />    DDRC |= LED;<br />    PORTC |= KEY_DOWN|LED;<br />    TCCR1B |= (1&lt;&lt;WGM12);<br />    TCCR1B |= (1&lt;&lt;CS12);<br />    OCR1A = 31 249; //1 na sekundę<br />    TIMSK |= (1&lt;&lt;OCIE1A);<br />    while(1)<br />    {<br />    if(!keylock &amp;&amp; !(PINC&amp;KEY_DOWN))  // tu musisz dać obsługę przycisku<br />    {<br />    keylock=1;<br />    timer=1;<br />    PORTC &amp;= ~LED;<br />    <br />    if (timer=1&amp;&amp;flaga=1)<br />    {<br />    PORTC |= LED;<br />    PORTC &amp;= ~LED1;<br />    }<br /><br />    }<br />    }<br />else if (keylock &amp;&amp; (PINC&amp;KEY_DOWN)) keylock++;<br />                       <br />               <br />               ISR(TIMER1_COMPA_vect)<br />                           {<br />                       if (timer=1)<br />                       {<br />                       for(timer=1, timer&lt;6, timer++)<br />                       flaga=1;<br />                           }[/syntax]<br /><br />W dobrym kierunku idę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 25 sty 2016, o 00:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wchpikus]]></name></author>
<updated>2016-01-24T23:27:03+01:00</updated>
<published>2016-01-24T23:27:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151627#p151627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151627#p151627"/>
<title type="html"><![CDATA[Re: Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151627#p151627"><![CDATA[
Jeden timer wystarczy.<br />Jaki uc i jaki rezonator?<br />Musisz przeliczyc i ustawic timer by miec 1 sek.<br />W przerwaniu zliczasz i co sekunde zwiekszasz jakas zmienna np sek.<br />W petli while juz prosto, po sek sprawdzasz i wykonujesz co chcesz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3859">wchpikus</a> — 24 sty 2016, o 23:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-01-24T23:20:30+01:00</updated>
<published>2016-01-24T23:20:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151625#p151625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151625#p151625"/>
<title type="html"><![CDATA[Lampki choinkowe]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14297&amp;p=151625#p151625"><![CDATA[
Chciałbym, zrobić lampki choinkowe. Nie wiem ile timerów musze wykorzystać. Nie bardzo to jeszczee wiem jak rozumieć. Bo timery są w przerwaniach nie mam tak, że ustawiam timer 10 sek np. delay_on i mi zapala za 10 sek i z tym mam problem.<br />Chce zrobić aby zapalały się 4 lampki. Jedna 5 sekund gaśnie i zapala się druga na 10 gaśnie, 3 na 15 i gaśnie i 4 na 20 i gaśnie.<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#define KEY_DOWN (1&lt;&lt;PC0)<br />#define LED (1&lt;&lt;PC1)<br />#define LED1 (1&lt;&lt;PC2)<br />#define LED2 (1&lt;&lt;PC3)<br />#define LED3 (1&lt;&lt;PC4)<br />volatile uint16_t timer;<br />timer=10; //będziemy odliczać 10sek<br />uint8_t keylock, flaga; <br />    int main(void)<br />    DDRC |= LED;<br />    PORTC |= KEY_DOWN|LED|LED1|LED2|LED3;<br />    TCCR1B |= (1&lt;&lt;WGM12);<br />    TCCR1B |= (1&lt;&lt;CS12);<br />    OCR1A = 30; //1000 na sekundę <br />    TIMSK |= (1&lt;&lt;OCIE1A); <br />    while(1)<br />    {<br />    if(!keylock &amp;&amp; !(PINC&amp;KEY_DOWN))  // tu musisz dać obsługę przycisku<br />    {<br />    keylock=1;<br />    PORTC &amp;= ~LED;<br />    flaga=1;<br />    if (flaga=1)<br />    {<br />    <br />    }<br />    <br />    }<br />               else if (keylock &amp;&amp; (PINC&amp;KEY_DOWN)) keylock++;<br />                       ISR(TIMER1_COMPA_vect)<br />                           {<br />                                   <br />                           }[/syntax]<br /><br />Nie wiem jak to ogarnać:(<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 24 sty 2016, o 23:20</p><hr />
]]></content>
</entry>
</feed>