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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-07-26T20:32:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=15863&amp;mode</id>
<entry>
<author><name><![CDATA[Mnich16]]></name></author>
<updated>2016-07-26T20:32:30+01:00</updated>
<published>2016-07-26T20:32:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164781#p164781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164781#p164781"/>
<title type="html"><![CDATA[Re: PCF8583_problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164781#p164781"><![CDATA[
Tutaj kod   jest to kod z BB dodane jest tylko wyświetlanie na wyświetlaczu diodowym 8x8 na max7219, ale sprawdzałem też czy po wymazaniu z programu wszystkiego co dotyczy maxa coś pomoże ale jednak nie max nie jest tutaj winny. Układ RTC jest podłączony tak jak w BB na stronie 297 jednak zauważyłem  że to opóźnienie zależy od kondensatora C13 gdy kondensator mam taki jak w książce czyli 22pF to występuję właśnie to opóźnienie a gdy ten kondensator zamienie na mniejszy próbowałem z 10pF oraz 5.6pF to opóźnienie zmniejszyło się do 1 sekundy, czy mogę bezkarnie ten kondensator C13 zamienić na mniejszy?  pozostałe dwa kondensatory mam jak w książce czyli 100nF oraz 47uF       mój RTC jest firmy NXP    <br /><br /><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 &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br /><br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;max7219.h&quot;<br /><br />// **** UWAGA - wybierz właciwy adres jak niżej **************<br />#define PCF8583_ADDR 0xA0// gdy A1 --&gt; GND<br />//#define PCF8583_ADDR 0xA2// gdy A1 --&gt; VCC<br /><br /><br /><br />#define key1 (1&lt;&lt;PA6)<br />#define key2 (1&lt;&lt;PA7)<br /><br />#define key3 (1&lt;&lt;PC7)<br /><br /><br /><br />volatile uint8_t int0_flag=1;// flaga zmieniana w przerwaniu i sprawdzana w pętli głównej<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec);<br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd);<br /><br /><br /><br /><br />uint8_t i;<br /><br /><br /><br />int main(void) {<br /><br />////////////////////////////////////////////////MAX_INIT////////////////////////////////////////////////////////////////////<br /><br /><br />max7219_init();<br /><br />        uint8_t ic = 0;<br /><br />       // inicjalizacja matryc<br />        for(ic=0; ic&lt;MAX7219_ICNUMBER; ic++) {<br />                max7219_shutdown(ic, 1); //power on<br />                max7219_test(ic, 0); //test mode off<br />                max7219_decode(ic, 0); //use led matrix<br />                max7219_intensity(ic, 2); //intensity<br />                max7219_scanlimit(ic, 7);<br />        }<br /><br /><br /><br /><br /><br /><br /><br />//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br /><br /><br /><br />DDRA &amp;=~key1|key2;<br />PORTA |=key1|key2;<br /><br />DDRC &amp;=~key3;<br />PORTC |=key3;<br /><br />uint8_t key_lock, key_lock2, key_lock3;<br /><br />//uint8_t i=0;<br /><br />// Przerwanie INT0<br /><br />/////////////////////////////////////////////////////////////////Atmega32////////////////////////////////////////////////////<br /><br />MCUCR |= (1&lt;&lt;ISC01);// wyzwalanie zboczem opadającym<br />GICR |= (1&lt;&lt;INT0);// odblokowanie przerwania<br /><br />//////////////////////////////////////////////////////////////////Atmega644//////////////////////////////////////////////<br /><br />//EICRA|=(1&lt;&lt;ISC01);<br />//EIMSK|=(1&lt;&lt;INT0);<br /><br />PORTD |= (1&lt;&lt;PD2);// podciągnięcie pinu INT0 do VCC<br /><br /><br />// definiujemy sobie dla polepszenia czytelności programu typ wyliczeniowy<br />// wskazujący nam później na odpowiednie indeksy w tablicy (buforze)<br />enum {ss=1, mm, hh};<br />uint8_t bufor&#91;4&#93;;// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br /><br /><br />lcd_init();<br /><br />i2cSetBitrate( 100 ); // USTAWIAMY prędkość 100 kHz na magistrali I2C<br /><br />sei();<br /><br />/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br />// Ustawianie czasu na godzinę: 18:34:27<br /><br />bufor&#91;0&#93; = 0;// setne części sekundy<br />bufor&#91;1&#93; = dec2bcd(27);// sekundy<br />bufor&#91;2&#93; = dec2bcd(34);// minuty<br />bufor&#91;3&#93; = dec2bcd(18);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br /><br />while(1) {<br /><br /><br /><br /><br /><br /><br />///////////////////////////////////////ODCZYT Z ZEGARKA///////////////////////////////////////////////////////////////////////<br /><br />if ( int0_flag ) {<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br />sekundy = bcd2dec( bufor&#91;ss&#93; );<br />minuty = bcd2dec( bufor&#91;mm&#93; );<br />godziny = bcd2dec( bufor&#91;hh&#93; );<br /><br />// wyświetlenie czasu na LCD<br />lcd_locate(1,0);<br />if( godziny &lt; 10 ){<br />lcd_str(&quot;0&quot;);<br />max7219_puts_int(0, 0, 0, 1, 1, 0);<br /><br /><br />}<br /><br /><br /><br /><br />lcd_int(godziny);<br />max7219_puts_int(0, 0, godziny, 1, 1, 0);<br />lcd_str(&quot;:&quot;);<br /><br /><br /><br /><br /><br />if( minuty &lt; 10 ){<br />lcd_str(&quot;0&quot;);<br />max7219_puts_int(23, 0, minuty, 1, 1, 0);<br /><br />}<br /><br /><br />lcd_int(minuty);<br />   max7219_puts_int(14, 0, minuty, 1, 1, 0);<br /><br />lcd_str(&quot;:&quot;);<br /><br /><br />if( sekundy &lt; 10 ) lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br /><br /><br />max7219_setPixel(12, 2, 1);<br />max7219_setPixel(12, 5, 1);<br /><br /><br />int0_flag=0;<br /><br />max7219_display();<br />}<br /><br /><br />///////////////////////////////////////ZMIANA_MINUT///////////////////////////////////////////////////////////////////////<br /><br /><br /><br /><br />if( !key_lock &amp;&amp; !(PINA &amp; key1)){<br /><br />key_lock=1;<br />//i++;<br /><br /><br /> uint8_t a=minuty;<br /> a=a+1;<br /> if(a&gt;59) a=0;<br /> bufor&#91;1&#93;=dec2bcd(0);<br /> bufor&#91;2&#93;=dec2bcd(a);<br /> TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br /><br />}<br /><br /><br />else if ( key_lock &amp;&amp; (PINA &amp; key1)) key_lock++;<br /><br /><br /><br /><br />///////////////////////////////////ZMIANA_GODZIN///////////////////////////////////////////////////////////////////////<br /><br /><br /><br /><br />if( !key_lock2 &amp;&amp; !(PINA &amp; key2)){<br /><br />key_lock2=1;<br />//i++;<br /><br /><br /> uint8_t b=godziny;<br /> b=b+1;<br /> if(b&gt;23) b=0;<br /> bufor&#91;1&#93;=dec2bcd(0);<br /> //bufor&#91;2&#93;=dec2bcd(a);<br /> bufor&#91;3&#93;=dec2bcd(b);<br /> TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor );<br /><br /><br />}<br /><br /><br />else if ( key_lock2 &amp;&amp; (PINA &amp; key2)) key_lock2++;<br /><br /><br /><br /><br /><br /><br /><br /><br />//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br /><br /><br /><br /><br /><br /><br /><br /><br />if( !key_lock3 &amp;&amp; !(PINC &amp; key3)){<br /><br />key_lock3=1;<br />i++;<br /><br /><br /><br /><br /><br />}<br /><br /><br />else if ( key_lock3 &amp;&amp; (PINC &amp; key3)) key_lock3++;<br /><br /><br /><br /><br />lcd_locate(0,0);<br />lcd_int(i);<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />}<br /><br /><br /><br /><br />}<br /><br /><br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />}<br /><br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10)&lt;&lt;4) | (dec % 10);<br />}<br /><br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd) {<br />    return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5032">Mnich16</a> — 26 lip 2016, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-07-26T19:52:52+01:00</updated>
<published>2016-07-26T19:52:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164779#p164779</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164779#p164779"/>
<title type="html"><![CDATA[Re: PCF8583_problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164779#p164779"><![CDATA[
<div class="quotetitle">Mnich16 napisał(a):</div><div class="quotecontent"><br />Na ten moment nie wrzucam jeszcze kodu ani schematu gdyż wydaję mi się że kod nie jest tutaj problemem<br /></div><br />I masz w 100% rację - &quot;wydaje ci się&quot;<br /><br />Tym bardziej, że widać po podpisie, że masz Bluebooka w którym czy tego chcesz czy nie jest opisany sposób komunikacji z tym scalakiem i to na dwa sposoby - czyli zarówno za pomocą sprzętowego I2C (TWI) jak również programowego I2C ... czy ty gdzieś tam widziałeś w opisie w książce żeby takie opóźnienia występowały o których piszesz ? No zastanów się chwilę hmmm ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 26 lip 2016, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mnich16]]></name></author>
<updated>2016-07-26T18:48:27+01:00</updated>
<published>2016-07-26T18:48:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164772#p164772</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164772#p164772"/>
<title type="html"><![CDATA[PCF8583_problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15863&amp;p=164772#p164772"><![CDATA[
Cześć robię sobie zegarek na pcf8583 i mam taki problem że po załączeniu zasilania układ RTC dopiero po chwili zaczyna odmierzać czas dopiero po kilku sekundach od załączenia zasilania i chciałem się spytać czy ten układ tak po prostu ma czy może rtc powinien wystartować od razu po załączeniu zasilania?.  Ten układ rtc ma pin int na którym co sekunde jest zmieniana wartość logiczna i wydaję mi się że że nawet jeśli ten układ pcf by podłączyć do zasilania (sam układ bez procka) to i tak na tym pinie co sekunde powinien zmieniać się stan logiczny prawda? Pin int zegarka podłączyłem sobie także pod diodę żeby było widać czy układ pracuję i dioda na tym pinie miga co sekundę ale dopiero po kilku sekundach od załączenia zasilania i dopiero jak dioda zacznie migać po tych kilku sekundach to godzina na lcd sie zmienia. A sprawdzałem miernikiem i po załączeniu zasilania napięcie na rtc pojawia się natychmiast ale zegarek startuję dopiero po chwili. W czasie po załączeniu zasilania gdy zegarek jeszcze nie liczy to program na procku normalnie w tym czasie działa inne zadania są wykonyuwane nie ma zawieszenia. Na ten moment nie wrzucam jeszcze kodu ani schematu gdyż wydaję mi się że kod nie jest tutaj problemem bowiem pin Int zegarka powinien zmieniać stan nawet na sucho bez procka tak mi się wydaję.<br />A po tych kilku sekundach działa wszystko.    <br /><br />Powiedzcie mi proszę czy to jest normalne zachowanie tego układu? czy coś jest nie tak?    Jeśli trzeba to wrzucę kod.<br /><br />Cały układ mam na zestawie uruchomieniowym poza układem zegarka, zegarek jest na stykówce.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5032">Mnich16</a> — 26 lip 2016, o 18:48</p><hr />
]]></content>
</entry>
</feed>