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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-05-27T17:43:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1109&amp;mode</id>
<entry>
<author><name><![CDATA[Mateusz97]]></name></author>
<updated>2012-05-27T17:43:02+01:00</updated>
<published>2012-05-27T17:43:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7134#p7134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7134#p7134"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7134#p7134"><![CDATA[
Jaki zakres liczb generuje ten kod?<br />Jak zoptymalizować kod, aby było niewiele delayów?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=317">Mateusz97</a> — 27 maja 2012, o 17:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-27T16:45:30+01:00</updated>
<published>2012-05-27T16:45:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7128#p7128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7128#p7128"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7128#p7128"><![CDATA[
Oczywiście że można użyć szumów na ADC (występują tylko na niższych bitach) <br />bo ww przypadku AVR, które mają skończona ilość stanów na portach , nie można mówić <br />o losowości , raczej tylko o pseudo losowości, ale na tym poziomie proponuję się zainteresować <br />właśnie funkcją random, po poznaniu której napisanie prostego algorytmu do pseudo losowego <br />generowania liczb nie będzie sprawiać problemu<br />np:<br /><br />[syntax=c]<br />int main(void) <br />{  <br />leds_init(); // jakaś tam procedurka do diodek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />        sei(); //zezwolenie na przerwania<br />        gen_start = read_eeprom(&amp;s_start);  <br />        srand(gen_start); <br />        c_rand=(rand()%5)+1; <br />        gen_start=rand()%254; <br />        write_eeprom(&amp;s_start, gen_start); <br />        while(1);<br />}<br />[/syntax]<br /><br />najprościej , ale może nie najoptymalniej <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=58">SunRiver</a> — 27 maja 2012, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzyychu]]></name></author>
<updated>2012-05-27T15:51:54+01:00</updated>
<published>2012-05-27T15:51:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7122#p7122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7122#p7122"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7122#p7122"><![CDATA[
Według mnie funkcja random zjada strasznie dużo zasobów. Nie lepiej użyć do tego np. ostatniego bitu ADC?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=66">krzyychu</a> — 27 maja 2012, o 15:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mateusz97]]></name></author>
<updated>2012-05-27T13:47:36+01:00</updated>
<published>2012-05-27T13:47:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7118#p7118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7118#p7118"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7118#p7118"><![CDATA[
Może pan podać jakiś przykład np. losowania liczb od 1-9? Coś mało to zrozumiałem. I jak uprościć program, aby nie było w nim delayów?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=317">Mateusz97</a> — 27 maja 2012, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-27T13:26:02+01:00</updated>
<published>2012-05-27T13:26:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7117#p7117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7117#p7117"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7117#p7117"><![CDATA[
Jeśli liczbe którą potrzebujesz wylosować potrzebujesz co jakiś nieokrągły <br />czas - np po naciśnięciu przycisku, czy nie wiem... co tam sobie kombinujesz<br />to najprościej by było puścić w szybkiej pętli inkrementacje, tak żeby sobie latało <br />w zakresie 0-255 w kółko, to zawsze coś innego wypadnie w momencie naciśnięcia tego <br />guzika... <br /><br />Przyjrzyj się też z bliska standardowej funkcji <strong>random()</strong> w avrgcc (nie <br />rand tylko random <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" />), jej nagłówek znajdziesz  w stdlib.h. <br /><br />kawałek źródła biblioteki: <br /><br /><strong><em>* From &quot;Random number generators: good ones are hard to find&quot;, <br />* Park and Miller, Communications of the ACM, vol. 31, no. 10, <br />* October 1988, p. 1195. <br /></em></strong><br /><br />W tym zastosowaniu może też sprawdzi się taki prosty generator 16 bitowych liczb <br />pseudolosowych: <br /><br /><strong><span style="color: #FF0040">Random(n):= [(random(n-1)+1)*75] mod 65536</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 27 maja 2012, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mateusz97]]></name></author>
<updated>2012-05-27T13:19:51+01:00</updated>
<published>2012-05-27T13:19:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7116#p7116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7116#p7116"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7116#p7116"><![CDATA[
Jakieś propozycje? A wracając do tematu jak zrobić losowanie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=317">Mateusz97</a> — 27 maja 2012, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-27T13:17:43+01:00</updated>
<published>2012-05-27T13:17:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7115#p7115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7115#p7115"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7115#p7115"><![CDATA[
No zaiste ten kod co teraz wkleiłeś to zmora delayowa , aż mnie wzdryga że nie powiem iż niema szału<br />to musi ważyć .... i konsumować cenne zasoby procka ..... <br />spróbuj się pozbyć tych deley-ów  to raz <br /><br />2 ... hmmm... pętle pętle pętle  ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 27 maja 2012, o 13:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mateusz97]]></name></author>
<updated>2012-05-27T12:51:32+01:00</updated>
<published>2012-05-27T12:51:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7114#p7114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7114#p7114"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7114#p7114"><![CDATA[
1 przycisk zapala i zgasza diody po kolei, a drugi ma losować diodę, zapalać ją i zgasić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=317">Mateusz97</a> — 27 maja 2012, o 12:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-05-27T12:49:02+01:00</updated>
<published>2012-05-27T12:49:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7113#p7113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7113#p7113"/>
<title type="html"><![CDATA[Re: Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7113#p7113"><![CDATA[
może jakieś szczegóły , bo nie bardzo to widzę <br /><br />w tym wypadku wystarczy puścić pętle for gdzie i będzie 1 do 3 <br />i w warunku sprawdzać stan przycisku<br /><br />no ale moim zdaniem trochę bez sensowne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 27 maja 2012, o 12:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mateusz97]]></name></author>
<updated>2012-05-27T12:50:29+01:00</updated>
<published>2012-05-27T12:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7112#p7112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7112#p7112"/>
<title type="html"><![CDATA[Losowanie liczb z danego przedziału]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1109&amp;p=7112#p7112"><![CDATA[
Witam.<br />Robię właśnie program mający za zadanie zapalać losową diodę LED po przyciśnięciu przycisku.<br />Teraz pojawia się problem. Chciałbym aby liczba była z zakresu 1-3.<br />Macie jakieś pomysły? Program piszę dla Atmegi8 i bez losowania zajmuje 62.5% pamięci Flash.<br />Oto on:<br />[syntax=c]//potrzebne pliki nagłówkowe<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />//definicje diod LED<br />#define LED1_PIN (1&lt;&lt;PC0)<br />#define LED1_TOG PORTC^=LED1_PIN<br />#define LED2_PIN (1&lt;&lt;PC1)<br />#define LED2_TOG PORTC^=LED2_PIN<br />#define LED3_PIN (1&lt;&lt;PC2)<br />#define LED3_TOG PORTC^=LED3_PIN<br />//definicje klawiszy<br />#define KEY1_PIN (1&lt;&lt;PC3)<br />#define KEY2_PIN (1&lt;&lt;PC4)<br />#define KEY1_DOWN !(PINC&amp;KEY1_PIN)<br />#define KEY2_DOWN !(PINC&amp;KEY2_PIN)<br />uint8_t klawisz_wcisniety1(void);<br />uint8_t klawisz_wcisniety2(void);<br />//pętla main<br />int main(void)<br />{<br />DDRC|=LED1_PIN|LED2_PIN|LED3_PIN;<br />PORTC|=LED1_PIN|LED2_PIN|LED3_PIN;<br />DDRC &amp;=~(KEY1_PIN|KEY2_PIN);<br />PORTC|=KEY1_PIN|KEY2_PIN;<br />while(1)<br />{<br />if ( klawisz_wcisniety1() )<br />{<br />LED1_TOG;<br />_delay_ms(4000);<br />LED2_TOG;<br />_delay_ms(4000);<br />LED3_TOG;<br />_delay_ms(4000);<br />LED3_TOG;<br />_delay_ms(4000);<br />LED2_TOG;<br />_delay_ms(4000);<br />LED1_TOG;<br />_delay_ms(4000);<br />}<br />if ( klawisz_wcisniety2() )<br />{<br />//tu ma być losowanie diody<br />}<br />}<br /><br />}<br />//******************************************************** koniec main()uint8_t klawisz_wcisniety(void)<br />uint8_t klawisz_wcisniety1(void)<br />{<br />if( KEY1_DOWN )// klawisz wciśnięty ?<br />{<br />_delay_ms(80);// czas drgań styków<br />if( KEY1_DOWN ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br />uint8_t klawisz_wcisniety2(void)<br />{<br />if( KEY2_DOWN )// klawisz wciśnięty ?<br />{<br />_delay_ms(80);// czas drgań styków<br />if( KEY2_DOWN ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=317">Mateusz97</a> — 27 maja 2012, o 12:39</p><hr />
]]></content>
</entry>
</feed>