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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-12T14:11:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15020&amp;mode</id>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-12T14:11:45+01:00</updated>
<published>2016-04-12T14:11:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158355#p158355</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158355#p158355"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158355#p158355"><![CDATA[
Zrobiłem tak:  <br />Punkt 1, 2, 3, dotyczy pliku d_led.c, a punkt 4 i 5 dotyczy pliku d_led.h<br /><br />1. Zmieniłem definicje tablicy z cyfry[15] na dwie: cyfry_b i cyfry_d<br />[syntax=c]// definicja tablicy zawierajacej definicje bitowe cyfr LED<br />const uint8_t cyfry_b&#91;15&#93; PROGMEM = {<br />~( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E ),// 0<br />~( SEG_B | SEG_C ),// 1<br />~( SEG_A | SEG_B | SEG_D | SEG_E ),// 2<br />~( SEG_A | SEG_B | SEG_C | SEG_D ),// 3<br />~( SEG_B | SEG_C ),// 4<br />~( SEG_A | SEG_C | SEG_D ),// 5<br />~( SEG_A | SEG_C | SEG_D | SEG_E ),// 6<br />~( SEG_A | SEG_B | SEG_C ),// 7<br />~( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E ),// 8<br />~( SEG_A | SEG_B | SEG_C | SEG_D ),// 9<br />0xFF// NIC (puste miejsce)<br />};<br />const uint8_t cyfry_d&#91;15&#93; PROGMEM = {<br />~( SEG_F ),// 0<br />0xFF,// 1<br />~( SEG_G ),// 2<br />~( SEG_G ),// 3<br />~( SEG_F | SEG_G ),// 4<br />~( SEG_F | SEG_G ),// 5<br />~( SEG_F | SEG_G ),// 6<br />~( SEG_F ),// 7<br />~( SEG_F | SEG_G ),// 8<br />~( SEG_F | SEG_G ),// 9<br />0xFF// NIC (puste miejsce)<br />};[/syntax]<br />2. W d_led_init deklarowałem obydwie zmienne<br />[syntax=c]LED_DATA_DIR_B = 0x3B;   // wszystkie piny portu C jako WYJsCIA(katody)<br />LED_DATA_B = 0x3B;// wygaszenie wszystkich katod – stan wysoki<br />LED_DATA_DIR_D = 0xC0;   // wszystkie piny portu C jako WYJsCIA(katody)<br />LED_DATA_D = 0xC0;// wygaszenie wszystkich katod – stan wysoki[/syntax]<br />3. Zmieniłem ISR na<br />[syntax=c]// ================= PROCEDURA OBS£UGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przelaczania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT | MASKA_ANODY);// wygaszenie wszystkich wyswietlaczy<br /><br />if(licznik==4){// gdy zapalony wysw.1 podaj stan zmiennej c1<br />LED_DATA_B = pgm_read_byte( &amp;cyfry_b&#91;cy1&#93; );<br />LED_DATA_D = pgm_read_byte( &amp;cyfry_d&#91;cy1&#93; );<br />}<br />else<br />if(licznik==8) {<br />LED_DATA_B = pgm_read_byte( &amp;cyfry_b&#91;cy2&#93; );// gdy zapalony wysw.2 podaj stan zmiennej c2<br />LED_DATA_D = pgm_read_byte( &amp;cyfry_d&#91;cy2&#93; );<br />}<br />else<br />if(licznik==16){<br />LED_DATA_B = pgm_read_byte( &amp;cyfry_b&#91;cy3&#93; );// gdy zapalony wysw.3 podaj stan zmiennej c3<br />LED_DATA_D = pgm_read_byte( &amp;cyfry_d&#91;cy3&#93; );<br />}<br />else<br />if(licznik==32){<br />LED_DATA_B = pgm_read_byte( &amp;cyfry_b&#91;cy4&#93; );// gdy zapalony wysw.4 podaj stan zmiennej c4<br />LED_DATA_D = pgm_read_byte( &amp;cyfry_d&#91;cy4&#93; );<br />}<br /><br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);// cykliczne przelaczanie kolejnej anody w kazdym przerwaniu<br /><br />// operacje cyklicznego przesuwania bitu zapalajacego anody w zmiennej licznik<br />licznik &lt;&lt;= 1;// przesuniecie zawartosci bitów licznika o 1 w lewo<br />if(licznik&gt;32) licznik = 1;// jesli licznik wiekszy niz 8 to ustaw na 1<br />}[/syntax]<br />4. Zmieniłem deklaracje portów (w pierwszych dwóch liniach kodu jest deklaracja portu A, choć opis jest portu B)<br /><br />[syntax=c]// definicje portów i pinów wyswietlacza uzywanych dla ulatwienia w programie jako stale preprocesora<br />#define LED_DATA_BPORTA// port z podlaczonymi segmentami<br />#defineLED_DATA_DIR_B DDRA// rejestr kierunku portu katod wyswietlaczy<br />#define LED_DATA_DPORTC// port z podlaczonymi segmentami<br />#defineLED_DATA_DIR_D DDRC// rejestr kierunku portu katod wyswietlaczy<br />#[/syntax]<br /><br />5. Definicja bitów (uwzględnienie mojego projektu)<br /><br />[syntax=c]// definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;5 )<br />#define SEG_B (1&lt;&lt;4 )<br />#define SEG_C (1&lt;&lt;3 )<br />#define SEG_D (1&lt;&lt;1 )<br />#define SEG_E (1&lt;&lt;0 )<br />#define SEG_F (1&lt;&lt;7 )<br />#define SEG_G (1&lt;&lt;6 )[/syntax]<br /><br />Wiem, że zrobiłem inaczej, ale działa dobrze. Ten sposób ma jednak wadę, w porcie B i C nie mogą być użyte takie same bity tzn bit 1 w porcie B i D, ale po kolejnej przeróbce myślę że powinno pójść.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 12 kwi 2016, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-04-12T10:20:44+01:00</updated>
<published>2016-04-12T10:20:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158342#p158342</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158342#p158342"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158342#p158342"><![CDATA[
No bo przykład dotyczy jednego portu ... ale tą samą dokładnie metodą można zrobić to na dwóch portach tylko trzeba rozbić na dwie oddzielne operacje ...<br /><br />Pokaż jak byś to zrobił dla jednego chociaż portu żeby zobaczyć czy rozumiesz o co chodzi w maskowaniu ... a jak nie rozumiesz do końca to obejrzyj jeszcze to: <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2014/03/maskowanie-bajtow-z-przymruzeniem-oka.html" >http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 kwi 2016, o 10:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-12T09:51:12+01:00</updated>
<published>2016-04-12T09:51:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158341#p158341</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158341#p158341"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158341#p158341"><![CDATA[
Dałem sobie parę dni do przemyślenia, doczytania o multipleksowaniu. Niestety nie mogę w nim znaleźć odnośnie maskowaniu portu i podziale danych na dwa porty, jak w moim przypadku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 12 kwi 2016, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-04-09T16:05:13+01:00</updated>
<published>2016-04-09T16:05:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158150#p158150</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158150#p158150"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158150#p158150"><![CDATA[
<div class="quotetitle">romkli napisał(a):</div><div class="quotecontent"><br />i nie wiem jak dostosować bibliotekę do mojego projektu. Proszę o wskazanie mi drogi jak to zrobić.<br /></div><br /><br />W Bluebooku masz to opisane DOKŁADNIE, chodzi o maskowanie portu ... czytałeś? Jeśli tak to napisz czego tam nie rozumiesz, wtedy mi łatwiej będzie pomóc, zamiast pisać od tym od nowa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 kwi 2016, o 16:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-09T15:52:31+01:00</updated>
<published>2016-04-09T15:52:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158147#p158147</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158147#p158147"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=158147#p158147"><![CDATA[
Witam ponownie. Zegar działa, jednak pojawił się problem. Otóż biblioteka D_LED działa na  całym porcie np:<br />[syntax=c]// definicje portów i pinów wyswietlacza uzywanych dla ulatwienia w programie jako stale preprocesora<br />#define LED_DATAPORTA// port z podlaczonymi segmentami<br />#define LED_DATA_DIR DDRA// rejestr kierunku portu katod wyswietlaczy<br /><br />// definicje bitów dla poszczególnych segmentów LED<br />#define SEG_A (1&lt;&lt;0 )<br />#define SEG_B (1&lt;&lt;1 )<br />#define SEG_C (1&lt;&lt;2 )<br />#define SEG_D (1&lt;&lt;3 )<br />#define SEG_E (1&lt;&lt;4 )<br />#define SEG_F (1&lt;&lt;5 )<br />#define SEG_G (1&lt;&lt;6 )<br />#define SEG_DP ( 1&lt;&lt;7 )[/syntax]<br />Mój projekt chcę wykonać na Atmega 328 i tu pojawił się problem. Muszę ten wyświetlacz połączyć na dwóch portach <br />[syntax=c]#define SEG_A (1&lt;&lt;PB5 )<br />#define SEG_B (1&lt;&lt;PB4 )<br />#define SEG_C (1&lt;&lt;PB3 )<br />#define SEG_D (1&lt;&lt;PB1 )<br />#define SEG_E (1&lt;&lt;PB0 )<br /><br />#define SEG_F (1&lt;&lt;PD7 )<br />#define SEG_G (1&lt;&lt;PD6 )<br />//#define SEG_DP ( 1&lt;&lt;7 ) //NO CONNECT[/syntax]<br />i nie wiem jak dostosować bibliotekę do mojego projektu. Proszę o wskazanie mi drogi jak to zrobić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 9 kwi 2016, o 15:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-04T15:03:38+01:00</updated>
<published>2016-04-04T15:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157762#p157762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157762#p157762"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157762#p157762"><![CDATA[
Najwazniejsze, ze pomoglo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 4 kwi 2016, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-04-04T09:17:19+01:00</updated>
<published>2016-04-04T09:17:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157744#p157744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157744#p157744"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157744#p157744"><![CDATA[
<div class="quotetitle">romkli napisał(a):</div><div class="quotecontent"><br />Po reprymendzie Mirka doczytalem dzial o multipleksowaniu.<br /></div><br />To nie była żadna reprymenda a po prostu przypomnienie i ew odesłanie do BB ... plus kilka wskazówek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 kwi 2016, o 09:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-04T09:12:40+01:00</updated>
<published>2016-04-04T09:12:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157741#p157741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157741#p157741"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157741#p157741"><![CDATA[
Opisze teraz moj blad. Otoz podlaczylem anody wyswietlacza LED do pino PC0-3. Niestety do pinow PC0-1 jest podlaczony RTC wiec tu byl blad. By to naprawic podlaczylem anody wyswietlacza do PC2-5, ale musialem poprawic kod w bibliotece. W pliku d_led.h zmienilem definicje pinow  anod<br />[syntax=c]#defineCA1 ( 1&lt;&lt;PC2 )// CA1 oznacza bit nr.2 portu C<br />#defineCA2 ( 1&lt;&lt;PC3 )// CA2 oznacza bit nr.3 portu C<br />#defineCA3 ( 1&lt;&lt;PC4 )// CA3 oznacza bit nr.4 portu C<br />#defineCA4 ( 1&lt;&lt;PC5 )// CA4 oznacza bit nr.5 portu C[/syntax]<br /><br />W pliku d_led.c zmienilem cyfry w nawiasach z 1, 2, 4, 8 na 4, 8, 16, 32<br />[syntax=c]if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// gdy zapalony wysw.1 podaj stan zmiennej c1<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );// gdy zapalony wysw.2 podaj stan zmiennej c2<br />else if(licznik==16) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );// gdy zapalony wysw.3 podaj stan zmiennej c3<br />else if(licznik==32) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );// gdy zapalony wysw.4 podaj stan zmiennej c4[/syntax]<br />Teraz wszystko gra i swieci. Dzieki za podpowiedz i wyrozumialosc. Po reprymendzie Mirka doczytalem dzial o multipleksowaniu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 4 kwi 2016, o 09:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-03T16:03:33+01:00</updated>
<published>2016-04-03T16:03:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157637#p157637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157637#p157637"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157637#p157637"><![CDATA[
Mam blad. Zapomnialem sprawdzic i juz teraz wiem. Do portu PC mam przeciez podpiety RTC i on koliduje z wyswietlaczem, ju poprawiam i dam znac. Dzieki z gory, Nara<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 3 kwi 2016, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-04-03T15:13:07+01:00</updated>
<published>2016-04-03T15:13:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157629#p157629</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157629#p157629"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157629#p157629"><![CDATA[
Mignięcie ma podane przez Ciebie wartości, ale w milisekundach a nie nanosekundach (nano to miliardowe części sekundy).<br />Zrób ten test co napisałem wyżej. Zakomentuj zwiększanie licznika w przerwaniu i zobacz czy jak ustawiasz jego wartość 1, 2, 4, 8, to poprawnie wyświetla się dana cyfra (reszta powinna być wygaszona).<br /><br />-- <br />Pozdrawiam,<br />Robert<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />Czy nie masz w programie gdzieś indziej sterowania portem C? Bo ono może bruździć.<br />Na pewno do portu C nie jest także nic innego podpiętego?<br />Jaki procesor stosujesz, bo np. na ATmega32 na PC0 i PC1 masz TWI (I2C) i może je także wykorzystujesz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 3 kwi 2016, o 15:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-03T14:55:02+01:00</updated>
<published>2016-04-03T14:55:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157628#p157628</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157628#p157628"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157628#p157628"><![CDATA[
Definicja portow i pinow oraz definicja maska anody<br />[syntax=c]// definicje portów i pinów wyswietlacza uzywanych dla ulatwienia w programie jako stale preprocesora<br />#define LED_DATAPORTA// port z podlaczonymi segmentami<br />#defineLED_DATA_DIR DDRA// rejestr kierunku portu katod wyswietlaczy<br />#define ANODY_PORT PORTC// port z podlaczonymi anodami- 4 bity najmlodsze<br />#define ANODY_DIR DDRC// rejestr kierunku portu anod wyswietlaczy<br /><br />#defineCA1 ( 1&lt;&lt;PC0 )// CA1 oznacza bit nr.0 portu C<br />#defineCA2 ( 1&lt;&lt;PC1 )// CA2 oznacza bit nr.1 portu C<br />#defineCA3 ( 1&lt;&lt;PC2 )// CA3 oznacza bit nr.2 portu C<br />#defineCA4 ( 1&lt;&lt;PC3 )// CA4 oznacza bit nr.3 portu C<br /><br />#define MASKA_ANODY (CA1|CA2|CA3|CA4)[/syntax]<br /><br /><br />Moze przesadzilem z tym czasem, ale sam zobacz:<br />[youtube]<br /><!-- m --><a class="postlink" href="https://youtu.be/C__UrR9HmWs" >https://youtu.be/C__UrR9HmWs</a><!-- m --><br />[/youtube]<br /><br />W mruganiu wyswietla kazda cyfre godziny i minuty, czyli 14:57 wyswietla 1, 1; 4, 4; 5, 5; 7, 7 jednorazowo razem 11, 44, 55, 77 mrugajac.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 3 kwi 2016, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2016-04-03T14:49:57+01:00</updated>
<published>2016-04-03T14:49:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157627#p157627</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157627#p157627"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157627#p157627"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Mrugaja one okolo 5-10 ns (chyba) i gasna<br /></div>Chyba masz jakieś ponad ludzkie oko. Człowiek nie jest w stanie wyłapać tak krótkiego mignięcie.<br /><br />Jak masz zdefiniowaną wartość MASKA_ANODY?<br />Czy jak w przerwaniu zostawisz zmienną licznik na stałe z wartością 1 lub 2 (nie zwiększasz), to masz poprawnie wyświetlaną daną cyfrę?<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> — 3 kwi 2016, o 14:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-03T14:35:38+01:00</updated>
<published>2016-04-03T14:35:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157626#p157626</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157626#p157626"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157626#p157626"><![CDATA[
Poprawilem wedlug twoich wskazowek. Przyznam sie, kod ladniejszy. Niestety do poprawy wyswietlenia czasu nic wiecej nie wnioslo. Nadal dobrze wyswietlaja sie minuty minuty, niestety godziny nie. Mrugaja one okolo 5-10 ns (chyba) i gasna. Jest to tylko blysniecie na ulamek sekundy i nic wiecej. minuty swieca przez caly czas. Oto widok poprawionej funkcji pokazuj_date_czas.<br />[syntax=c]void pokazuj_date_czas( TDATETIME * dt ){<br />cy1 = dt-&gt;hh / 10;<br />cy2 = dt-&gt;hh % 10;<br />cy3 = dt-&gt;mm / 10;<br />cy4 = dt-&gt;mm % 10;<br /><br />#if DATETIME_AS_STRING == 1<br />lcd_locate( 0, 0 );<br />lcd_str( dt-&gt;time );<br />lcd_locate( 1, 0 );<br />lcd_str( dt-&gt;date );<br />lcd_locate( 0, 14 );<br />lcd_int( dt-&gt;weekday );<br />lcd_locate( 1, 13 );<br />lcd_str_P( &amp;dni&#91; dt-&gt;weekday * 4 &#93; );<br />#endif<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 3 kwi 2016, o 14:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-04-03T13:19:48+01:00</updated>
<published>2016-04-03T13:19:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157622#p157622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157622#p157622"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157622#p157622"><![CDATA[
<div class="quotetitle">romkli napisał(a):</div><div class="quotecontent"><br />        d1=licznik/1000;<br />        if(d1) cy1=d1; else cy1=NIC;<br />        d2=(licznik-(d1*1000))/100;<br />        if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />        d3=(licznik-(d1*1000)-(d2*100))/10;<br />        if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />        d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />        cy4=d4;<br /></div><br /><br />No to teraz zobacz co ty narobiłeś - toż to jest kod w książce, który ma tylko pokazać w JAKI SPOSÓB rozbić jakąś liczbę czterocyfrową na pojedyncze składniki żeby wyświetlić na wyświetlaczu. Dodatkowo pokazane jest tu jak się pozbyć np nieznaczących zer itp .... a ty to wciskasz do swojego kodu ?<br /><br />np panie kolego pomyśl chwilę - o ile czytałeś Bluebooka w tym zakresie<br /><br />masz zmienne cy1, cy2, cy3, cy4 - jak myślisz po co one są ? (hmmm pytam a przecież wyjaśniam to w książce - ale ok)<br /><br />no toż każda z nich reprezentuje pojedynczą cyfrę na wyświetlaczu<br /><br />więc twoje zadanie to już TYLKO rozbić sobie samemu godzinę na dwie cyfry i minuty na dwie cyfry<br /><br />np<br />[syntax=c]cy1 = godziny / 10;<br />cy2 = godziny % 10;<br /><br />cy3 = minuty / 10;<br />cy4 = minuty % 10;[/syntax]<br /><br />to wszystko .... po co ci licznik i te całe karkołomne przeliczenia ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 kwi 2016, o 13:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-03T13:13:36+01:00</updated>
<published>2016-04-03T13:13:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157618#p157618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157618#p157618"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157618#p157618"><![CDATA[
W bibliotekach od wyswietlacza zmieniem tylko oznaczenie pinow na ktorych jest podlaczony wyswietlacz LED:<br /><br />Ok, pokazuje moj kod:<br />plik d_led.h:<br />[syntax=c]// definicje portów i pinów wyswietlacza uzywanych dla ulatwienia w programie jako stale preprocesora<br />#define LED_DATAPORTA// port z podlaczonymi segmentami<br />#defineLED_DATA_DIR DDRA// rejestr kierunku portu katod wyswietlaczy<br />#define ANODY_PORT PORTC// port z podlaczonymi anodami- 4 bity najmlodsze<br />#define ANODY_DIR DDRC// rejestr kierunku portu anod wyswietlaczy<br /><br />#defineCA1 ( 1&lt;&lt;PC0 )// CA1 oznacza bit nr.0 portu C<br />#defineCA2 ( 1&lt;&lt;PC1 )// CA2 oznacza bit nr.1 portu C<br />#defineCA3 ( 1&lt;&lt;PC2 )// CA3 oznacza bit nr.2 portu C<br />#defineCA4 ( 1&lt;&lt;PC3 )// CA4 oznacza bit nr.3 portu C[/syntax]<br />Plik: d_led.c tylko sekcje z ustawienie timerow oraz procedura wywolania przerwan:.<br />[syntax=c]/*<br />// ustawienie TIMER0<br />TCCR0 |= ( 1&lt;&lt;WGM01 );// tryb CTC<br />TCCR0 |= ( 1&lt;&lt;CS02 ) | ( 1&lt;&lt;CS00 );// preskaler = 1024<br />OCR0 = 38;// dodatkowy podzial przez 39 (rej. przepelnienia)<br />TIMSK |= ( 1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br />}<br /><br />// ================= PROCEDURA OBS£UGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER0_COMP_vect)<br />{<br />static uint8_t licznik=1;// zmienna do przelaczania kolejno anod wyrwietlacza<br /><br />ANODY_PORT = (ANODY_PORT | MASKA_ANODY);// wygaszenie wszystkich wyswietlaczy<br /><br />if(licznik==1) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy1&#93; );// gdy zapalony wysw.1 podaj stan zmiennej c1<br />else if(licznik==2) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy2&#93; );// gdy zapalony wysw.2 podaj stan zmiennej c2<br />else if(licznik==4) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy3&#93; );// gdy zapalony wysw.3 podaj stan zmiennej c3<br />else if(licznik==8) LED_DATA = pgm_read_byte( &amp;cyfry&#91;cy4&#93; );// gdy zapalony wysw.4 podaj stan zmiennej c4<br /><br />ANODY_PORT = (ANODY_PORT &amp; ~MASKA_ANODY) | (~licznik &amp; MASKA_ANODY);// cykliczne przelaczanie kolejnej anody w kazdym przerwaniu<br /><br />// operacje cyklicznego przesuwania bitu zapalajacego anody w zmiennej licznik<br />licznik &lt;&lt;= 1;// przesuniecie zawartosci bitów licznika o 1 w lewo<br />if(licznik&gt;8) licznik = 1;// jesli licznik wiekszy niz 8 to ustaw na 1<br />}[/syntax]<br />A teraz fragment pliku main.c sekcja pokazuj_date_czas:<br />[syntax=c]void pokazuj_date_czas( TDATETIME * dt ){<br />uint8_t d1,d2,d3,d4;<br />uint16_t licznik = ( dt-&gt;hh*100 ) + ( dt-&gt;mm );<br />#if DATETIME_AS_STRING == 1<br />lcd_locate( 0, 0 );<br />lcd_str( dt-&gt;time );<br />lcd_locate( 1, 0 );<br />lcd_str( dt-&gt;date );<br />lcd_locate( 0, 15 );<br />lcd_int( dt-&gt;weekday );<br />lcd_locate( 1, 13 );<br />lcd_str_P( &amp;dni&#91; dt-&gt;weekday * 4 &#93; );<br />#endif<br /><br /><br />d1=licznik/1000;<br />if(d1) cy1=d1; else cy1=NIC;<br />d2=(licznik-(d1*1000))/100;<br />if(d2) cy2=d2; else cy2=(licznik&gt;999)?0:NIC;<br />d3=(licznik-(d1*1000)-(d2*100))/10;<br />if(d3) cy3=d3; else cy3=(licznik&gt;99)?0:NIC;<br />d4=(licznik-(d1*1000)-(d2*100)-(d3*10));<br />cy4=d4;<br /><br />}[/syntax]<br />Minuty wyswietlaja sie ok, lecz godziny jedynie mrugna na chwilke jak dioda gasnie lub zapala sie sterowana wyjsciem int z RTC.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 3 kwi 2016, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-04-03T12:29:58+01:00</updated>
<published>2016-04-03T12:29:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157610#p157610</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157610#p157610"/>
<title type="html"><![CDATA[Re: Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157610#p157610"><![CDATA[
<div class="quotetitle">romkli napisał(a):</div><div class="quotecontent"><br />Szukam na forum i nic nie moge znalezc. Nie mam pomysl, gdzie jest blad<br /></div><br />No popatrz ja też szukałem na forum i nie wiem gdzie jest błąd ..... <br /><br />Sorki że zażartowałem - ale powiem ci szczerze, że no LUDZKIE pojęcie przechodzi takie zadawanie pytań na forum. No jak widać i z tego co sam mówisz zrobiłeś BABOLE w swoim kodzie i teraz co ? .... forumowicze mają bawić się w zbiorowych jasnowidzów aby na odległość zajrzeć do tego twojego kodu z babolami ?<br /><br />No na miłość boską - panowie, litości ...... proszę - no proszę - pomyślcie chwilę nawet nad zadaniem pytania na forum bo ręce można załamać ...<br /><br />Pokaż że pan ten swój fragment kodu w którym ci nie wychodzi to wyświetlanie - opisz co w nim robisz i jakie masz efekty - a nie liczysz że ktoś podpowie ci gdzie zrobiłeś błąd podczas gdy ty kartkę z kodem schowałeś za plecami<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 kwi 2016, o 12:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[romkli]]></name></author>
<updated>2016-04-03T12:00:45+01:00</updated>
<published>2016-04-03T12:00:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157605#p157605</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157605#p157605"/>
<title type="html"><![CDATA[Dawca czasu i wyswietlenie czasu na wyswietlaczu LED]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15020&amp;p=157605#p157605"><![CDATA[
Wykonalem dawce czasu, ktory na lcd dziala. Chce, by czas byl wyswietlany na wyswietlaczu LED. Do dawcy czasu dodalem biblioteke z multipleksowaniem LED i minuty pokazuje dobrze, lecz godziny mrugnie na chwile jak zapala sie dzioda led ( ta od przerwan z RTC) . Szukam na forum i nic nie moge znalezc. Nie mam pomysl, gdzie jest blad   <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4613">romkli</a> — 3 kwi 2016, o 12:00</p><hr />
]]></content>
</entry>
</feed>