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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-19T13:11:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=8151&amp;mode</id>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T13:11:39+01:00</updated>
<published>2014-08-19T13:11:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92018#p92018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92018#p92018"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92018#p92018"><![CDATA[
Dobra <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jak tylko minie okres ekscytacji to kod poprawię    <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 13:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T13:05:50+01:00</updated>
<published>2014-08-19T13:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92015#p92015</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92015#p92015"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92015#p92015"><![CDATA[
JEJ!!! Działa! Nawet nie wiecie jaki jestem szczęśliwy! Dziękuję Wam bardzo, bardzo, bardzo! <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 13:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T12:44:09+01:00</updated>
<published>2014-08-19T12:44:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92011#p92011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92011#p92011"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92011#p92011"><![CDATA[
Nie trybię... Jak mam to zrobić? Wskaźników jeszcze nie przerabiałem...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />sekundę... Czyli np.<br /><br />[syntax=c]if(przerwanie &amp; (1&lt;&lt;1)) scr2_display(cyfra2);[/syntax]<br /><br />tak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 12:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T12:19:49+01:00</updated>
<published>2014-08-19T12:19:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92008#p92008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92008#p92008"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92008#p92008"><![CDATA[
OK. Mogę zrobić tak, że stworzę zmienną uint16_t czas i co 1000 przerwań będę ją inkrementował?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 12:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T12:01:34+01:00</updated>
<published>2014-08-19T12:01:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92003#p92003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92003#p92003"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92003#p92003"><![CDATA[
Częstotliwośc specjalnie pod projekt ustawiłem na 128kHz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Czy do przerwań do multipleksowania nie będę musiał użyć drugiego timera?<br /><br />Cyfra1 to sekundy<br />cyfra2 to sekundy x 10<br />cyfra3 to sekundy x 100<br />cyfra4 to sekundy x 1000<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 12:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2014-08-19T11:57:54+01:00</updated>
<published>2014-08-19T11:57:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92002#p92002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92002#p92002"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=92002#p92002"><![CDATA[
Witam ponownie.<br /><br /><div class="quotetitle">Kerniak napisał(a):</div><div class="quotecontent"><br />......Zaraz! Wiem! Chodzi o to, że włączany jest następny wyświetlacz, a poprzedni jeszcze nie wygasa i wtedy nakładają się na siebie liczby! O to chodzi?<br /></div><br /><br />Jeśli dobrze Cię zrozumiałem, to tak - o to chodzi z tym, że, żeby już wszystko było dla Ciebie na 100% jasne - ten poprzedni nie wygasa, bo Ty go nie wyłączasz. Przyjrzyj się co robisz w jednej z funkcji od wyświetlania: scr1_display(cyfra4).... scr4_display(cyfra1). <strong>Najpierw załączasz kolejną anodę</strong>, instrukcją:[syntax=c]SCR_PRT = ~SCR1;[/syntax], a dopiero następną:[syntax=c]SEG_PRT = ~(dig_select&#91;cyfraa&#93;);[/syntax]. Tak można robić jedynie wtedy, gdy czas jaki upłynie do momentu załączenia kolejnej anody jest <strong>wielokrotnie</strong> większy od czasu w jakim występuje to zjawisko, co powyżej. Teraz kolejna sprawa z tym związana: nie ma sensu robić multipleksowania w pętli głównej programu, bo wtedy muszą być delay-e między wywołaniem tych Twoich funkcji. Pomijam już fakt, że przecież w rzeczywistej pętli głównej będziesz miał jeszcze inne instrukcje - więc jak zapewnisz jednakowy czas załączania poszczególnych anod ? Spróbuj może jeszcze raz przeczytać ten rozdział z Bluebooka, Mirek naprawdę fajnie tam opisał sposób wyświetlania na wyświetlaczu multipleksowanym. Teraz jeszcze jedno moje pytanie: czy wyłączyłeś do testów przerwanie ? Zastanawiam się, dlaczego musiałeś mieć tak długie te delay-e.<br />Co do samego przerwania, to po pierwsze:<br />[syntax=c]OCR0A  = F_CPU/1024;    //  Rejestr OCR0A to 125[/syntax] WTF????? Jaką masz częstotliwość zegara procka? Wykonaj <br />to obliczenie na kalkulatorze i zwróć uwagę na to, jak liczba Ci wyjdzie. <br />Po drugie: Jak często ma się inkrementować ten Twój licznik, który chcesz wyświetlać ?<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 19 sie 2014, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T10:29:52+01:00</updated>
<published>2014-08-19T10:29:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91987#p91987</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91987#p91987"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91987#p91987"><![CDATA[
Procek nie daje rady ich tak szybko załączać?<br />Teraz strzelam, bo nie jestem w stanie znaleźć innego powodu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Zaraz! Wiem! Chodzi o to, że włączany jest następny wyświetlacz, a poprzedni jeszcze nie wygasa i wtedy nakładają się na siebie liczby! O to chodzi?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 19 sie 2014, o 10:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2014-08-19T10:24:26+01:00</updated>
<published>2014-08-19T10:24:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91985#p91985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91985#p91985"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91985#p91985"><![CDATA[
Witam,<br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">QuadMan napisał(a):</div><div class="quotecontent">...<br />Ech... a<strong> mokrowski</strong> podarował Ci taki fajny kawałek kodu...<br /></div><br />A<strong>le mokrowski podarował go do analizy a nie do ,,przepisz i nie wnikaj&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> </strong>Widzę że kod kolegi nie tyle ma błędy składni co błędy logiki programu. Myślę że mając kod z BlueBook'a i mój kawałek inaczej niż w BlueBook'u napisany, można bardzo łatwo wyciągnąć wnioski o zasadach i celu działania przerwania, funkcji czy pętli w main... Mi tego baardzo brakowało jak się uczyłem języków programowania <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Różnorodnych rozwiązań tego samego problemu nad którym pracuję. A jak 1 czy 2 przeanalizujesz cudzy kod, to jakoś tak... sam zaczynasz go pisać .. czytelnie i logicznie bo nie chcesz by nad Twoim leciała łacina jaką Ty stosowałeś <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />No ale może lepiej będzie na piechotę? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /></div><br /><br />To właśnie miałem na myśli, nie wyobrażałem sobie, że kolega <strong>Kerniak</strong> go po prostu przepisze. Wiesz <strong>mokrowski</strong>, może po prostu to jeszcze nie ten czas... Zobaczymy, czy kolega <strong>Kerniak</strong> się odezwie w wątku i zrobi ( i przemyśli) to, o co Go poprosiłem.<br /><br />Pozdrawiam serdecznie, QuadMan.<br />P.S. A... i żeby było jasne, Jeśli chodzi o C jestem całkowicie początkującym.<br /><br />Dopisane: O widzę, że kolega <strong>Kerniak</strong> się odezwał. <strong>Kerniak</strong>, czy zastanowiłeś się, dlaczego wersja z delay-ami działa poprawnie??? Pomijam tu migotanie. Teraz nie mogę za wiele pisać, odezwę się później.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 19 sie 2014, o 10:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-19T10:28:28+01:00</updated>
<published>2014-08-19T10:22:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91984#p91984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91984#p91984"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91984#p91984"><![CDATA[
No to sytuacja prezentuje się tak:<br /><br />Drugi kod podany przez kolegę QuadMan-a działa, ale dopiero przy dużych delayach, gdy już widać migotanie. Do 7ms wyświetlacz działa tak (jasnoczerwone pola są ledwo zapalone, a białe wygaszone - rysunek bardzo fachowy <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />, ale nie mam kamery).<br /><br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4503/c8fd07d5ce7bdc49e125a7920b4d0169.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4503/c8fd07d5ce7bdc49e125a7920b4d0169.jpg" alt="Obrazek" /></a><br /><br />Takie pytanie- kod przerwania jest zły? Za długi? Bo ja tutaj nowy jestem i to w sumie mój pierwszy kod z wykorzystaniem timerów i przerwań i tematu trochę nie ogarniam (mimo poradników Pana Mirka <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=4503">Kerniak</a> — 19 sie 2014, o 10:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2014-08-19T01:29:21+01:00</updated>
<published>2014-08-19T01:29:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91955#p91955</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91955#p91955"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91955#p91955"><![CDATA[
Witam,<br /><br />Ech... a<strong> mokrowski</strong> podarował Ci taki fajny kawałek kodu... No, ale rozumiem, chcesz sam - ja też jestem uparty. Z tego, co zrozumiałem, to ma działać tak, że w przerwaniu ma się inkrementować licznik, który wyświetlasz w pętli głównej, w której jest samo multipleksowanie. Trochę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> to bez sensu, no ale jeśli chcesz koniecznie, to w sumie też można, nikt przecież nie zabroni. Spróbuj uruchomić swój program fragmentami. Zrób może tak:<br />1. Wyłącz w diabły przerwania.<br />2. Do zmiennych cyfra1... cyfra4 podstaw stałe. Ja dałem po kolei 1...4. Jeśli ten fragment zacznie działać, umożliwi Ci to zidentyfikowanie, który wyświetlacz jest który. A... i jeszcze wyłącz to co w linii 35 na listingu poniżej - uruchamiasz wszystkie wyświetlacze na raz, nie wiem po co. Oto moja propozycja:[syntax=c]/*<br />     * Biblioteka do obsługi wywietlacza 7 segmentów 4 części - oddzielne vcc, D1-D4 to też katody<br />     *<br />     *  Autor: Michał Kern<br />     *  Utworzono: 15-08-2014<br />     *<br />     */<br /><br /><br />    #include&lt;avr/io.h&gt;<br />    #include&lt;util/delay.h&gt;<br />    #include&lt;avr/interrupt.h&gt;<br />    #include &quot;defines.h&quot;<br />    #include &quot;inits/inits.h&quot;<br /><br />    volatile uint8_t cyfra1 = 0;<br />    volatile uint8_t cyfra2 = 0;<br />    volatile uint8_t cyfra3 = 0;<br />    volatile uint8_t cyfra4 = 0;<br /><br />    int main(void){<br /><br />            led_init();<br />            timer_init();<br />            timer_set();<br /><br /><br />            cyfra1=1;<br />            cyfra2=2;<br />            cyfra3=3;<br />            cyfra4=4;<br /><br /> //           sei();<br /><br /> //           SCR_PRT = ~(SCR1 | SCR2 | SCR3 | SCR4);<br /><br />            while(1){<br /><br />                  scr4_display(cyfra1);<br />                  scr3_display(cyfra3);<br />                  scr2_display(cyfra2);<br />                  scr1_display(cyfra4);<br />            }<br /><br />    }[/syntax]<br /><br />I teraz, jeśli wszystko zrobisz poprawnie, na wyświetlaczu powinieneś zobaczyć &quot;bełkot&quot;. Wracamy do eksperymentów. Teraz zrób tak: <br />3. Pomiędzy funkcje scr.... wstaw delay'e - tak gdzieś około 1-do 3 milisekund. Poniżej fragment kodu po modyfikacji:[syntax=c]/*<br />     * Biblioteka do obsługi wywietlacza 7 segmentów 4 części - oddzielne vcc, D1-D4 to też katody<br />     *<br />     *  Autor: Michał Kern<br />     *  Utworzono: 15-08-2014<br />     *<br />     */<br /><br /><br />    #include&lt;avr/io.h&gt;<br />    #include&lt;util/delay.h&gt;<br />    #include&lt;avr/interrupt.h&gt;<br />    #include &quot;defines.h&quot;<br />    #include &quot;inits/inits.h&quot;<br /><br />    volatile uint8_t cyfra1 = 0;<br />    volatile uint8_t cyfra2 = 0;<br />    volatile uint8_t cyfra3 = 0;<br />    volatile uint8_t cyfra4 = 0;<br /><br />    int main(void){<br /><br />            led_init();<br />            timer_init();<br />            timer_set();<br /><br /><br />            cyfra1=1;<br />            cyfra2=2;<br />            cyfra3=3;<br />            cyfra4=4;<br /><br /> //           sei();<br /><br /> //           SCR_PRT = ~(SCR1 | SCR2 | SCR3 | SCR4);<br /><br />            while(1){<br /><br />                  scr4_display(cyfra1);<br />                  _delay_ms(1);<br />                  scr3_display(cyfra3);<br />                  _delay_ms(1);<br />                  scr2_display(cyfra2);<br />                  _delay_ms(1);<br />                  scr1_display(cyfra4);<br />                  _delay_ms(1);<br />            }<br /><br />    }[/syntax]<br /><br />Teraz powinieneś zobaczyć na wyświetlaczu &quot;1234&quot;, czy w jakiej tam masz kolejności te wyświetlacze. Pytanie: dlaczego teraz jest ok???? Podpowiedź: <strong>nie chodzi tu o  żadne czasy przełączania tranzystorów, wyświetlaczy itp.</strong><br />To tyle na razie ode mnie. Jeśli dalej chcesz drążyć temat, jutro możemy wrócić do przerwania i tego licznika w przerwaniu.<br />Pozdrawiam serdecznie, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 19 sie 2014, o 01:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-18T12:33:16+01:00</updated>
<published>2014-08-18T12:33:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91893#p91893</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91893#p91893"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91893#p91893"><![CDATA[
Kod zmieniłem, może jest czytelniejszy - <br /><br /><br />[syntax=c]/*<br /> * Biblioteka do obsługi wywietlacza 7 segmentów 4 części - oddzielne vcc, D1-D4 to też katody<br /> *<br /> *  Autor: Michał Kern<br /> *  Utworzono: 15-08-2014<br /> *<br /> */<br /><br /><br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include &quot;defines.h&quot;<br />#include &quot;inits/inits.h&quot;<br /><br />volatile uint8_t cyfra1 = 0;<br />volatile uint8_t cyfra2 = 0;<br />volatile uint8_t cyfra3 = 0;<br />volatile uint8_t cyfra4 = 0;<br /><br />int main(void){<br /><br />led_init();<br />timer_init();<br />timer_set();<br /><br />sei();<br /><br />SCR_PRT = ~(SCR1 | SCR2 | SCR3 | SCR4);<br /><br />while(1){<br /><br />scr4_display(cyfra1);<br />//scr3_display(cyfra2);<br />scr2_display(cyfra2);<br />//scr1_display(cyfra4);<br /><br />}<br /><br />}<br /><br /><br />ISR( TIMER0_COMPA_vect ){<br /><br />cyfra1++;<br /><br />if(cyfra1&gt;9){<br /><br />cyfra1=0;<br />cyfra2++;<br /><br />}<br /><br />if(cyfra2&gt;9){<br /><br />cyfra2=0;<br />cyfra3++;<br /><br />}<br /><br />if(cyfra3&gt;9){<br /><br />cyfra3=0;<br />cyfra4++;<br /><br />}<br /><br />if(cyfra4&gt;9){<br /><br />cyfra4=0;<br />cyfra3=0;<br />cyfra2=0;<br />cyfra1=0;<br /><br />}<br /><br />}[/syntax]<br /><br /><br />[syntax=c]/*<br /> * inits.c<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#include&lt;avr/io.h&gt;<br />#include &quot;inits.h&quot;<br />#include &quot;../defines.h&quot;<br /><br /><br />void led_init( void ){<br /><br />SCR_DDR |= SCR1 | SCR2 | SCR3 | SCR4;  //  Ustawiamy rejestr kierunku dla portu wyboru wyświetlacza                 |_  kierunek<br />SEG_DDR |= D8;  // Ustawiamy rejestr kierunku dla portu wyboru segmentu (D8 bo chodzi o wszystkie segmenty)         |   wyjście<br />SCR_PRT |= SCR1 | SCR2 | SCR3 | SCR4;  //     |_  zerujemy (wyłączamy)<br />SEG_PRT |= D8;  //                            |   wyświetlacze<br /><br />}<br /><br />void timer_init( void ){<br /><br />//  nie ustawiamy COM0A, bo domylne zera nam pasują<br />TCCR0A |= (1&lt;&lt;WGM01);  //  ustawiamy Timer0 w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);  //  Preskaler = 1024<br /><br />}<br /><br /><br />void timer_set( void ){<br /><br /> TIMSK0 |= (1&lt;&lt;OCIE0A);  //  Timer będzie porównywany z zawartością OCR0A<br /> TIFR0  |= (1&lt;&lt;OCF0A);   //  Zezwalamy na flagę przerwania przy porównaniu<br /> OCR0A  = F_CPU/1024;//  Rejestr OCR0A to 125<br /><br />}<br /><br />void scr1_display( uint8_t cyfraa ){<br /><br />SCR_PRT = ~SCR1;<br />SEG_PRT = ~(dig_select&#91;cyfraa&#93;);<br /><br />}<br /><br />void scr2_display( uint8_t cyfrab){<br /><br />SCR_PRT = ~SCR2;<br />SEG_PRT = ~(dig_select&#91;cyfrab&#93;);<br /><br />}<br /><br />void scr3_display( uint8_t cyfrac ){<br /><br />SCR_PRT = ~SCR3;<br />SEG_PRT = ~(dig_select&#91;cyfrac&#93;);<br /><br />}<br /><br />void scr4_display( uint8_t cyfrad ){<br /><br />SCR_PRT = ~SCR4;<br />SEG_PRT = ~(dig_select&#91;cyfrad&#93;);<br /><br />}<br /><br />uint8_t dig_select&#91;&#93; = {<br /><br />D0,<br />D1,<br />D2,<br />D3,<br />D4,<br />D5,<br />D6,<br />D7,<br />D8,<br />D9,<br /><br />};<br /><br />uint8_t seg_select&#91;&#93; = {<br /><br />A,<br />B,<br />C,<br />D,<br />E,<br />F,<br /><br />};<br /><br />uint8_t scr_select &#91;&#93; = {<br /><br />SCR1,<br />SCR2,<br />SCR3,<br />SCR4,<br /><br />};[/syntax]<br /><br />[syntax=c]/*<br /> * inits.h<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#ifndef INITS_H_<br />#define INITS_H_<br /><br />void led_init( void );<br />void timer_init( void );<br />void timer_set( void );<br />void scr1_display( uint8_t cyfra );<br />void scr2_display( uint8_t cyfra );<br />void scr3_display( uint8_t cyfra );<br />void scr4_display( uint8_t cyfra );<br /><br />uint8_t screen;<br />uint8_t scr_select&#91;4&#93;;<br />uint8_t dig_select&#91;10&#93;;<br />uint8_t seg_select&#91;6&#93;;<br /><br />#endif /* INITS_H_ */[/syntax]<br /><br />[syntax=c]/*<br /> * defines.h<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#ifndef DEFINES_H_<br />#define DEFINES_H_<br /><br />//  definicje segmentów na wywietlaczach<br />#define A (1&lt;&lt;PD0)<br />#define B (1&lt;&lt;PD1)<br />#define C (1&lt;&lt;PD2)<br />#define D (1&lt;&lt;PD3)<br />#define E (1&lt;&lt;PD4)<br />#define F (1&lt;&lt;PD5)<br />#define G (1&lt;&lt;PD6)<br />//  definicje poszczególnych znaków na wywietlaczu<br />#defineD0 0x3F// 0<br />#defineD1 0x06// 1<br />#defineD2 0x5B// 2<br />#defineD3 0x4F// 3<br />#defineD4 0x66// 4<br />#defineD5 0x6D// 5<br />#defineD6 0x7D// 6<br />#defineD7 0x27// 7<br />#defineD8 0x7F// 8<br />#defineD9 0x6F// 9<br />//  definicje portów itp.<br />#define SEG_DDR DDRD<br />#define SEG_PRT PORTD<br />#define SCR_DDR DDRC<br />#define SCR_PRT PORTC<br /><br />//  definicje wywietlaczy<br />#define SCR1 (1&lt;&lt;PC0)<br />#define SCR2 (1&lt;&lt;PC1)<br />#define SCR3 (1&lt;&lt;PC2)<br />#define SCR4 (1&lt;&lt;PC3)<br /><br /><br />#endif /* DEFINES_H_ */[/syntax]<br /><br /><br />A wyświetlacz coś dziwnego odwala - wyświetla kompletnie losowe znaki - o co chodzi, ciemna śrubka!? <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=4503">Kerniak</a> — 18 sie 2014, o 12:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-16T19:22:15+01:00</updated>
<published>2014-08-16T19:22:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91723#p91723</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91723#p91723"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91723#p91723"><![CDATA[
Jest TIMSK0.<br /><br />W przerwaniu chciałem sprawdzić czy to w ogóle działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 16 sie 2014, o 19:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-08-16T18:45:52+01:00</updated>
<published>2014-08-16T18:45:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91721#p91721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91721#p91721"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91721#p91721"><![CDATA[
Zamiast [syntax=c]TIFR0  |= (1&lt;&lt;OCF0A);[/syntax]<br />powinno być[syntax=c]TIMSK0 |= (1&lt;&lt;OCIE0A);[/syntax]<br /><br />OCF0A to jest flaga, która jest ustawiana po zrównaniu się rejestru OCR0A z TCNT0. Ale żeby procesor zobaczył tą flagę to musi być ustawiony m.in. bit OCIE0A w rejestrze TIMSK0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 16 sie 2014, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-16T17:11:53+01:00</updated>
<published>2014-08-16T17:11:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91712#p91712</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91712#p91712"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91712#p91712"><![CDATA[
Dobra, podzieliłem ale nadal coś nie działa <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />wstawiam kody:<br /><br />#define-y:<br /><br />[syntax=c]/*<br /> * defines.h<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#ifndef DEFINES_H_<br />#define DEFINES_H_<br /><br />//  definicje poszczególnych znaków na wywietlaczu<br />#defineD0 ~0x3F// 0<br />#defineD1 ~0x06// 1<br />#defineD2 ~0x5B// 2<br />#defineD3 ~0x4F// 3<br />#defineD4 ~0x66// 4<br />#defineD5 ~0x6D// 5<br />#defineD6 ~0x7D// 6<br />#defineD7 ~0x27// 7<br />#defineD8 ~0x7F// 8<br />#defineD9 ~0x6F// 9<br />//  definicje portów itp.<br />#define SEG_DDR DDRD<br />#define SEG_PRT PORTD<br />#define SCR_DDR DDRC<br />#define SCR_PRT PORTC<br /><br />//  definicje wywietlaczy<br />#define SCR1 ~(1&lt;&lt;PC0)<br />#define SCR2 ~(1&lt;&lt;PC1)<br />#define SCR3 ~(1&lt;&lt;PC2)<br />#define SCR4 ~(1&lt;&lt;PC3)<br /><br /><br />#endif /* DEFINES_H_ */[/syntax]<br /><br /><br />ustawianie timerów i led-a:<br /><br />*.h<br />[syntax=c]/*<br /> * inits.h<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#ifndef INITS_H_<br />#define INITS_H_<br /><br />void led_init( void );<br />void timer_init( void );<br />void timer_set( void );<br /><br />uint8_t screen;<br />uint8_t scr_select&#91;4&#93;;<br />uint8_t dig_select&#91;10&#93;;<br /><br />#endif /* INITS_H_ */[/syntax]<br /><br />inits.c :<br />[syntax=c]/*<br /> * inits.c<br /> *<br /> *  Created on: 16-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#include&lt;avr/io.h&gt;<br />#include &quot;inits.h&quot;<br />#include &quot;../defines.h&quot;<br /><br /><br />void led_init( void ){<br /><br />SCR_DDR &amp;= SCR1 | SCR2 | SCR3 | SCR4;<br />SCR_PRT |= SCR1 | SCR2 | SCR3 | SCR4;<br /><br />}<br /><br />void timer_init( void ){<br /><br />//  nie ustawiamy COM0A, bo domylne zera nam pasują<br />TCCR0A |= (1&lt;&lt;WGM01);  //  ustawiamy Timer0 w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);  //  Preskaler = 1024<br /><br />}<br /><br /><br />void timer_set( void ){<br /><br /> TIMSK0 |= (1&lt;&lt;OCIE0A);  //  Timer będzie porównywany z zawartością OCR0A<br /> TIFR0  |= (1&lt;&lt;OCF0A);   //  Zezwalamy na flagę przerwania przy porównaniu<br /> OCR0A  = F_CPU/1024;//  Rejestr OCR0A to 125<br /><br />}<br /><br />uint8_t screen= 0;<br /><br />uint8_t scr_select&#91;&#93; = {<br /><br />SCR1,<br />SCR2,<br />SCR3,<br />SCR4,<br /><br />};<br /><br /><br />uint8_t dig_select&#91;&#93; = {<br /><br />D0,<br />D1,<br />D2,<br />D3,<br />D4,<br />D5,<br />D6,<br />D7,<br />D8,<br />D9,<br /><br />};[/syntax]<br /><br />main.c :<br />[syntax=c]/*<br /> * Biblioteka do obsługi wywietlacza 7 segmentów 4 części - oddzielne vcc, D1-D4 to też katody<br /> *<br /> *  Autor: Michał Kern<br /> *  Utworzono: 15-08-2014<br /> *<br /> */<br /><br /><br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include &quot;defines.h&quot;<br />#include &quot;inits/inits.h&quot;<br /><br />volatile uint8_t przerwanie=0;<br />volatile uint8_t cyfra1 = 0;<br />volatile uint8_t cyfra2 = 0;<br />volatile uint8_t cyfra3 = 0;<br />volatile uint8_t cyfra4 = 0;<br /><br />int main(void){<br /><br />led_init();<br />timer_init();<br />timer_set();<br /><br />sei();<br /><br />while(1){<br /><br /><br />}<br /><br />}<br /><br /><br />ISR( TIMER0_COMPA_vect ){<br /><br />przerwanie++;<br />if(przerwanie == OCR0A ){<br /><br />SEG_PRT &amp;= D1 | D2 | D3;<br />SCR_PRT &amp;= SCR1;<br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 16 sie 2014, o 17:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-08-15T21:08:14+01:00</updated>
<published>2014-08-15T21:08:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91651#p91651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91651#p91651"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91651#p91651"><![CDATA[
Witam,<br /><br />Ja celowałbym w konfigurację rejestrów timera:<br />TIMSKx i ustawienie bitów OCIEx<br />zamiast TIFRx<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><br /><br /><br />Teraz spoglądam na notę katalogową:<br />TIMSK0 |=  ( 1 &lt;&lt; OCIE0A);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 15 sie 2014, o 21:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-15T21:01:49+01:00</updated>
<published>2014-08-15T21:01:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91649#p91649</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91649#p91649"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91649#p91649"><![CDATA[
Jak to? W jakim sensie? Ja jestem 0x00ff00, <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> więc nie wiem <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=4503">Kerniak</a> — 15 sie 2014, o 21:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2014-08-15T20:42:30+01:00</updated>
<published>2014-08-15T20:42:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91646#p91646</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91646#p91646"/>
<title type="html"><![CDATA[Re: Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91646#p91646"><![CDATA[
Hmm.. Tak na szybko: czy przypadkiem gdzieś przed zmienną nie brakuje przedrostka &quot;static&quot;?<br />Pozdrawiam! Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 15 sie 2014, o 20:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-16T17:12:28+01:00</updated>
<published>2014-08-15T20:18:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91641#p91641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91641#p91641"/>
<title type="html"><![CDATA[Licznik nie współpracuje]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8151&amp;p=91641#p91641"><![CDATA[
dzień dobry wieczór.<br />Złożyłem układ na m88pa, który ma 4cyfrowy wyświetlacz 7 segmentów. Oddzielne vcc, D1-D4 to też katody. Napisałem też taki kod, który ma liczyć, a wyświetla 0. Dlaczego tak się dzieje - gdzie popełniłem błąd?<br /><br />definicje:<br /><br />[syntax=c]#ifndef DEFINES_H_<br />#define DEFINES_H_<br /><br />//  definicje poszczególnych znaków na wywietlaczu<br />#defineD0 ~0x3F// 0<br />#defineD1 ~0x06// 1<br />#defineD2 ~0x5B// 2<br />#defineD3 ~0x4F// 3<br />#defineD4 ~0x66// 4<br />#defineD5 ~0x6D// 5<br />#defineD6 ~0x7D// 6<br />#defineD7 ~0x27// 7<br />#defineD8 ~0x7F// 8<br />#defineD9 ~0x6F// 9<br />//  definicje portów itp.<br />#define SEG_DDR DDRD<br />#define SEG_PRT PORTD<br />#define SCR_DDR DDRC<br />#define SCR_PRT PORTC<br /><br />//  definicje wywietlaczy<br />#define SCR1 ~(1&lt;&lt;PC0)<br />#define SCR2 ~(1&lt;&lt;PC1)<br />#define SCR3 ~(1&lt;&lt;PC2)<br />#define SCR4 ~(1&lt;&lt;PC3)<br /><br /><br />#endif /* DEFINES_H_ */[/syntax]<br /><br />plik main.c<br />[syntax=c]/*<br /> * Biblioteka do obsługi wywietlacza 7 segmentów 4 części - oddzielne vcc, D1-D4 to też katody<br /> *<br /> *  Autor: Michał Kern<br /> *  Utworzono: 15-08-2014<br /> *<br /> */<br /><br /><br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include &quot;defines.h&quot;<br /><br />typedef uint8_t u8;<br /><br />volatile u8 przerwanie=0;<br />volatile u8 cyfra1 = 0;<br />volatile u8 cyfra2 = 0;<br />volatile u8 cyfra3 = 0;<br />volatile u8 cyfra4 = 0;<br /><br />int main(void){<br /><br />SEG_DDR |= SCR1 | SCR2 | SCR3 | SCR4;  // Piny wywietlaczy jako wyjcia<br />SCR_DDR = 0x7f;  // Piny od 0 do 6 (segmentów) jako wyjścia<br /><br />TCCR0A |= (1&lt;&lt;WGM01);  //  Timer0 w tryb CTC<br />TCCR0B |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02);  //  Preskaler dla Timera0 = 1024<br />TIFR0  |= (1&lt;&lt;OCF0A);<br />OCR0A = 125;  //  Rejestr porównawczy OCR0A = 125<br /><br />u8 screen= 0;<br /><br />u8 scr_select&#91;&#93; = {<br /><br />SCR1,<br />SCR2,<br />SCR3,<br />SCR4,<br /><br />};<br /><br />u8 dig_select&#91;&#93; = {<br /><br />D0,<br />D1,<br />D2,<br />D3,<br />D4,<br />D5,<br />D6,<br />D7,<br />D8,<br />D9,<br /><br />};<br /><br />SCR_PRT = ~(SCR1 | SCR2 | SCR3 | SCR4);<br /><br />sei();<br /><br />while(1){<br /><br />SCR_PRT = scr_select&#91;screen&#93;;<br />SEG_PRT = dig_select&#91;cyfra1&#93;;<br />screen++;<br />SCR_PRT = scr_select&#91;screen&#93;;<br />SEG_PRT = dig_select&#91;cyfra2&#93;;<br />screen++;<br />SCR_PRT = scr_select&#91;screen&#93;;<br />SEG_PRT = dig_select&#91;cyfra3&#93;;<br />screen++;<br />SCR_PRT = scr_select&#91;screen&#93;;<br />SEG_PRT = dig_select&#91;cyfra4&#93;;<br />screen = 0;<br /><br />}<br /><br />}<br /><br /><br />ISR( TIMER0_COMPA_vect ){<br /><br />if(przerwanie == 124){<br />cyfra1++;<br />przerwanie = 0;<br /><br />if( cyfra1 == 10 ){<br />cyfra1=0;<br />cyfra2++;<br />}<br /><br />if( cyfra2 == 10 ){<br />cyfra2=0;<br />cyfra3++;<br />}<br /><br />if( cyfra3 == 10 ){<br />cyfra3=0;<br />cyfra4++;<br />}<br /><br />if( cyfra4 == 10 ){<br />cyfra4=0;<br />cyfra3=0;<br />cyfra2=0;<br />cyfra1=0;<br />}<br />}<br />else{<br /><br />przerwanie++;<br /><br />}<br /><br />}[/syntax]<br /><br />Z góry dziękuję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 15 sie 2014, o 20:18</p><hr />
]]></content>
</entry>
</feed>