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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-01-08T20:30:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2071&amp;mode</id>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-01-08T20:30:40+01:00</updated>
<published>2013-01-08T20:30:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24038#p24038</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24038#p24038"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24038#p24038"><![CDATA[
No no, koncepcja ciekawa, zaiste <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dzięki Ci. Jutro będę miał trochę czasu to się pobawię, bo dzisiaj niestety wieczór z autocadem :\<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 8 sty 2013, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-08T20:15:31+01:00</updated>
<published>2013-01-08T20:15:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24034#p24034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24034#p24034"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24034#p24034"><![CDATA[
To kod z książki TMF<br />[syntax=c]<br />#include &lt;avr\io.h&gt;<br />#include &lt;avr\pgmspace.h&gt;<br />#include &lt;util\delay.h&gt;<br />#include &lt;avr\interrupt.h&gt;<br /><br />#define LEDA<br /><br />#define GLUE(a, b)     a##b<br /><br />#define LEDPORT1(s)GLUE(PORT,s)<br />#define LEDPORT LEDPORT1(LED)<br />#define LEDDDR1(s)GLUE(DDR,s)<br />#define LEDDDRLEDDDR1(LED)<br /><br />//Cyfry 0,1,2,3,4,5,6,7,8,9 i symbol -<br />static uint8_t PROGMEM DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xBF};<br />const uint8_t DP=0x80;<br /><br />static inline void ShowOnLED(uint8_t val)<br />{<br />uint8_t tmp=0xFF;<br />if((val &amp; 0x7F)&lt;11) tmp=pgm_read_byte(&amp;DIGITS[val &amp; 0x7F]);<br />if((val &amp; DP)==1) tmp&amp;=~(DP);<br />LEDPORT=tmp;<br />}<br /><br />#define LEDDISPNO4<br /><br />volatile uint8_t LEDDIGITS[LEDDISPNO];<br /><br />ISR(TIMER0_OVF_vect)<br />{<br />static uint8_t LEDNO;<br /><br />PORTB|=0x0F;//Wyłącz wszystkie wyświetlacze<br />LEDNO=(LEDNO+1)%LEDDISPNO;<br />ShowOnLED(LEDDIGITS[LEDNO]);<br />PORTB=(PORTB &amp; 0xF0) | (~(1&lt;&lt;LEDNO) &amp; 0x0F);//Wybierz kolejny wyświetlacz<br />}<br /><br />/*ISR(TIMER0_COMPA_vect)<br />{<br />PORTB|=0x0F;//Wyłącz wszystkie wyświetlacze<br />}*/<br /><br />ISR(TIMER0_COMPA_vect, ISR_NAKED)<br />{<br />PORTB|=0x01;//Wyłącz wszystkie wyświetlacze<br />PORTB|=0x02;<br />PORTB|=0x04;<br />PORTB|=0x08;<br />asm volatile(&quot;RETI\n\t&quot;::);<br />}<br /><br />void Timer0Init()<br />{<br />TCCR0B=_BV(CS01);//Preskaler CLKIO/8<br />TIMSK|=_BV(TOIE0);//Odblokuj przerwanie nadmiaru timera 0<br />}<br /><br />void Timer0InitWithDimmer()<br />{<br />TIMSK|=_BV(OCIE0A);//Włącz przerwanie Compare Match A<br />OCR0A=255;<br />Timer0Init();<br />}<br /><br />int main()<br />{<br />LEDDDR=0xFF;//Wszystkie piny portu są wyjściem<br /><br />DDRB|=0x0F;//Piny PB0-PB3 jako wyjścia<br />Timer0InitWithDimmer();<br />//Timer0Init();<br />sei();<br /><br />LEDDIGITS[0]=1;<br />LEDDIGITS[1]=2;<br />LEDDIGITS[2]=3;<br />LEDDIGITS[3]=4;<br /><br />while(1)<br />{<br />OCR0A=200;<br />_delay_ms(1000);<br />OCR0A=100;<br />_delay_ms(1000);<br />};<br />}<br />[/syntax]<br />Regulacja następuje dzięki skracaniu czasu świecenia wyświetlaczy, co prawda tu jest zrobione to na _delay, ale łatwo to przerobić na nieblokujące timery programowe Mirka.<p>Statystyki: Napisane przez Gość — 8 sty 2013, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-01-08T19:32:58+01:00</updated>
<published>2013-01-08T19:32:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24021#p24021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24021#p24021"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=24021#p24021"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Kurczę teraz nie pamiętam dokładnie jak się to robiło, ale chodziło o fakt regulacji stanu wysokiego czy niskiego na sterowanie wyświetlaczy..... Wrócę do domu to zajrzę do książki.<br /></div><br /><br />To jak, mogę liczyć na podpowiedź?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 8 sty 2013, o 19:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-07T11:54:58+01:00</updated>
<published>2013-01-07T11:54:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23752#p23752</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23752#p23752"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23752#p23752"><![CDATA[
Kurczę teraz nie pamiętam dokładnie jak się to robiło, ale chodziło o fakt regulacji stanu wysokiego czy niskiego na sterowanie wyświetlaczy..... Wrócę do domu to zajrzę do książki.<p>Statystyki: Napisane przez Gość — 7 sty 2013, o 11:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-01-07T11:19:05+01:00</updated>
<published>2013-01-07T11:19:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23749#p23749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23749#p23749"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23749#p23749"><![CDATA[
Nie wiem czy dobrze Ciebie rozumiem. Aby wykonać regulację pwm od 0 do 100%, czyli właśnie czas włączenia lamp, to musiałem zwiększyć częstotliwość odświeżania ponieważ, przy krótkich czasach włączenia danej lampy jest widoczne migotanie. Gdy dam wypełnienie 100% przy tych 5kHz to mam duszki, ale właśnie dla tych 100% nie jest potrzebna taka duża częstotliwość odświeżania, aby nic nie migotało. Więc dla dużych wypełnień obniżam tą częstotliwość by pozbyć się duszków. Wiem, że to obejście problemu, a nie jego rozwiązanie. Dlatego napisałem ten temat, bo może ktoś mnie nakieruje na bardziej eleganckie rozwiązanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 7 sty 2013, o 11:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-07T09:54:22+01:00</updated>
<published>2013-01-07T09:54:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23744#p23744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23744#p23744"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23744#p23744"><![CDATA[
Dlaczego nie zrobisz regulacji czasu włączenia samych segmentów (wyświetlaczy). Zamiast regulować samym odświeżaniem co jest trochę kocim rozwiązaniem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 7 sty 2013, o 09:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-06T20:04:45+01:00</updated>
<published>2013-01-06T20:04:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23684#p23684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23684#p23684"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23684#p23684"><![CDATA[
No jeśli jak mówisz to ma być tylko dodatkowy efekt a program nie będzie już rozbudowywany to można iść w tym kierunku - jak najbardziej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sty 2013, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-01-06T20:02:56+01:00</updated>
<published>2013-01-06T20:02:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23683#p23683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23683#p23683"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23683#p23683"><![CDATA[
Regulacja napięciowa już odpada, ponieważ układ jest złożony tak, że fizycznie nie umożliwia tego. Początkowo nie miało być regulacji jasności, ale robię zegar dla kogoś i w pewnym momencie padło: &quot; a ja bym chciał mieć regulację jasności&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> no i trzeba improwizować. Jednak osiągnąłem efekt w stylu &quot;ujdzie&quot;. Zrobiłem to w ten sposób, że w locie przetaktowuję częstotliwość przerwania. Dla niskich wypełnień jest najgorzej bo przerwanie śmiga na 6,5kHz,ale jasność jest mała to i duszków nie widać. <br />A dla dużych wypełnień obniżam częstotliwość odświeżania i dla 100% mam swoje 500Hz i jest gitara. A procek wyrabia się ze wszystkim, DS18b20,RTC,IR. Teraz niech pochodzi i zobaczymy czy coś się urodzi ;]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 6 sty 2013, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-01-06T19:49:55+01:00</updated>
<published>2013-01-06T19:49:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23677#p23677</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23677#p23677"/>
<title type="html"><![CDATA[Re: Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23677#p23677"><![CDATA[
No i dobrze chyba ci się wydaje - ja bym spróbował zrobić ściemnianie lub rozjaśnianie regulacją wysokiego napięcia na lampy za pomocą PWM'a zamiast iść w troszkę dziwnym jak dla mnie kierunku czyli zwiększaniu częstotliwości odświeżania, bo nie dość że zaczną się duszki to i obciążenie procka wzrasta drastycznie i będzie coraz gorzej z czasem na inne operacje <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sty 2013, o 19:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2013-01-06T16:52:06+01:00</updated>
<published>2013-01-06T16:52:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23654#p23654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23654#p23654"/>
<title type="html"><![CDATA[Multipleksowanie - efekt duchów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2071&amp;p=23654#p23654"><![CDATA[
Witam, do tej pory gdy wykonywałem multipleksowanie wyświetlaczy to dobierałem częstotliwość wykonywania się przerwania tak aby nie szaleć z tymi hercami, ale również aby mi nic nie migotało. Dla 6 wyświetlaczy ustawiałem 500Hz (przy tym miałem ładną podstawę czasu 2ms dla timerów programowych). Teraz jednak potrzebuję wykonać regulację jasności wyświetlaczy, więc tą częstotliwość musiałem mocno zwiększyć.<br />Moimi wyświetlaczami są lampy Nixie, no i po dorzuceniu regulacji jasności i zwiększeniu odświeżania do 5kHz pojawił mi się efekt duchów na lampach. Wydaje mi się, że po części może być to spowodowane czasem jaki potrzebuje lampa na &quot;wygaszenie gazu&quot;.<br /><br />Poniżej kawałek kodu odpowiedzialny za przemiatanie lampami, może ktoś da mi wskazówki jak to rozwiązać. Częstotliwość 5kHz jest raczej graniczna, na mniejszych przy niskim wypełnieniu lampy migoczą.<br /><br />[syntax=c]void tube_init(void)<br />{<br />DDR_SN_A |= SN_A;DDR_SN_B |= SN_B;DDR_SN_C |= SN_C;DDR_SN_D |= SN_D;<br /><br />DDR_DOT1 |= DOT1;DDR_DOT2 |= DOT2;DDR_MINUS |= MINUS;<br /><br />DDR_A1 |= A1; DDR_A2 |= A2; DDR_A3 |= A3; DDR_A4 |= A4;DDR_A5 |= A5;DDR_A6 |= A6;<br /><br />// ustawienie TIMER0<br />TCCR2 |= _BV(WGM21);//CTC<br /><br />TCCR2 |=  _BV(CS21) | _BV(CS20);//preskaler 32<br />OCR2 =50;// 200us<br /><br />//TCCR2 |= _BV(CS22) | _BV(CS21) | _BV(CS20);//preskaler 1024<br />//OCR2 =15;// F=500Hz,2ms<br /><br />TIMSK |= _BV(OCIE2);//zezwolenie na przerwanie Compare Match<br /><br />}<br /><br />void tube_digit(uint8_t zm)<br />{<br />PORT_SN_A &amp;= ~SN_A;PORT_SN_B &amp;= ~SN_B;PORT_SN_C &amp;= ~SN_C;PORT_SN_D &amp;= ~SN_D;<br /><br />switch(zm)<br />{<br />case 0: PORT_SN_D &amp;= ~SN_D; break;<br />case 1: PORT_SN_A |= SN_A; break;<br />case 2: PORT_SN_B |= SN_B; break;<br />case 3: PORT_SN_A |= SN_A; PORT_SN_B |= SN_B; break;<br />case 4: PORT_SN_C |= SN_C; break;<br />case 5: PORT_SN_A |= SN_A; PORT_SN_C |= SN_C; break;<br />case 6: PORT_SN_B |= SN_B; PORT_SN_C |= SN_C; break;<br />case 7: PORT_SN_A |= SN_A; PORT_SN_B |= SN_B; PORT_SN_C |= SN_C; break;<br />case 8: PORT_SN_D |= SN_D; break;<br />case 9: PORT_SN_A |= SN_A; PORT_SN_D |= SN_D; break;<br /><br />default: PORT_SN_A |= SN_A;PORT_SN_B |= SN_B;PORT_SN_C |= SN_C;PORT_SN_D |= SN_D; break;<br />}<br />}<br /><br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER2_COMP_vect)<br />{<br />static uint8_t licznik=1;<br />static uint8_t pwm_count=0;<br /><br /><br />PORT_A1 &amp;= ~A1;PORT_A2 &amp;= ~A2; PORT_A3 &amp;= ~A3; PORT_A4 &amp;= ~A4;PORT_A5 &amp;= ~A5;PORT_A6 &amp;= ~A6; // wygaszenie wszystkich wyświetlaczy<br /><br />DOT1_OFF;DOT2_OFF;RHDP_OFF;MINUS_OFF;<br /><br />//wygaszenie wszystkich cyfr<br />PORT_SN_A |= SN_A;PORT_SN_B |= SN_B;PORT_SN_C |= SN_C;PORT_SN_D |= SN_D;<br /><br /><br /><br /><br /><br />if(pwm &gt; pwm_count) {<br /><br /><br /><br />if(active_disp){<br />if(licznik==1)    { if(cy1!=NIC){PORT_A1 |= A1; tube_digit(cy1); } }<br />else if(licznik==2)  { if(cy2!=NIC){PORT_A2 |= A2; tube_digit(cy2); } }<br />else if(licznik==3)  { if(cy3!=NIC){PORT_A3 |= A3; tube_digit(cy3); } }<br />else if(licznik==4)  { if(cy4!=NIC){PORT_A4 |= A4; tube_digit(cy4); } }<br />else if(licznik==5)  { if(cy5!=NIC){PORT_A5 |= A5; tube_digit(cy5); } }<br />else if(licznik==6)  { if(cy6!=NIC){PORT_A6 |= A6; tube_digit(cy6); } }<br /><br /><br />if(licznik&gt;=6) licznik=1;else licznik++;<br />}<br /><br /><br />}<br /><br />if(pwm_count &gt;= 100) pwm_count=0;<br />else pwm_count++;<br /><br /><br /><br />}[/syntax]<br /><br />a tu schemat podłączenia lamp<br /><a href="http://forum.atnel.pl/_obrazki/o/393_db6ccc301f1091925e8b9de5bf19237f.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/393_db6ccc301f1091925e8b9de5bf19237f.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 6 sty 2013, o 16:52</p><hr />
]]></content>
</entry>
</feed>