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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-28T21:34:46+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5702&amp;mode</id>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-01-28T21:34:46+01:00</updated>
<published>2014-01-28T21:34:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=67126#p67126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=67126#p67126"/>
<title type="html"><![CDATA[Re: Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=67126#p67126"><![CDATA[
A może podziel program na części? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />Najpierw uruchom multipleksowanie.<br />Jak to Ci ruszy (opanujesz) to dołożysz następny kawałek kodu.<br />Łatwiej będzie Ci zapanować nad tym co nie działa i gdzie szukać błędu.<br /><br />BTW w BB masz działający kod do multipleksowania - może zacznij od tego co tam jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 28 sty 2014, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leszekpi]]></name></author>
<updated>2014-01-27T19:50:27+01:00</updated>
<published>2014-01-27T19:50:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66958#p66958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66958#p66958"/>
<title type="html"><![CDATA[Re: Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66958#p66958"><![CDATA[
W funkcji select_digit w momencie wyboru segmentu są ustawione linie poszczególnych diód, więc przez chwilę na nowym segmencie palą się tak jak w poprzednim. Dopiero następna instrukcja zmienia stan linii diód, i prawdopodobnie stąd &quot;duszek&quot;. Najlepiej przed zmianą segmentu wygaś diody, potem zmień segment i zapal ponownie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2493">leszekpi</a> — 27 sty 2014, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dawid2379]]></name></author>
<updated>2014-01-27T18:41:10+01:00</updated>
<published>2014-01-27T18:41:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66947#p66947</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66947#p66947"/>
<title type="html"><![CDATA[Re: Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66947#p66947"><![CDATA[
Brakuje nawiasu;  }  <br /><br />to może mieć duże znaczenie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1206">Dawid2379</a> — 27 sty 2014, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bicycle]]></name></author>
<updated>2014-01-27T18:06:38+01:00</updated>
<published>2014-01-27T18:06:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66941#p66941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66941#p66941"/>
<title type="html"><![CDATA[Re: Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66941#p66941"><![CDATA[
Niestety, raczej nie rozwiązuje to problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. W pracowni z układami do testowania programów na bieżąca edytowałem program na różne sposoby, a mimo to nie działało tak jak powinno.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2553">bicycle</a> — 27 sty 2014, o 18:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-01-27T15:29:45+01:00</updated>
<published>2014-01-27T15:29:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66915#p66915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66915#p66915"/>
<title type="html"><![CDATA[Re: Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66915#p66915"><![CDATA[
musisz chyba uyważać na kilka rzeczy:<br />1. z przerwań nie wywołujemy funkcji.<br />2. jeżeli zmiennych używasz w przerwaniu a potem gdzieś indziej poza tym przrwaniem to <br />   pownienieneś zastosować volatile.<br />3. a dla lepszej czytelności kodu - funkcje i przerawnia pisz POD funkcją main<br /><br />To tak na szybko na pierwszy rzut oka choć to pewnie jeszcze nie rozwiązuje Twojego problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />Oooo... sorki volatile jest <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=189">MirkoT</a> — 27 sty 2014, o 15:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bicycle]]></name></author>
<updated>2014-01-27T14:34:52+01:00</updated>
<published>2014-01-27T14:34:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66903#p66903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66903#p66903"/>
<title type="html"><![CDATA[Generator liczb pseudolosowych + multipleksowanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5702&amp;p=66903#p66903"><![CDATA[
Cześć wszystkim. Mam mały problem z pewnym programem w C (niestety, problem muszę rozwiązać w tym tygodniu) na Atmega16. Program korzysta z ADC do generowania cyfry pseudolosowej (LSB z pomiaru) i wyświetla 4 losowe cyfry na czterech multipleksowanych wyświetlaczach 7 segmentowych. Poniżej znajduje się kod:<br /><br />[syntax=c]/*<br />* Liczba losowa z pomiarów ADC<br />* Segmenty od A do D P - PC0 - PC7<br />* Switch (zewnętrzne przerwanie int0) - PD2<br />*/<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />uint16_t volatile seed; //ADC - rejestr 16 bitowy<br />uint8_t volatile random_number&#91;4&#93;;<br /><br />const uint8_t number_segments&#91;10&#93; PROGMEM = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6};<br /><br />void select_digit(void)<br />{<br />static uint8_t i, j;<br />PORTB = (1&lt;&lt;((i++)%4)); //wybór wyświetlacza 7seg<br />PORTC = pgm_read_byte(&amp;number_segments&#91;random_number&#91;++j%4&#93;&#93;); //pokaż liczbe losową<br /><br />ISR(TIMER0_COMP_vect)<br />{<br />select_digit();<br />}<br /><br />ISR(INT0_vect)<br />{<br />static uint8_t i;<br />random_number&#91;i++&#93; = seed % 10;<br />i %= 4;<br />}<br />ISR(ADC_vect)<br />{<br />seed =  (seed&lt;&lt;1); //przesuń w lewo<br />seed |= ADC &amp; 0x01; //czytaj i dodaj LSB<br />}<br />int main(void)<br />{<br />DDRC = 0xff; //conf ports<br />DDRB = 0x0f;<br />PORTD |= (1&lt;&lt;PD2); //pull-up rezystor<br /><br />TCCR0 |= (1&lt;&lt;WGM01) | (1&lt;&lt;CS01) | (1&lt;&lt;CS00); //ctc timer0<br />OCR0 = 125;<br />TIMSK |= (1&lt;&lt;OCIE0);<br /><br />MCUCR |= (1&lt;&lt;ISC01); //przerwanie zewnętrzne, zbocze opadające<br />GICR |= (1&lt;&lt;INT0);<br /><br />ADMUX  = (1&lt;&lt;REFS0); //napięcie ref <br />ADCSRA  |=  (1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0) | (1&lt;&lt;ADPS2); //preskaler<br />ADCSRA  |=  (1&lt;&lt;ADEN) | (1&lt;&lt;ADATE) | (1&lt;&lt;ADIE) | (1&lt;&lt;ADSC); //adc konfiguracja<br /><br />sei();<br /><br />while(1);<br />return 0;<br />}[/syntax]<br /><br />Program docelowo pisany do uruchomienia na zestawie ZL10AVR (którego ja niestety nie posiadam, więc nie mogę na bieżąco testować), jednak program nie działa tak jak powinien. Naciskając przycisk praktycznie wszystkie diody na segmentach się świecą, niektóre słabiej, niektóre mocniej (zdarza się czasem że jakaś całkowicie zgaśnie) i wyświetlanych cyfr po prostu nie można rozpoznać. Mógłby ktoś pomóc?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2553">bicycle</a> — 27 sty 2014, o 14:34</p><hr />
]]></content>
</entry>
</feed>