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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=21065&amp;mode</id>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-08-01T07:30:47+01:00</updated>
<published>2018-08-01T07:30:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210307#p210307</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210307#p210307"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210307#p210307"><![CDATA[
Sądząc po tym, w jaki sposób wcześniej włączałeś katody wyświetlacza, teraz zastosowałeś inną taktykę wykorzystania zmiennej <strong><em>licznik</em></strong>, niż to jest w kodzie z książki, ale tak też powinno działać. Miałbym jednak jeszcze pewne uwagi.<br /><ul><li>Sekwencja przełączenia cyfry powinna wyglądać tak:<br /><ol style="list-style-type: decimal"><li>wyłączenie wszystkich katod - wygaszenie wszystkich cyfr</li><li>zmiana stanu portu sterującego segmentami cyfry</li><li>włączenie odpowiedniej katody aktualnie wyświetlanej cyfry</li></ol>Ma to zapobiegać &quot;prześwitywaniu&quot; segmentów z sąsiednich cyfr. W Twoim kodzie ta kolejność nie jest zachowana. Powinieneś zmienić kolejność instrukcji wewnątrz bloków warunkowych <strong><em>case</em></strong>.</li><li>Zerując zmienną <strong><em>licznik</em></strong> w ten sposób spowodowałeś, że jeden &quot;obieg&quot; procedury obsługi przerwania jest niewykorzystany i służy tylko do wyzerowania zmiennej. W efekcie wykorzystujesz pięć &quot;obiegów&quot; procedury obsługi przerwania do przełączania czterech cyfr, przy czym jedna z cyfr będzie się świecić dwukrotnie dłużej, niż pozostałe, co może spowodować, że wizualnie będzie się ona świecić nieco jaśniej niż inne.<br />Aby tego uniknąć, zmienna licznik powinna być modyfikowana (lub przynajmniej zerowana) po zakończeniu instrukcji <strong><em>switch</em></strong></li></ul><br />Osobiście zrobiłbym raczej w ten sposób:<br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br />    static uint8_t licznik=1;                  // zmienna do przełączania kolejno anod wyrwietlacza<br /><br />    ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY);  // wygaszenie wszystkich wyświetlaczy<br /> <br />    switch (licznik) {<br />        case 0:<br />            LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; ); // wysłanie danych z flash na port<br />            ANODY_PORT |= CA1;                       // zapalenie cyfry<br />            break;<br />        case 1:<br />            LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />            ANODY_PORT |= CA2;<br />            break;<br />        case 2:<br />            LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />            ANODY_PORT |= CA3;<br />            break;<br />        case 3:<br />            LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />            ANODY_PORT |= CA4;<br />            break;<br />        default:<br />            break;<br />    }<br /><br />    licznik++;<br />    if (licznik &gt;= 4) licznik = 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 1 sie 2018, o 07:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kubabrowar333]]></name></author>
<updated>2018-07-31T21:09:47+01:00</updated>
<published>2018-07-31T21:09:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210300#p210300</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210300#p210300"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210300#p210300"><![CDATA[
Dzięki za pomoc.<br />Procedurę przerwania rozwiązałem w ten sposób:<br />[syntax=c]ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przełączania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY);// wygaszenie wszystkich wyświetlaczy<br /><br />switch(licznik++)<br />{<br />case 0:<br />ANODY_PORT |= CA1; // zapalenie cyfry<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// wysłanie danych z flash na port<br />break;<br />case 1:<br />ANODY_PORT |= CA2;<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );<br />break;<br />case 2:<br />ANODY_PORT |= CA3;<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );<br />break;<br />case 3:<br />ANODY_PORT |= CA4;<br />LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );<br />break;<br />case 4:<br />licznik = 0;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11071">kubabrowar333</a> — 31 lip 2018, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-07-31T19:29:50+01:00</updated>
<published>2018-07-31T19:29:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210296#p210296</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210296#p210296"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210296#p210296"><![CDATA[
<div class="quotetitle">kubabrowar333 napisał(a):</div><div class="quotecontent"><br />biblioteka pochodzi z niebieskiej książki<br /></div><br />Nie mam &quot;niebieskiej książki&quot;, co nie musi oznaczać, że się nie znam na multipleksowaniu i nie umiem wyciągać logicznych wniosków.<br />Jeżeli przy takim zapisie[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);[/syntax] cyfry Ci się nakładają,<br />a przy takim zapisie[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; ~MASKA_ANODY);[/syntax]<br />&quot;wyświetlacze świecą bardzo słabo&quot;, to przy zapisie jaki zaproponowałem powinno być OK.<br /><br />Jeśli nie jest dobrze, to znaczy najprawdopodobniej, że to nie jedyny błąd. Warunkiem prawidłowego działania jest na przykład prawidłowa modyfikacja w przerwaniu zmiennej <strong><em>licznik</em></strong>. Musi ona przyjmować wartości adekwatne do tego, na których pinach masz podłączone sterowanie katod. Zgodnie z Twoim schematem zmienna licznik powinna przyjmować kolejne wartości (binarnie):<br /><strong>00010000<br />00100000<br />01000000<br />10000000<br />00010000<br />00100000</strong><br />... itd.<br /><br />Jeśli w przykładzie z książki masz sterowanie anodami na innych pinach portu, to musisz to przerobić.<br /><br />Dodatkowo należy pamiętać, że przed zmianą cyfry (w przerwaniu) należy wszystkie katody wyłączyć, i to też musisz zmienić w stosunku do przykładowego kodu z książki, bo z tego co rozumiem, tam jest sterowania anodami. Wygaszenie u Ciebie powinno wyglądać tak:[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY);[/syntax]<br /><br />Powinny tam być również warunki, które wybierają odpowiednie cyfry np. na podstawie wartości zmiennej licznik. Jeśli Twoje katody są na innych pinach jak w przykładowym kodzie z książki, to też musisz to zmodyfikować.<br /><br />Podejrzewam, że autor książki opisał w niej, jak działa kod i ewentualnie w jaki sposób można dostosować go do własnych potrzeb, więc może przeczytaj to dokładnie.<br /><br />Łatwiej byłoby, gdybyś pokazał całą swoją procedurę obsługi przerwania, ale pewnie tego nie możesz zrobić ze względu na prawa autorskie. Proponowałbym jednak, abyś sprawdził moje sugestie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 31 lip 2018, o 19:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kubabrowar333]]></name></author>
<updated>2018-07-31T18:20:57+01:00</updated>
<published>2018-07-31T18:20:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210295#p210295</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210295#p210295"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210295#p210295"><![CDATA[
wtedy wyświetlacz świeci bardzo słabo a biblioteka pochodzi z niebieskiej książki<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11071">kubabrowar333</a> — 31 lip 2018, o 18:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-07-31T16:57:18+01:00</updated>
<published>2018-07-31T16:57:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210289#p210289</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210289#p210289"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210289#p210289"><![CDATA[
<div class="quotetitle">kubabrowar333 napisał(a):</div><div class="quotecontent"><br />Mam problem z dostosowaniem biblioteki z BB do wyświetlaczy ze wspólną katodą.<br />...<br />Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);[/syntax]<br />Gdy negowałem maskę wtedy wszystkie wyświetlacze świeca bardzo słabo.<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; ~MASKA_ANODY);[/syntax]<br /></div><br />Przyznam się uczciwie, że nie znam tej biblioteki, ale na Twoim miejscu spróbowałbym jeszcze:<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (licznik &amp; MASKA_ANODY);[/syntax]<br /><br />Ostrzegam, że to był strzał z zamkniętymi oczami <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=14165">andrews</a> — 31 lip 2018, o 16:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kubabrowar333]]></name></author>
<updated>2018-07-31T14:43:11+01:00</updated>
<published>2018-07-31T14:43:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210287#p210287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210287#p210287"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210287#p210287"><![CDATA[
Gdy negowałem maskę wtedy wszystkie wyświetlacze świeca bardzo słabo.<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; ~MASKA_ANODY);[/syntax]<br />a ty schemat całego urządzenia z wyświetlaczami Wi-Fi Clock Model 1.pdf<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11071">kubabrowar333</a> — 31 lip 2018, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-07-31T14:18:53+01:00</updated>
<published>2018-07-31T14:18:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210286#p210286</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210286#p210286"/>
<title type="html"><![CDATA[Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210286#p210286"><![CDATA[
<div class="quotetitle">kubabrowar333 napisał(a):</div><div class="quotecontent"><br />Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.<br /></div><br />Łatwiej byłoby coś podpowiedzieć widząc twój schemat niż się domyślać, ale skoro piszesz że masz zanegowane sterowanie katodami to czemu w kodzie tego nie zanegujesz? w tym kodzie w przerwaniu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 lip 2018, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kubabrowar333]]></name></author>
<updated>2018-07-31T14:17:07+01:00</updated>
<published>2018-07-31T14:17:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210285#p210285</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210285#p210285"/>
<title type="html"><![CDATA[Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21065&amp;p=210285#p210285"><![CDATA[
Witam<br />Mam problem z dostosowaniem biblioteki z BB do wyświetlaczy ze wspólną katodą.<br />Z tablicy ze znakami usunąłem negacje więc są wyświetlane poprawnie i gdy wyświetlam wszystkie znaki takie same to wszystko działa. Problem jest wtedy gdy są różne znaki ponieważ się wtedy nakładają na siebie. Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.<br />[syntax=c]ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11071">kubabrowar333</a> — 31 lip 2018, o 14:17</p><hr />
]]></content>
</entry>
</feed>