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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-12-21T18:29:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1965&amp;mode</id>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2012-12-21T18:29:43+01:00</updated>
<published>2012-12-21T18:29:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21807#p21807</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21807#p21807"/>
<title type="html"><![CDATA[Re: Poczatkujący, pomoc w wyzwietlaniu róznych zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21807#p21807"><![CDATA[
heh dzieki niewiem za co, ale chyba za motywacje zrobilem to tak:<br /><br />[syntax=c]while(kanal==0)<br />{<br />LED_ON1;<br />LED_OFF2;<br />if( klawisz_wcisniety (KEY1_PIN)) ++pwm1;<br />if( klawisz_wcisniety (KEY2_PIN)) --pwm1;<br />if( klawisz_wcisniety(KEY3_PIN)) kanal=1;<br />pwmz=pwm1;<br />wyswietl(pwmz);<br />}<br /><br />while(kanal==1)<br />{<br />LED_ON2;<br />LED_OFF1;<br />if( klawisz_wcisniety (KEY1_PIN)) ++pwm2;<br />if( klawisz_wcisniety (KEY2_PIN)) --pwm2;<br />if( klawisz_wcisniety(KEY3_PIN)) kanal=0;<br />pwmz=pwm2;<br />wyswietl(pwmz);<br />}[/syntax]<br /><br />no i kurka działa.<br /><br />Przypomina mi się kolejna odpowiedz na posty na temat wielopoziowowego menu. Mirek zawsze  odpowiadal, ze ilu programistów tyle sposobów, nie do konca sie z tym zgadzalem (bo w koncu jaki), ale teraz zauwazylem ze kazdy ma inna wizje na działanie i sposób działania. OT na własnym przykładzie to zrozumiałem, DZIAŁA!!!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 21 gru 2012, o 18:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2012-12-21T18:03:24+01:00</updated>
<published>2012-12-21T18:03:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21804#p21804</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21804#p21804"/>
<title type="html"><![CDATA[Re: Poczatkujący, pomoc w wyzwietlaniu róznych zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21804#p21804"><![CDATA[
No tak co do funkcji tej jeszcze nie doszedłem to rozkminiam nad tym programem. Chodzi mi dokładnie że mam dwie rozne zmienne pwm1 i pwm2. Natomiast mam jeden podprogram &quot;wyswietl&quot;. I  jak to rozkminić żeby ten jeden podprogram działał na obu zmiennych. No jest możliwość napisania identycznych tylko w jednej pwm1 a drugiej pwm2 ale chyba są inne lepsze sposoby. Mirek! ja ciągle dążę do końca ksiązki, nawet już miałem zamówić cz.2, jednak pierwszą studiuje bo miałem z 8 mies przerwy. Poza tym te książki  za bardzo wciągają. A przez całe AVR juz rok w w szkole zawaliłem. Dziekan nie zrozumiał uzasadnienia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 21 gru 2012, o 18:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-12-21T17:37:33+01:00</updated>
<published>2012-12-21T17:37:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21800#p21800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21800#p21800"/>
<title type="html"><![CDATA[Re: Poczatkujący, pomoc w wyzwietlaniu róznych zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21800#p21800"><![CDATA[
A możesz jednak pokusić się o zajrzenie dalej do książki i skorzystanie z funkcji SuperDebounce() która DRASTYCZNIE uprości ci pisanie takich programów i to jeszcze tak jak ci się żywnie spodoba.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 gru 2012, o 17:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2012-12-21T15:29:44+01:00</updated>
<published>2012-12-21T15:29:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21787#p21787</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21787#p21787"/>
<title type="html"><![CDATA[Poczatkujący, pomoc w wyzwietlaniu róznych zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1965&amp;p=21787#p21787"><![CDATA[
Więc tak. Posklejałem i coś napisalem, jednak mam problem z napisaniem jakiejs odolnej funkcji do wyswietlania roznych zmiennych. Program steruje dwoma wentylatorkami i zmienia ich wypełnienie od 0 do 255. Wszystko na tym poziome działa ok. Do zmiany wspolczynnika wypełnienia służą klawisze key1 i key2 natomiast key3 do przelaczania miedzy nimi. Moje pytanie brzmi jak napisac taką procedure wyświetlania aby pasowała do pwm1 i pwm2, a być może jeszcze do pwm3. <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;d_led3.h&quot;<br />#include &quot;pwm.h&quot;<br /><br /><br />#define KEY1_PIN (1&lt;&lt;PD7)<br />#define KEY2_PIN (1&lt;&lt;PD6)<br />#define KEY3_PIN (1&lt;&lt;PD5)<br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PB1)<br /><br />#define LED_ON1 PORTB &amp;= ~LED1<br />#define LED_OFF1 PORTB |= LED1<br />#define LED_ON2 PORTB &amp;= ~LED2<br />#define LED_OFF2 PORTB |= LED2<br /><br />volatile uint8_t pwm1, pwm2;<br />uint8_t kanal; //wybor kanalu pwm<br /><br />//deklaracje funkcji<br />uint8_t klawisz_wcisniety(uint8_t klawisz);<br />uint8_t wyswietl(uint16_t licznik);<br /><br /><br />int main(void)<br />{<br />kanal=1;<br /><br />d_led_init();<br />pwm_init();<br />pwm1=50;<br />pwm2=150;<br /><br />//zerowanie wyswietlacza<br />cy1=0;<br />cy2=0;<br />cy3=0;<br />cy4=0;<br /><br />//******ustawienie pinów klawiszy*******<br />DDRD &amp;= ~(KEY1_PIN | KEY2_PIN | KEY3_PIN);<br />PORTD |= KEY1_PIN | KEY2_PIN | KEY3_PIN;<br />//******USTAWIENIE PINÓW LED***********<br />DDRB |= LED1 | LED2;<br /><br /><br /><br />sei();// odblokowanie globalne przerwań<br /><br /><br /><br /><br />//**********************  pętla główna******************************<br />while(1)<br />{<br /><br /><br /><br />while(kanal==0)<br />{<br />LED_ON1;<br />LED_OFF2;<br />wyswietl(pwm1);<br />if( klawisz_wcisniety (KEY1_PIN)) ++pwm1;<br />if( klawisz_wcisniety (KEY2_PIN)) --pwm1;<br />if( klawisz_wcisniety(KEY3_PIN)) kanal=1;<br />}<br /><br />while(kanal==1)<br />{<br />LED_ON2;<br />LED_OFF1;<br />wyswietl(pwm2);<br />if( klawisz_wcisniety (KEY1_PIN)) ++pwm2;<br />if( klawisz_wcisniety (KEY2_PIN)) --pwm2;<br />if( klawisz_wcisniety(KEY3_PIN)) kanal=0;<br />}<br /><br /><br /><br /><br /><br />}<br />}<br /><br />//definicja funkcji klawisz_wcisniety<br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />if( ! (PIND &amp; klawisz) )<br />{<br />_delay_ms(60);<br />if( ! (PIND &amp; klawisz) ) return 1;<br />}<br />return 0;<br />}<br /><br />//definicja funkcji wyswietl<br />uint8_t wyswietl(uint16_t licznik)<br />{<br />uint8_t d1,d2,d3,d4;<br /><br />d1=pwm1/1000;<br />if(d1) cy1=d1; else cy1=NIC;<br />d2=(pwm1-(d1*1000))/100;<br />if(d2) cy2=d2; else cy2=(pwm1&gt;999)?0:NIC;<br />d3=(pwm1-(d1*1000)-(d2*100))/10;<br />if(d3) cy3=d3; else cy3=(pwm1&gt;99)?0:NIC;<br />d4=(pwm1-(d1*1000)-(d2*100)-(d3*10));<br />cy4=d4;<br />return 0;<br />}[/syntax]<br /><br />chodzi mi dokladnie jak w procedurze wuswietl zrobic aby raz bylo pwm1 a raz pwm2 i oczywiscie bez przepisywania tego raz kolejny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=499">k_mirek</a> — 21 gru 2012, o 15:29</p><hr />
]]></content>
</entry>
</feed>