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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9216&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-19T23:38:22+01:00</updated>
<published>2014-11-19T23:38:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105045#p105045</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105045#p105045"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105045#p105045"><![CDATA[
<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=54">mirekk36</a> — 19 lis 2014, o 23:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-19T23:28:00+01:00</updated>
<published>2014-11-19T23:28:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105043#p105043</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105043#p105043"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105043#p105043"><![CDATA[
Kurde aż przekląłem...  A i uśmiałem się też. Gdybyś był obok, nie zdziwiłbym się gdybyś  mnie  niebieską i zieloną książką zdzielił przez łeb.  Pozostaje mi tylko zwalić winę na zmęczenie. Po oczywistej poprawce, wszystko śmiga. Ja już szukałem podobnych  tematów  i  na bliźniaczej  stronie wyszło, że ktoś miał skopaną atmegę. Już wymieniłem ją na  nową i to samo. Nie wiem skąd  wziąłem ten zapis, ale na pewno  bezmyślnie  skopiowałem i wkleiłem. Aż sam jestem ciekaw skąd.  Wielkie dzięki  Zapis preskalera  też poprawiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 19 lis 2014, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-19T23:06:37+01:00</updated>
<published>2014-11-19T23:06:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105032#p105032</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105032#p105032"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105032#p105032"><![CDATA[
Jarek - mówię ci <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> przemyśl ten zapis:<br /><br />[syntax=c]TIMSK |= (TOIE2&lt;&lt;1);[/syntax]<br /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> oj przemyśl - jak zobaczysz o co chodzi to się sam uśmiejesz <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />o jo jooooj - i nie tylko ten zapis - ..... robisz babole trudne do wyłapania bo to jak dysleksja wygląda <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie obraź się ale strasznie czeskie błędy popełniasz - więc skup się na tym co jest nie tak w tym zapisie - dojdź do tego sam - to ZROZUMIESZ a jak podpowiem to ZAPOMNISZ i po czasie znowu będziesz to robił<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lis 2014, o 23:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-19T22:01:11+01:00</updated>
<published>2014-11-19T22:01:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105012#p105012</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105012#p105012"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=105012#p105012"><![CDATA[
Hej  Poradziłem sobie z problemem <strong>poprzez wyłączenie Timera2</strong>  Nie wiecie może dla czego nie mogę go uruchomić? Może  komunikacja  TWI  go  wykorzystuje  choć przejrzałem bibliotekę i  nie widzę. Na razie wyłączam, ale  przydałby mi się bardzo, wiec  jeśli wiecie co to za konflikt to dajcie znać.<br /><br />Dodam tylko, że ustawienie preskalera  nic nie zmienia  dopiero  jak zezwolę na przerwania  od przepełnienia  to takie rzeczy się dzieją. <br /><br />[syntax=c]TIMSK |= (TOIE2&lt;&lt;1);//Timer/Counter2, Overflow Interrupt Enable[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 19 lis 2014, o 22:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-18T19:38:48+01:00</updated>
<published>2014-11-18T19:38:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104747#p104747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104747#p104747"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104747#p104747"><![CDATA[
tak w stopce mojej jest napisane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 lis 2014, o 19:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-18T19:30:03+01:00</updated>
<published>2014-11-18T19:30:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104744#p104744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104744#p104744"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104744#p104744"><![CDATA[
Jeszcze jedno pytanie (bo nie pamiętam czy już pytałem wcześniej).<br />Czy masz niebieską książkę Mirka?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 18 lis 2014, o 19:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-18T19:11:44+01:00</updated>
<published>2014-11-18T19:11:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104741#p104741</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104741#p104741"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104741#p104741"><![CDATA[
Atmega 32  taktowana zewnętrznym rezonatorem 16 MHz<br /><br />Wywaliłem wszystko co  zbędne  -  bez  żadnych zmian.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 lis 2014, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-18T19:07:07+01:00</updated>
<published>2014-11-18T19:07:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104740#p104740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104740#p104740"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104740#p104740"><![CDATA[
Możesz jeszcze przypomnieć na jakim to jest procesorze?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />A, wyrzuć do testów wszystkie includy których w tych początkowych testach<br />nie potrzebujesz. np 1wire, eeprom, ir... itd.<br />Zostaw tylko to co niezbędne na tym etapie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 18 lis 2014, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-18T18:35:01+01:00</updated>
<published>2014-11-18T18:35:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104737#p104737</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104737#p104737"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104737#p104737"><![CDATA[
No i wracam.  Skończyłem dziś systematyzowanie kodu  Teraz plik main wygląda tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;IR_UNI/ir_config.h&quot;<br />#include &quot;IR_UNI/ir_rc5.h&quot;<br />#include &quot;display_led/display_led.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;1Wire/crc8.h&quot;<br />#include &quot;1Wire/ds18x20.h&quot;<br />#include &quot;1Wire/onewire.h&quot;<br />#include &quot;ds3231/ds3231.h&quot;<br /><br />int main (void)<br />{<br />display_led_init();<br />i2cSetBitrate(200);<br />DS3231_init();<br />        sei();<br />        //DS3231_set_time( 22,5,0 );<br />        //DS3231_set_date( 20,14, 11, 14, 5 );<br />        while (1)<br /><br />        {<br />     <br />        pobierz_z_ds3231();<br />        przepisz();<br />rozbij_i_wyswietl ((GODZINY*100)+MINUTY,SEKUNDY,0,3);<br /><br />        }<br />}[/syntax]<br /><br />natomiast wyczyszczony plik do obsługi  LCD  wygląda tak:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;display_led.h&quot;<br /><br />uint16_t cyfry&#91;25&#93; PROGMEM =<br />{<br />(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),//cyfra0<br />(SEG_B|SEG_C),//cyfra1<br />(SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),//cyfra2<br />(SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),//cyfra3<br />(SEG_B|SEG_C|SEG_F|SEG_G),//cyfra4<br />(SEG_A|SEG_C|SEG_D|SEG_F|SEG_G),//cyfra5<br />(SEG_A|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),//cyfra6<br />(SEG_A|SEG_B|SEG_C|SEG_F),//cyfra7<br />(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),//cyfra8<br />(SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),//cyfra9<br /> ~(SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G|SEG_P),   //puste    10<br />(SEG_G),//minus    11<br />(SEG_A|SEG_D|SEG_E|SEG_F|SEG_G),//litera E 12<br />(SEG_E|SEG_G),//litera r 13<br />(SEG_A|SEG_B|SEG_E|SEG_F|SEG_G),//litera P 14<br />(SEG_D),//podkr   15<br />(SEG_C|SEG_D|SEG_E),//w16<br />(SEG_A|SEG_D|SEG_E|SEG_F),//c17<br />(SEG_G|SEG_C|SEG_E),//n18<br />(SEG_D|SEG_E|SEG_F|SEG_G),//t19<br />(SEG_A|SEG_B|SEG_C|SEG_E|SEG_F|SEG_G),//a20<br />(SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),//b21<br />(SEG_A|SEG_B|SEG_D|SEG_F|SEG_G),//on22<br />(SEG_A|SEG_C|SEG_D|SEG_E|SEG_G),//off23<br />(SEG_D|SEG_E|SEG_F),//l24<br />};<br /><br />void display_led_init(void)<br />{<br />LED_DATA_DIR = 0b11111111;// wszystkie katody  jako wyjscia<br />LED_DATA = 0b00000000;// wygaszenie wszystkich katod segmentów stanem niskim<br />ANODY_DIR |= 0b00111111;// 6 pinów portu wyswietlaczy jako wyjscia<br />ANODY_PORT |=  DA1 | DA2 | DA3 | DA4| DA5| DA6;// wygaszenie wszystkich  wyswietlaczy  anody<br />TCCR0 |=(1&lt;&lt;CS01);//|(1&lt;&lt;CS01) preskaler<br />TIMSK |= (1&lt;&lt;TOIE0);//zezwolenie na przerwanie compare match<br />TCCR2 |=(1&lt;&lt;WGM21);<br />TCCR2 |=(1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);<br />OCR2=255;<br />TIMSK |=(1&lt;&lt;OCIE2);<br />}<br /><br />void rozbij_i_wyswietl(uint16_t liczba_duzego_wyswietlacza, uint8_t liczba_malego_wyswietlacza,  uint8_t znak, uint8_t tryb_wyswietlania)<br />{<br />cyfra1=liczba_duzego_wyswietlacza/1000;<br />liczba_duzego_wyswietlacza=liczba_duzego_wyswietlacza%1000;<br />cyfra2=liczba_duzego_wyswietlacza/100;<br />liczba_duzego_wyswietlacza=liczba_duzego_wyswietlacza%100;<br />cyfra3=liczba_duzego_wyswietlacza/10;<br />cyfra4=liczba_duzego_wyswietlacza%10;<br />cyfra5=liczba_malego_wyswietlacza/10;<br />cyfra6=liczba_malego_wyswietlacza%10;<br />}<br />//----------------------------------------------------------------------------------------------------------------------------------------------------------------<br />ISR (TIMER0_OVF_vect)<br />{<br />PORTB &amp;= ~(0b11111111);// wyłączam cały port katod<br />PORTA &amp;= ~(0b00111111);// wyłączam cały port  anod<br />        static uint8_t licznik=0; //zmienna  do przełączania anod wyswietlacza<br /><br />        if (licznik==0){}<br />else if (licznik==1)<br />{<br />LED_DATA =pgm_read_byte ( &amp;cyfry&#91;cyfra1&#93;);<br />if (kropka==1) LED_DATA |= 0b00001000;<br />//if ((cursor==1)&amp;&amp;(przerwa==1))cyfra1=10;<br />ANODY_PORT |=0b00000001;<br />}<br />else if (licznik ==2)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry&#91;cyfra2&#93;);<br />if (kropka==2) LED_DATA |= 0b00001000;<br />//if ((cursor==2)&amp;&amp;(przerwa==1))cyfra2=10;<br />ANODY_PORT |=0b00000010;<br />}<br />else if (licznik ==3)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry&#91;cyfra3&#93;);<br />if (kropka==3) LED_DATA |= 0b00001000;<br />//if ((cursor==3)&amp;&amp;(przerwa==1))cyfra3=10;<br />ANODY_PORT |=0b00000100;<br />}<br />else if (licznik ==4)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry&#91;cyfra4&#93;);<br />if (kropka==4) LED_DATA |= 0b00001000;<br />//if ((cursor==4)&amp;&amp;(przerwa==1))cyfra4=10;<br />ANODY_PORT |=0b00001000;<br />}<br />else if (licznik ==5)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry&#91;cyfra5&#93;);<br />if (kropka==5) LED_DATA |= 0b00001000;<br />//if ((cursor==4)&amp;&amp;(przerwa==1))cyfra4=10;<br />ANODY_PORT |=0b00010000;<br />}<br />else if (licznik ==6)<br />{<br />LED_DATA =pgm_read_byte (&amp;cyfry&#91;cyfra6&#93;);<br />if (kropka==6) LED_DATA |= 0b00001000;<br />//if ((cursor==4)&amp;&amp;(przerwa==1))cyfra4=10;<br />ANODY_PORT |=0b00100000;<br />}<br />        ++licznik;<br />        if (licznik &gt;6)    licznik = 0;<br />}[/syntax]<br /><br />Trochę jednak rozjechało formatowanie.   Niestety  nic - dosłownie nic  nie zmieniło się w działaniu programu Nadal wyświetla godzinę na tle słabiej żarzących się zer. <br /><br />Zauważam nadal jeszcze takie zjawisko:<br /><br />Jeżeli w pętli głównej do funkcji wyświetlającej  wpiszę na przykład takie  wyrażenie:<br />[syntax=c]rozbij_i_wyswietl (1234,56,0,3);[/syntax]<br /> wszystko wyświetla się pięknie.<br />Tak samo wszystko działa, jeśli wyświetlę zmienną jako argument, której nadam wcześniej jakąś wartość. <br /><br />[syntax=c]uint16_t licznik;<br /><br />int main (void)<br />{<br />display_led_init();<br />i2cSetBitrate(200);<br />DS3231_init();<br />        sei();<br />        //DS3231_set_time( 22,5,0 );<br />        //DS3231_set_date( 20,14, 11, 14, 5 );<br />        while (1)<br /><br />        {<br />     <br />        licznik = 8745;<br />rozbij_i_wyswietl (licznik,0,0,3);<br /><br />        }<br />}[/syntax]<br /><br />Kiedy poszedłem o krok dalej i  przy pomocy  takiego kodu w pętli głównej :<br /><br />[syntax=c]while (1)<br /><br />        {<br />     <br />        licznik ++;<br />rozbij_i_wyswietl (licznik,0,0,3);<br />_delay_ms (100);<br /><br />        }[/syntax]<br /><br />Chciałem tym osiągnąć  to, żeby względnie wolno, tak aby dało się zauważyć jak  zmienia się wartość licznika, widoczne były kolejne cyfry na  wyświetlaczu. <br />Niestety to co zobaczyłem to  tylko cyfrę 0001 Tak jakby utknęło na delayu.  Ale nic.  Usunąłem delaya Pomyślałem, że najwyżej  będę widział tylko najwolniej zmieniającą się pierwszą cyfrę na wyświetlaczu. <br />Zobaczyłem jednak  liczbę 0088 ze słabiej  świecącym się segmentem &quot;E&quot;  Tak więc  wyciągam wniosek, że  liczenie odbywa się.  Jednak wiem, że uint_16_t potrafi zliczyć więcej niż do 99 (co sugeruje wynik)   wiec  ponownie  wprowadziłem opóźnienie  tym razem _delay_ms (10);  Tym razem wyświetliły mi się trzy zera od lewej i  na miejscu jedności  cyfra 2 nałożona  z cyfrą 1 Taka litera d z segmentem a. Wrodzona  dociekliwość  zmusiła mnie  do zwiększenia opóźnienia, jednak  większej wartości _delay_ms_ (50 dał mi stały  nie zmieniający  się wynik  0001. <br /><br />Choć funkcja  delay_ms() jest raczej  niezawodna,  postanowiłem za radą kolegów  powołać przerwanie od przepełnienia licznika. Korzystając z  mkAVRCalculator, i z  zakładki AVR Timer Calculator   postanowiłem skorzystać z  przerwania od timera 1 w trybie normal jak wynika z  tablicy z  Wówczas będę miał przerwanie co 10 ms  co przy  ciągłym dodawaniu będzie dało mi możliwość zaobserwowania zmian nawet tej  najszybciej  zmieniającej  się cyfry. <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/786/94830c60acc854e37e86e7e21517b147.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/786/94830c60acc854e37e86e7e21517b147.png" alt="Obrazek" /></a><br /><br /><br />Więc w main'ie  zrobiłem to tak:<br /><br />[syntax=c]volatile uint16_t licznik;<br /><br />int main (void)<br />{<br />display_led_init();<br />i2cSetBitrate(200);<br />DS3231_init();<br /><br />TCCR1B |= (CS11&lt;&lt;1)|(CS10&lt;&lt;1);//prescaler na 64<br />TIMSK |= (TOIE1&lt;&lt;1);//Timer/Counter1, Overflow Interrupt Enable<br /><br /><br />        sei();<br />        //DS3231_set_time( 22,5,0 );<br />        //DS3231_set_date( 20,14, 11, 14, 5 );<br />        while (1)<br /><br />        {<br />rozbij_i_wyswietl (licznik,00,0,3);<br />        }<br />}<br /><br />ISR (TIMER1_OVF_vect)<br />{<br />licznik++;<br />}[/syntax]<br /><br />Wynikiem jest,  zmieniająca się  z  częstotliwością 100 hz  cyfra &quot;0&quot; na przemian z &quot;1&quot; <br /><br />Nie wiem co jest powodem takiego zachowania <br /><br />Wyświetla mi prawidłowo zmienne stałe więc program do  LCD  (musi być) raczej jest OK. <br />Nie zwiększa mi  prawidłowo zmiennych  w pętli ani  przerwaniem ani delay'em <br /><br />Jakie wnioski z tego  wyciągać. Co mi radzicie jeszcze  sprawdzić  <br />Jeśli to obsługa  wyświetlacza LED, to o czym zapomniałem. Nie mam zupełnie pomysłów <br />i brakuje już mi  nerwów. Programy nie są obszerne, napisałem je wydaje mi się że przejrzyście więc  <br />bardzo proszę  rzućcie na nie okiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 18 lis 2014, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T21:39:15+01:00</updated>
<published>2014-11-16T21:39:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104388#p104388</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104388#p104388"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104388#p104388"><![CDATA[
A my wolelibyśmy, żebyś wrócił!<br />I swoją wiedzą dzielił się z innymi i starał się pomagać<br />mimo, że tak jak np. ja i inni Koledzy na forum.<br />Choć ja to akurat wiedzę mam maluteńką...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 lis 2014, o 21:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T21:35:58+01:00</updated>
<published>2014-11-16T21:35:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104387#p104387</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104387#p104387"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104387#p104387"><![CDATA[
Przeglądnę sobie to jeszcze raz. Przekonaliście mnie  Opiszę jak  należy.<br />Funkcja ob_i_wy znaczy oblicz i wyświetl  Kiedyś walczyłem  z tym i musiałem tę zmienną liczba1   zdefiniować  żeby móc przeprowadzić jakieś  działanie dzielenia   w dalszej części kodu.  Postaram się  ułożyć to wszystko, wrócić i Was  zaskoczyć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  (choć wolałbym nie wracać <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=786">Jarosław J</a> — 16 lis 2014, o 21:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T21:27:52+01:00</updated>
<published>2014-11-16T21:27:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104385#p104385</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104385#p104385"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104385#p104385"><![CDATA[
<div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Oto zawartość pliku d_led.c<br />[syntax=c]void ob_i_wy(uint16_t liczba_dw, uint8_t liczba_mw,  uint8_t znak, uint8_t tryb)<br />{<br />uint16_t liczba1;<br /><br />if (znak==0) //znak rowny 0 temperatura dodatnia<br />{<br />if ((liczba_dw &lt;=999) &amp;&amp; (tryb!=3)){cyfra1=10;} //pusty wyświetlacz jeśli 0<br />else{cyfra1=liczba_dw/1000;}<br />}<br />else //znak rozny od zera temperatura ujemna<br />{cyfra1=11;} //minus<br />liczba1=liczba_dw;<br />liczba1 %=1000;<br /><br />if ((liczba_dw&lt;=99)&amp;&amp;(tryb==0)){cyfra2=10;}//pusty wyświetlacz jeśli 0 temperatura  a 0 jeli godziny<br />else{cyfra2=liczba1/100;}<br /><br />liczba1%= 100;<br />cyfra3=liczba1/10;<br />cyfra4=liczba1%10;<br />cyfra5=liczba_mw/10;<br />cyfra6=liczba_mw%10;<br />}[/syntax]<br /></div><br />Nie bardzo wiem po co robisz takie kombinacje alpejskie no ale może jest w tym jakiś sens.<br />No to zobaczmy. Przypuśćmy że jest 17:21:35<br />Wtedy do swojej funkcji przekazujesz 1721, 35, 0, 3<br />[syntax=c]void ob_i_wy(1721, 35,  0, 3);[/syntax]<br />co dzieje się w funkcji<br />pierwszy if się wykona bo znak == 0<br />a w tym ifie else bo liczba_dw&gt;999<br />otrzymamy cyfra1=1<br />Następny if się nie wykona bo liczba_dw&gt;999<br />za to wykona się else i co otrzymamy?<br />cyfra2=liczba1/100<br />tylko pytanie ile wynosi liczba1? <br />Bo jakoś nie widzę do tej pory żebyś przypisywał jej jakąś wartość.<br />A ponieważ to zmienna lokalna to mamy jakąś wartość losową.<br />To chyba tu już jakiś babol się wkrada?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 lis 2014, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-16T21:23:25+01:00</updated>
<published>2014-11-16T21:23:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104382#p104382</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104382#p104382"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104382#p104382"><![CDATA[
<div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />i zacznę od pewnego momentu od nowa.<br /></div><br />Tutaj na tym etapie sprawdzania przyjrzyj się przykładowi z BB multipleksowania ale też koniecznie rzuć proszę okiem na rozdział &quot;Wstęp do systemów czasu rzeczywistego&quot; żeby zobaczyć co to znaczy odpalać timerki programowe i robić kilka rzeczy naraz w pętli głównej - każda w swoim czasie i na pewno nie milion razy na sekundę bo to cię właśnie gubi wbrew pozorom - to uproszczenie, jak je nazwałeś.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 lis 2014, o 21:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T21:19:29+01:00</updated>
<published>2014-11-16T21:19:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104380#p104380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104380#p104380"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104380#p104380"><![CDATA[
Dzięki Mirku! Poświecę dzisiejszy wieczór na ustalenie tego wszystkiego, cofnę się jak mi doradziłeś i zacznę od pewnego momentu od nowa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 16 lis 2014, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-16T21:13:41+01:00</updated>
<published>2014-11-16T21:13:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104378#p104378</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104378#p104378"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104378#p104378"><![CDATA[
<div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Zrobiłem to w pętli głównej bo tak jest przejrzyściej według mnie niż na te osiem czy dziesięć linijek miałbym tworzyć funkcję.<br /></div><br /><br />Powtórzę tylko za kolegą MirkoT ..... niestety takie podejście, (uwierz mi nie pisze tego żeby ci dogryźć bo widzę że się uczysz i szukasz drogi) ... ale niestety to podejście to MASKARA nad masakrami ...<br /><br />jak tylko dojdziesz do kolejnego etapu programowania to zobaczysz że FUNKCJE to PODSTAWA PODSTAW w C, dlatego od razu słuchaj tych rad które podaje MirkoT bo dobrze prawi<br /><br />tak samo jak odpalanie tego MILION razy na sekundę - toż samo to stwarza ci już dziesiątki problemów bo nie panujesz nad tym co robisz. Określaj sobie CO I ILE MA TRWAĆ lub CO ILE MA SIĘ WYKONYWAĆ<br /><br />jak tworzysz funkcję to nadawaj jej nazwę, która coś mówi nie oszczędzaj słów typu<br /><br />ob_i_wo() .... co to jest ? równie dobrze można by napisać krócej: o_i_w() ... albo jeszcze krócej oiw() albo jeszcze o() .... jak myślisz do czego to prowadzi ? nie dość że sam się w tym gubisz to pokazujesz kod podczas zadawania pytania który jest KOMPLETNIE nieczytelny. Po to pokazuję w Bluegooku podejście gdy tworzę funkcje czy do uarta czy do LCD itp - pisz więcej np:<br /><br />odbierz_i_wyslij()<br /><br />nie wiem czy akurat to ma robić twoja funkcja ale podaję ci przykład jak podejść do nadawania nazw - czy to nie byłoby czytelniejsze ? jak myślisz ? szczególnie dla osób którym zadajesz pytanie ....<br /><br /><div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Przykłąd MirkoT nie zadziała ponieważ jak już napisałem zmienne mam tylko przez krótką chwilę Jakiekolwiek opóźnienie np delayem, od razu je zeruje i na wyświetlacz trafia 0000.<br /></div><br />Gwarantuję ci że zadziała - tylko ty najpierw zrobiłeś błąd jeśli chodzi o sam sposób wyświetlania - a teraz próbujesz robić coś dalej i tak brniesz w kolejne dziesiątki błędów ? po co ? po co .... po co pisać w ogóle dalej kod jeśli nie przetestowałeś sobie POD KAŻDYM względem wyświetlania -  a widać że kompletnie tego nie zrobiłeś jak na razie ...<br /><br />więc moja porada - odłóż na chwilę ten kod na bok<br /><br />załóż nowy projekt testowy<br /><br />i stwórz w pętli głównej (Uwaga!) Timer programowy i za jego pomocą zmieniaj dane na wyświetlaczu co sekundę i sprawdź jak się zachowuje wyświetlanie - jeśli źle - to schodzisz o poziom niżej do swojego piekła i naprawiasz wyświetlanie rozumiesz ? <br /><br />to KOMPLETNIE nie ma NIC wspólnego z tym czy ty umiesz jakieś tam dane przepisać z unii czy nie ... zrozum kompletnie nic ...<br /><br />więc trzeba zrobić w tył zwrot i taką drogą iść dalej ... <br /><br />obejrzeć też poradnik z bloga o pułapkach programowych:<br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2014/04/puapki-programowe-debuger-na-jednej.html" >http://mirekk36.blogspot.com/2014/04/pu ... ednej.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 lis 2014, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T20:43:54+01:00</updated>
<published>2014-11-16T20:43:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104374#p104374</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104374#p104374"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104374#p104374"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A według mnie to właśnie w ob_i_wy lub w przerwaniu masz coś skopane. Stawiam bardziej na funkcję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /></div><br /><br />Funkcję ob_i_wy(...) zamieściłem w całości powyżej.  Uważam że też jest prosta, i nie powinna stwarzać takich problemów Używałem jej w  tej  formie  w moim wcześniejszym projekcie przy odczycie z PCFa nie stwarzała żadnych problemów, jednak tam odczytywałem PCFa bezpośrednio To znaczy  na odczyt i konwersję każdej  wartości pamięci miałem właśnie oddzielną funkcję.   Gdybyś mógł na nią spojrzeć. Może  zauważysz coś czego sam nie dostrzegam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 16 lis 2014, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T20:32:33+01:00</updated>
<published>2014-11-16T20:32:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104373#p104373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104373#p104373"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104373#p104373"><![CDATA[
<div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Tym czasem kiedy  nie mogę poprawnie odczytać unii jak  mi się wydaje,<br /></div><br />no właśnie wydaje Ci się. Gdybyś nie mógł odczytać te cyfry by Ci nie &quot;przebijały&quot; <br />Powtórzę - to nie tu jest problem<br /><br /><div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />wszystko tkwi w pętli głównej, i tak jest przejrzyściej.<br /></div><br />Nie zdecydowanie nie jest przejrzyściej! Szczególnie gdy dajesz ten kod do czytania innym osobom<br />i prosisz je o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br /><div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Wcześniej  również napisałem że jeśli przypiszę  na sztywno zmienne  wysyłane do  funkcji ob_i_wy   sama funkcja  działa doskonale. Stąd właśnie mój  wniosek, że  to  z  przepisaniami lub  pobieraniem danych  z unii musi być problem.<br /></div><br />A według mnie to właśnie w ob_i_wy lub w przerwaniu masz coś skopane. Stawiam bardziej na funkcję <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />No nie obrażaj się. Sam niewiele wiem i dla tego tu jestem. Po prostu NA RAZIE dla mnie jest  tak przejrzyściej Nie zmienia to nic  w  działaniu programu. (albo w  jego nie działaniu)<br /></div><br />Nie obrażam się. Po prostu przyznaję się do swojej niewiedzy<br />a tą odrobiną którą mam staram się podzielić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 lis 2014, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T20:30:22+01:00</updated>
<published>2014-11-16T20:30:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104372#p104372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104372#p104372"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104372#p104372"><![CDATA[
No nie obrażaj się. Sam niewiele wiem i dla tego tu jestem. Po prostu NA RAZIE dla mnie jest  tak przejrzyściej Nie zmienia to nic  w  działaniu programu. (albo w  jego nie działaniu)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 16 lis 2014, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T20:26:11+01:00</updated>
<published>2014-11-16T20:26:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104371#p104371</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104371#p104371"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104371#p104371"><![CDATA[
<div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />To nie jest  jeszcze projekt tylko  jego zarys.  Podstawowa funkcjonalność to odczyt godziny  i  tego uprościć się nie da. Zrobiłem to w pętli głównej  bo tak jest przejrzyściej  według mnie  niż  na  te  osiem czy  dziesięć linijek  miałbym tworzyć  funkcję.<br /></div><br />Jest taka książka &quot;Czysty kod&quot; i tam mądrzy ludzie, profesjonaliści a nie tacy laicy jak ja napisali, że dobra funkcja to właśnie taka<br />która ma te 8 czy 10 linijek kodu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> Ale co ja tam wiem. Jestem całkowicie początkujący.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 lis 2014, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T20:22:44+01:00</updated>
<published>2014-11-16T20:22:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104369#p104369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104369#p104369"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104369#p104369"><![CDATA[
To nie jest  jeszcze projekt tylko  jego zarys.  Podstawowa funkcjonalność to odczyt godziny  i  tego uprościć się nie da. Zrobiłem to w pętli głównej  bo tak jest przejrzyściej  według mnie  niż  na  te  osiem czy  dziesięć linijek  miałbym tworzyć  funkcję. Po uporaniu  się z  tym problemem na pewno rozbiję to  na bloki  Tym czasem kiedy  nie mogę poprawnie odczytać unii jak  mi się wydaje,  wszystko tkwi w pętli głównej, i tak jest przejrzyściej. <br />Jak  już pisałem próbowałem odczytywać to i przepisywać z różną częstotliwością  wykorzystywałem opóźnienia delay'em i przerwaniem od  timera wewnętrznego. Wszystko sprowadzało się do tego  że po  wprowadzeniu opóźnienia powyżej 100ms  na wyświetlaczu  są same zera   Im opóźnienie mniejsze tym godzina wyświetla się wyraźniej.  Wybacz ale jestem przekonany, ze jeśli dam opóźnienie  od  przerwania  zewnętrznego  efekt  będzie dokładnie ten sam. Dla tego przynajmniej na razie nie widzę sensu ingerowania  w sam układ. Jeśli jesteś  mi w stanie to  bardziej uzasadnić  nie będę się upierał, i zrezygnuję  z jakiejś funkcjonalności i dołączę ten sygnał.  Jak  już napisałem wcześniej, wszystkie nóżki mam już rozdysponowane.<br /><br />Wcześniej  również napisałem że jeśli przypiszę  na sztywno zmienne  wysyłane do  funkcji ob_i_wy   sama funkcja  działa doskonale. Stąd właśnie mój  wniosek, że  to  z  przepisaniami lub  pobieraniem danych  z unii musi być problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 16 lis 2014, o 20:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T20:12:02+01:00</updated>
<published>2014-11-16T20:12:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104366#p104366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104366#p104366"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104366#p104366"><![CDATA[
Jarosławie, a ja Ci radzę... zrób jak mówię <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br />Ale to Twój projekt i zrobisz jak zechcesz.<br />Przepraszam ale Twój kod czyta się nienajlepiej<br />więc lepiej go uprościć. W pętli głównej zostawić<br />tylko to co być musi.<br />Powtórzę jeszcze raz. <br />Po co miliony razy na sekundę odczytujesz DS'a?<br />Po co miliony razy na sekundę ustawiasz zmienne<br />które się w tym czasie nie zmieniają?<br />Ale rób jak uważasz.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />Szukasz rozwiązania nie tam gdzie jest problem. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /><br />Skoro tak się dzieje to szukaj w:<br />procedurze ob_i_wy()<br />obsłudze multipleksowania czyli w przerwaniu<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 8 minutach ]</span></strong><br /><br /><div class="quotetitle">Jarosław J napisał(a):</div><div class="quotecontent"><br />Spróbuję jeszcze raz opisać sedno. <br /><br />Przykłąd MirkoT nie zadziała ponieważ jak już napisałem  zmienne  mam tylko przez krótką  chwilę  Jakiekolwiek opóźnienie  np  delayem, od razu  je zeruje i na wyświetlacz trafia 0000. Wydaje mi się że  winne jest samo pobieranie  zmiennych  z unii lub ich  przepisywanie  do  zmiennych  globalnych.<br /></div><br />Ten przykład &gt;musi&lt; zadziałać bo tak właśnie się to robi <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=189">MirkoT</a> — 16 lis 2014, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jarosław J]]></name></author>
<updated>2014-11-16T20:01:43+01:00</updated>
<published>2014-11-16T20:01:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104359#p104359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104359#p104359"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104359#p104359"><![CDATA[
Spróbuję jeszcze raz opisać sedno. <br /><br />W pętli głównej  programu umieszczam tylko te  polecenia<br /><br />[syntax=c]while (1)<br /><br />        {<br />DS3231_get_datetime( &amp;datetime );<br />DS3231_get_temp( &amp;temperature );<br />sekundy =  datetime.ss;<br />minuty = datetime.mm;<br />godziny = datetime.hh;<br />dzien_tygodnia = datetime.dayofwek;<br />dzien = datetime.day;<br />miesiac = datetime.month;<br />rok = datetime.year;<br />wiek = datetime.century;<br /><br />ob_i_wy  (((godziny*100)+minuty),sekundy,0,3);<br />        }[/syntax]<br />czyli pobieram zmienne z unii i przepisuję je  do zmiennych globalnych <br />Zaraz potem  w funkcji ob_i_wy() wrzucam je na wyświetlacz<br /><br />Jeśli robię to raz  za razem jak  jest  w tym przykładzie  to wyświetla mi poprawną godzinę, a na wyświetlaczu  delikatnie prześwitują mi zera na każdej z pozycji. <br /><br />Jeśli wprowadzę jakiekolwiek opóźnienie między  przepisaniem zmiennych  a ich wyświetleniem  to na wyświetlaczach  mam wyłącznie 0000 <br /><br />Jeśli w pętli  przypiszę bezpośrednio <br />[syntax=c]sekundy =  30;<br />minuty =20;<br />godziny = 10;[/syntax]<br /><br />Wyświetlacz bez najmniejszego problemu wyświetla to w  prawidłowy sposób. Bez  żadnego przebicia zer. <br /><br />Stąd mój  wniosek  ze zmienne pobrane  z unii  pobierane są tylko na chwilę  a potem coś je zeruje. Im szybciej  je wyświetlę tym wyraźniej  je widać <br /><br />Nie potrafię wstawić jakiejś pułapki żeby  wyczaić miejsce  gdzie się te zmienne  zerują  ponieważ  program jest  zbyt porosty. Nie potrafię znaleźć takiego  miejsca  gdzie mógłbym to zerowanie sprawdzić <br /><br />Dodam jeszcze , ze jak  ustawię bitrate na 50  to wyświetlane są praktycznie same zera delikatnie  mocniej  świecą  segmenty  wyświetlanej  godziny <br />Najwyraźniej   godzinę widać  przy   bitrate powyżej  200. <br /><br />Nie znam jeszcze na tyle dobrze  zasad przepisywania tych  zmiennych  z unii żeby  móc  wywnioskować cokolwiek, dla tego  proszę o pomoc.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Przykłąd MirkoT nie zadziała ponieważ jak już napisałem  zmienne  mam tylko przez krótką  chwilę  Jakiekolwiek opóźnienie  np  delayem, od razu  je zeruje i na wyświetlacz trafia 0000. Wydaje mi się że  winne jest samo pobieranie  zmiennych  z unii lub ich  przepisywanie  do  zmiennych  globalnych.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=786">Jarosław J</a> — 16 lis 2014, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-11-16T19:56:54+01:00</updated>
<published>2014-11-16T19:56:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104357#p104357</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104357#p104357"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104357#p104357"><![CDATA[
A ja mam takie pytanko. Po co setki, tysiące razy robisz to przypisanie w pętli głównej?<br />Może zrobiłbyś tak.<br />Ten DS na pewno może wywoływać przerwanie co 1 sek.<br />To dlaczego z tego nie skorzystasz?<br />Podłącz nóżkę DS to któregokolwiek pinu procesora który może obsłużyć przerwanie zewnętrzne.<br />W procedurze obsługi przerwania ustaw flagę np. &quot;sekunda&quot;<br />w pętli głównej wpisz taki kod:<br />[syntax=c]if (sekunda) {<br />   odczytaj_czas();<br />   ustaw_zmienne_do_wyswietlania_czasu();<br />   sekunda=0<br />}[/syntax]<br />I to wszystko co potrzebujesz mieć w pętli głównej<br />Oczywiście odnośnie odczytu czasu i jego wyświetlania.<br />Zobacz jaka oszczędność czasu procesora i jak upraszcza się pętla główna<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 16 lis 2014, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-11-16T19:37:30+01:00</updated>
<published>2014-11-16T19:37:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104351#p104351</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104351#p104351"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104351#p104351"><![CDATA[
Ja z kolei nie rozumiem problemu żeby pomóc ... musiałbyś precyzyjniej opisać i podać fragment kodu o który chodzi - bo z tego opisu 3 posty wyżej to żeby dojść co tam jest nie tak musiałbym chyba mieć taki sam układ na biurku żeby móc go testować i zobaczyć w czym rzecz ... <br /><br />trzeba zawsze postarać nauczyć się wyizolować problem i małymi kawałkami rozwiązywać kłopoty w kodzie - zamiast pytać co jest nie tak w całym kodzie bo coś tam się źle wyświetla ... przynajmniej ja nie umiem inaczej podejść ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 lis 2014, o 19:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-11-16T19:33:43+01:00</updated>
<published>2014-11-16T19:33:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104350#p104350</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104350#p104350"/>
<title type="html"><![CDATA[Re: DS3231 i odczyt Prosta sprawa, ale kłopotliwa]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9216&amp;p=104350#p104350"><![CDATA[
Sluchaj bardzo chcialbym Ci pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> tylko ,ze jako poczatkujacy moge nie miec tyle dosw <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Ale probujac znalezc glowny problem. To na chwile wyelminuj sobie unie/struktury i zobacz czy bedziesz nadal miec ten sam problem. Wtedy bedziemy wiedziec gdzie dalej szukac problemu <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=4344">RafPe</a> — 16 lis 2014, o 19:33</p><hr />
]]></content>
</entry>
</feed>