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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-01-06T20:23:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=21822&amp;mode</id>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2019-01-06T20:23:47+01:00</updated>
<published>2019-01-06T20:23:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215513#p215513</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215513#p215513"/>
<title type="html"><![CDATA[Re: Miganie ledami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215513#p215513"><![CDATA[
W funkcji mk_delay_ms masz obsługę przycisku oraz w funkcji while masz drugi raz powtórzoną - po co? Napisałem Ci że jak do while wrzucasz obsługę przycisku to trzeba wywalić z funkcji lub wywalić całą funkcję bo teraz nie jest potrzebna<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 6 sty 2019, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mechanik1000]]></name></author>
<updated>2019-01-06T00:02:34+01:00</updated>
<published>2019-01-06T00:02:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215481#p215481</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215481#p215481"/>
<title type="html"><![CDATA[Re: Miganie ledami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215481#p215481"><![CDATA[
Dzięki za pomoc, program został przepisany od Mirrek36 z youtube, obecnie po wprowadzeniu i zadeklarowaniu btn, program działa, lecz po wciśnięciu przycisku, zatrzymuje się w miejscu tzn. pierwsza dioda świeci stale. Czy coś źle wpisałem?<br /><br />[syntax=c]/* main.c<br /> *<br /> *  Created on: 28 sty 2018<br /> *      Author: Mechanik<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />uint8_t tab1&#91;&#93; = {5,10,20,40,80,160,160,80,40,20,10,5};<br /><br />uint8_t tab2&#91;&#93; = {1,2,4,8,16,32,64,128,0};<br /><br />#define KEY1 (1&lt;&lt;PC5)<br /><br />uint8_t  time_btn;<br /><br />uint8_t  ktory_efekt;<br /><br />int main ( void ) {<br /><br />        DDRD = 0xff;<br />        PORTD = 0xff;<br /><br />        //DDRC &amp;= ~(1&lt;&lt;PC5);<br />        PORTC |= (1&lt;&lt;PC5);<br /><br /><br /><br />        _delay_ms(50);<br /><br />        //sei();<br />        while(1) {<br /><br />        time_btn++;<br />        if (time_btn == 50) time_btn=0;<br />                        if( !( PINC &amp; (1&lt;&lt;PC5)) &amp; (time_btn ==0) ) {<br />                                ktory_efekt ^= 1;<br />                                break;<br />                        }<br /><br />                if( 0 == ktory_efekt ) {<br /><br />                ;<br />                for( uint8_t i=0; i&lt;9; i++ ) {<br />                                PORTD = ~tab2&#91; i &#93;;<br />                                mk_delay_ms( 20 );<br />                                if( 1 == ktory_efekt ) break;<br />                        }<br />                } else {<br /><br /><br />                for( uint8_t i=0; i&lt;12; i++ ) {<br />                                PORTD = ~tab1&#91; i &#93;;<br />                                mk_delay_ms( 50 );<br />                                if( 0 == ktory_efekt ) break;<br />                        }<br />                }<br /><br /><br /><br /><br />        }<br />}<br /><br /><br /><br />void mk_delay_ms( uint16_t ms ) {<br />        while( ms-- ) {<br />                _delay_ms( 1 );<br /><br />                if( !( PINC &amp;(1&lt;&lt;PC5)) ) {<br />                        ktory_efekt ^= 1;<br />                        break;<br /><br />                }<br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20495">Mechanik1000</a> — 6 sty 2019, o 00:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2019-01-04T12:01:30+01:00</updated>
<published>2019-01-04T12:01:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215384#p215384</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215384#p215384"/>
<title type="html"><![CDATA[Re: Miganie ledami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215384#p215384"><![CDATA[
Też jestem początkujący, ale może coś doradzę.<br />Moje uwagi do kodu<br /><br />1. Po co Ci i=0; w linii 35 i 42?<br />2. Zmienną i z 25 linii wyrzuciłbym do 36 i 43 linii i dał for( uint8_t i=0; i&lt;9; i++ )<br />nigdzie więcej tego nie używasz<br />3.co do drgań styków to najprościej na początku while(1) dałbym sprawdzenie przycisku<br />[syntax=c]time_btn++;<br />if (time_btn == 50) time_btn=0;<br />                if( !( PINC &amp; (1&lt;&lt;PC5)) &amp; (time_btn ==0) ) {<br />                        ktory_efekt ^= 1;<br />                        break; <br />                }[/syntax]<br />wcześniej oczywiście trzeba zadeklarować time_btn np uint8_t<br />i byłoby to czytelniej i wywalić to z funkcji i w ogóle wywalić funkcję. Sprawdź to czy to zadziała bo piszę na kolanie.<br />Ale możesz też skoczyć do linka co podał zoom i zrobić wypasioną funkcję do obsługi drgań styków.<br />Ja tutaj dałem czas 50 ale możesz dać większy czas lub mniejszy - dobierzesz w zależności od prędkości procesora.<br />Teoretycznie takie zapytanie powinno się wykonać jeśli naciśniesz przycisk oraz zmienna time_btn równa się zero żeby uprościć to możesz napisać &amp; !time_btn zamiast (time_btn ==0) ale tak jest czytelniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 4 sty 2019, o 12:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2019-01-04T07:31:17+01:00</updated>
<published>2019-01-04T07:31:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215381#p215381</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215381#p215381"/>
<title type="html"><![CDATA[Re: Miganie ledami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215381#p215381"><![CDATA[
A to czytałeś?<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html" >http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html</a><!-- m --><br /><br />Jak jesteś niecierpliwy, to gotowiec obsługi drgań w drugiej części.<br />A jak dalej nie będziesz wiedział, to pisz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 4 sty 2019, o 07:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mechanik1000]]></name></author>
<updated>2019-01-03T23:40:10+01:00</updated>
<published>2019-01-03T23:40:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215377#p215377</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215377#p215377"/>
<title type="html"><![CDATA[Miganie ledami]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21822&amp;p=215377#p215377"><![CDATA[
Witam, poprosił bym o pomoc w zakresie bardzo podstawowym, poniżej udało się wszystko podłączyć i zaprogramować układ Atmega 8A-PU ale nie mogę sobie poradzić w którym miejscu wstawić niwelację drgań styków (oczywiście chciałbym zrezygnować z funkcji delay).<br /><br />Z góry dziękuję.<br /><br />[syntax=cpp]* main.c<br /> *<br /> *  Created on: 28 sty 2018<br /> *      Author: Mechanik<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />uint8_t tab1&#91;&#93; = {5,10,20,40,80,160,160,80,40,20,10,5};<br /><br />uint8_t tab2&#91;&#93; = {1,2,4,8,16,32,64,128,0};<br /><br />#define KEY1 (1&lt;&lt;PC5)<br /><br />uint8_t  ktory_efekt;<br /><br />int main ( void ) {<br /><br />DDRD = 0xff;<br />PORTD = 0xff;<br /><br />//DDRC &amp;= ~(1&lt;&lt;PC5);<br />PORTC |= (1&lt;&lt;PC5);<br /><br />uint8_t i;<br /><br />_delay_ms(50);<br /><br />//sei();<br />while(1) {<br /><br /><br /><br />if( 0 == ktory_efekt ) {<br />i=0;<br />for( i=0; i&lt;9; i++ ) {<br />PORTD = ~tab2&#91; i &#93;;<br />mk_delay_ms( 20 );<br />if( 1 == ktory_efekt ) break;<br />}<br />} else {<br />i=0;<br />for( i=0; i&lt;12; i++ ) {<br />PORTD = ~tab1&#91; i &#93;;<br />mk_delay_ms( 50 );<br />if( 0 == ktory_efekt ) break;<br />}<br />}<br /><br /><br /><br /><br />}<br />}<br /><br /><br /><br />void mk_delay_ms( uint16_t ms ) {<br />while( ms-- ) {<br />_delay_ms( 1 );<br /><br />if( !( PINC &amp;(1&lt;&lt;PC5)) ) {<br />ktory_efekt ^= 1;<br />break;<br /><br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20495">Mechanik1000</a> — 3 sty 2019, o 23:40</p><hr />
]]></content>
</entry>
</feed>