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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-12-27T17:18:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=19852&amp;mode</id>
<entry>
<author><name><![CDATA[Daro68]]></name></author>
<updated>2017-12-27T17:18:11+01:00</updated>
<published>2017-12-27T17:18:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201118#p201118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201118#p201118"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201118#p201118"><![CDATA[
Dzięki za pomoc i cierpliwość teraz wszystko wydaje się oczywiste   <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" />  wszystko gra <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Darek<br />Poz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14180">Daro68</a> — 27 gru 2017, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2017-12-27T14:00:08+01:00</updated>
<published>2017-12-27T14:00:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201102#p201102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201102#p201102"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201102#p201102"><![CDATA[
<div class="quotetitle">Daro68 napisał(a):</div><div class="quotecontent"><br />[syntax=c]SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra  &#91;licznik&#93;&#93; ) &amp; ~SEG_DP;[/syntax]zadziałało tylko że zapaliły się wszystkie kropki a w jaki sposób przypisać kropkę do danej cyfry z tablicy<br /></div><br />Jak masz kropki na stałej pozycji i tylko te chcesz zapalać, to najprościej dać tak (np. dla pozycji wyświetlacza 2):<br />[syntax=c]SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra  &#91;licznik&#93;&#93; );<br />if (licznik == 2)  SEGMENTY_PORT &amp;= ~SEG_DP;[/syntax]<br />lub zrobić tablicę uint8_t kropki[4] i w niej ustawiać które chcesz zasiecać a w kodzie:<br />[syntax=c]SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra  &#91;licznik&#93;&#93; );<br />if (kropki&#91;licznik&#93;)  SEGMENTY_PORT &amp;= ~SEG_DP;[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 27 gru 2017, o 14:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro68]]></name></author>
<updated>2017-12-26T23:42:45+01:00</updated>
<published>2017-12-26T23:42:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201087#p201087</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201087#p201087"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201087#p201087"><![CDATA[
Właśnie przerabiam multipleksowanie z BB i na naszym forum było już nieraz przerabiane zagadnienie kropek na podstawie BB a cały problem polega na tym że mam  trochę inny kod i na jego podstawie chcę napisać program prostego zegara godziny minuty odlicza timer programowy  plus dwa przyciski do nastawiania tylko brakuje mi jeszcze jednej kropki a przy okazji mugłbym się czegoś nowego nauczyć a teraz do sedna to co mi podałeś zapisałem w ten sposób <br />[syntax=c]SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra  &#91;licznik&#93;&#93; ) &amp; ~SEG_DP ;[/syntax]<br /> zadziałało tylko że zapaliły się wszystkie kropki a w jaki sposób przypisać kropkę do danej cyfry z tablicy <br />[syntax=c]// definicja tablicy zawierającej definicje bitowe cyfr LED<br />const uint8_t cyfry&#91;15&#93; PROGMEM = {<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),         // 0<br />~(SEG_B|SEG_C),// 1<br />~(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),// 2<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),// 3<br />~(SEG_B|SEG_C|SEG_F|SEG_G),// 4<br />~(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),// 5<br />~(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 6<br />~(SEG_A|SEG_B|SEG_C|SEG_F),// 7<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),// 8<br />~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),// 9<br /> 0xFF,// NIC (puste miejsce)<br />~(SEG_DP)                                       // kropka[/syntax]<br />nie tworząc nowej tablicy z kropkami iwstawić ją tu<br /><br />  [syntax=c]cy1 = godz / 10;<br />   if(cy1)cyfra&#91;0&#93;= cy1;<br /><br />   else cyfra&#91;0&#93;= 0;<br />   cy2= godz%10 ;<br /><br /><br />   if(cy2) cyfra&#91;1&#93;= cy2;<br /><br />   else cyfra&#91;1&#93;= 0;<br />   cy3 = min / 10;<br /><br />   if(cy3) cyfra&#91;2&#93;= cy3;<br /><br />   else cyfra&#91;2&#93;= 0;<br />   cy4 = min % 10;<br /><br />   cyfra&#91;3&#93;= cy4;<br /><br />//*********** zegar **********<br /><br />  if(!timer){<br />   timer=200;<br /><br /><br />   if(sek&lt;59) sek++;<br />  else<br />  {<br />  sek = 0;<br /><br />  if(min&lt;59)<br />  {<br />    min++;<br />  }<br />    else<br />     {<br />  min = 0;<br />  if(godz&lt;23)<br />  {<br />    godz++;<br />  }<br />   else<br />   {<br /> godz = 0;<br />   }<br />        }<br />     }<br />  }[/syntax]<br />i może jeszcze podam obsługe Timera sprzetowego<br />[syntax=c]ISR(TIMER0_COMPA_vect){   //----------------------<br /><br /><br />static uint8_t n;<br />static uint8_t licznik;<br />extern volatile uint8_t timer;<br /><br /><br />ANODY_PORT = (ANODY_PORT | MASKA_ANODY);  //Wygaszenie wszystkich wyświetlaczy<br /><br />SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra  &#91;licznik&#93;&#93; ) &amp; ~SEG_DP ;<br /><br />// SEGMENTY_PORT &amp;= ~SEG_DP;<br /><br />ANODY_PORT = ( ANODY_PORT &amp; ~MASKA_ANODY ) | ( ~(1&lt;&lt;licznik) &amp; MASKA_ANODY ); //Cykliczne przełączanie wyświetlaczy<br /><br />   licznik++;<br />   if(licznik &gt; 3)licznik=0;<br /><br />     n = timer;<br />     if(n)timer=--n;<br /><br />}[/syntax]<br />Darek<br />Poz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14180">Daro68</a> — 26 gru 2017, o 23:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2017-12-26T12:31:42+01:00</updated>
<published>2017-12-26T12:31:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201078#p201078</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201078#p201078"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201078#p201078"><![CDATA[
Przecież wszystko masz dokładnie podane i wytłumaczone w BB.<br />Nie wiem jak to jest opisywane na cytowanym blogu, ale ogólnie zasada jest taka:<br />- masz zdefiniowaną tablicę <em>CYFRY</em> w pamięci flash zawierającą opisy wyglądu cyfr, czyli który segment ma być zaświecony a który zgaszony<br />- tablica <em>CYFRY</em> zawiera kolejne cyfry od 0 do 9 (lub więcej ale to nie ważne)<br />- jak masz wyświetlić np. cyfrę 3 to odczytujesz wartość z tablicy <em>CYFRY </em>o indeksie 3 i masz układ segmentów do zaświecenia.<br />Jeżeli chcesz mieć kropki to możesz zrobić sobie tak nadmiarowo drugą tablicę i tam mieć zdefiniowany wygląd cyfry z kropką (dodany twój SEG_DP), ale ze względu że kropka przy każdej cyfrze to ten sam segment, to robi się to bez definiowania dodatkowego układu znaków, tylko po odczytaniu z flash układu z tablicy <em>CYFRY</em>, dodajesz do niej zapalenie segmentu kropki.<br />Czyli robisz na przykład tak - odczytujesz z pamięci flash do zmiennej <em>segmenty_port</em> układ cyfry znajdujący się w tablicy <em>CYFRY</em>:<br />[syntax=c]segmenty_port = pgm_read_byte( &amp;CYFRY&#91; cyfra &#91; licznik &#93; &#93;);[/syntax]<br />gdzie zmienna <em>cyfra</em> to tablica zawierająca wartości dla kolejnych wyświetlaczy a zmienna <em>licznik</em> określa która z nich jest teraz odczytywana i wyświetlana.<br />Jak już masz układ znaku bez kropki to robisz sprawdzenie czy dla danej cyfry masz zaświecić kropkę i jak tak to robisz:<br />- jak masz wyświetlacz ze wspólna katodą[syntax=c]segmenty_port |= SEG_DP;[/syntax]lub jak masz ze wspólną anodą a taki chyba masz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />[syntax=c]segmenty_port &amp;= ~SEG_DP;[/syntax]<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br />PS. Starałem zrobić się na tych samych nazwach zmiennych co Ty, lecz nie wiem czy tak samo miałeś je poprzypisywane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 26 gru 2017, o 12:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro68]]></name></author>
<updated>2017-12-26T00:35:43+01:00</updated>
<published>2017-12-26T00:35:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201074#p201074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201074#p201074"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201074#p201074"><![CDATA[
Przyznam się szczerze że sam nie wiem to jest jedna z moich prób <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  , od kilku dni siedzę nad tym przeszukuje różne fora i nie umiem sobie tego po układać w całość  <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" />  . Kod z blogu Piotra-”Mikropasje” różni się z kodem z BB i był on nie jednokrotnie omawiany na forum ale chciałbym jakoś wstawić kropkę do obecnego kodu a z tego co udało mi się zrozumieć np.<br />cyfra[0]=5 z ”.” ;<br />[0]=licznik pierwszy wyświetlacz = 5 <br />czyli cyfry = SEG_A|SEG_C|SEG_D|SEG_F|SEG_G a gdzie mam zapisać  SEG_DP<br /><br />Darek<br />Poz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14180">Daro68</a> — 26 gru 2017, o 00:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2017-12-25T21:43:43+01:00</updated>
<published>2017-12-25T21:43:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201069#p201069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201069#p201069"/>
<title type="html"><![CDATA[Re: Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201069#p201069"><![CDATA[
Jakieś dziwne rzeczy tutaj robisz:  [syntax=c]SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra &amp;&amp; kropka &#91;licznik&#93;&#93; )&amp; ~SEG_DP ;[/syntax]Odczytaj normalnie z tablicy układ segmentu dla danej cyfry a potem sprawdź czy kropka[licznik] == 1 i jak tak to załącz SEG_DP.<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />A błąd mówi Ci że linker nie wie co to jest za tablica kropka. Gdzie masz jej definicję i deklarację?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 25 gru 2017, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro68]]></name></author>
<updated>2017-12-25T01:34:28+01:00</updated>
<published>2017-12-25T01:34:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201047#p201047</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201047#p201047"/>
<title type="html"><![CDATA[Multipleksowanie – kropki !!!]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19852&amp;p=201047#p201047"><![CDATA[
Mam problem z ożywieniem kropek kod jest z blogu Piotra „Mikropasje” walczę z tematem o kilku  dni przeglądając fora ale nie umiem wymyślić coś sensownego nie wiem od czego zacząć chciałbym żeby kropka na początek świeciła a w dalszych planach mrugała co sek próbowałem coś z tym zrobić ale efekty marne ma to być prost program czyli prosty zegar      <br />multipleks.h<br />[syntax=c]extern uint8_t cyfra&#91;4&#93;;<br />extern uint8_t kropka&#91;4&#93;;       //przechowuje stan kropek[/syntax]<br />multipleks.c<br />[syntax=c]ISR(TIMER0_COMPA_vect){   //----------------------<br /><br /><br />static uint8_t n;<br />static uint8_t licznik;<br />extern volatile uint8_t timer;<br /><br />ANODY_PORT = (ANODY_PORT | MASKA_ANODY);  //Wygaszenie wszystkich wyświetlaczy<br /><br />SEGMENTY_PORT = pgm_read_byte ( &amp;cyfry&#91;cyfra &amp;&amp; kropka &#91;licznik&#93;&#93; )&amp; ~SEG_DP ;<br /><br />ANODY_PORT = ( ANODY_PORT &amp; ~MASKA_ANODY ) | ( ~(1&lt;&lt;licznik) &amp; MASKA_ANODY ); //Cykliczne przełączanie wyświetlaczy<br /><br />   licznik++;<br />   if(licznik &gt; 3)licznik=0;<br /><br />     n = timer;<br />     if(n)timer=--n;<br /><br />}[/syntax]<br /><a href="https://obrazkiforum.atnel.pl/14180/22d3b5a54d55114427d725af1f2592df.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14180/22d3b5a54d55114427d725af1f2592df.png" alt="Obrazek" /></a><br />Poz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14180">Daro68</a> — 25 gru 2017, o 01:34</p><hr />
]]></content>
</entry>
</feed>