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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-13T11:09:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7659&amp;mode</id>
<entry>
<author><name><![CDATA[danielos]]></name></author>
<updated>2014-07-13T11:09:19+01:00</updated>
<published>2014-07-13T11:09:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87442#p87442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87442#p87442"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87442#p87442"><![CDATA[
Tutaj masz moją bibliotekę działającą:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7033.html" >topic7033.html</a><!-- l --><br /><br />sprawdź czy z moją biblioteką działa.<br /><br />Czy Twój program zawiesza się w jakimś miejscu, czy nie?<br />Jakie cuda pokazuje? Czy się one zmieniają czy są stałe?<br />Napisz kod do samej obsługi pcf oraz do wyświetlania danych z niego, żeby sprawdzić czy Twój problem jest wynikiem programowym czy sprzętowym,<br /><br />W Twoim kodzie widziałem, że podczas odczytu czy zapisu danych po I2C nie używasz mniejszych funkcji do odczytu czy zapisu pojedynczego bajtu, oraz funkcji start i stop - taka mała uwaga, bo łatwiej się czyta kod gdy jest on podzielony na funkcje.<br /><br />Podczas odczytu danych z pcf wykonujesz za każdym razem wysłanie startu, adresu, rejestru, startu, adresu z bitem do odczytu. Wystarczy raz, na samym początku procedury odczytu danych. <br />Podczas odczytywania kolejnych danych zapomniałeś o wysyłaniu potwierdzenia przez mastera do slave (jeżeli się nie pomyliłem):<br /><br />[syntax=c]TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEA)|(1&lt;&lt;TWEN);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=898">danielos</a> — 13 lip 2014, o 11:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-12T15:53:43+01:00</updated>
<published>2014-07-12T15:53:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87360#p87360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87360#p87360"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87360#p87360"><![CDATA[
Kto zaprojektował ten pokręcony scalak .... chyba wykopie tego PCF8563 z płytki EVB 5.1 i wsadzę na to miejsce starego poczciwego PCF8583 bo widzę że napisanie poprawnego kodu obsługi tego potworka przerasta nie tylko moje możliwości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 12 lip 2014, o 15:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danielos]]></name></author>
<updated>2014-07-09T20:33:54+01:00</updated>
<published>2014-07-09T20:33:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87102#p87102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87102#p87102"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87102#p87102"><![CDATA[
Witam.<br /><br />Posiadasz PCF8563 czy PCF8583. To są dwa zegary rtc ale podłączenie jest inne. Na schemacie masz użyty PCF8583. <br />Dla PCF8563 nie ma pinu adresowego A0 - zamiast tego jest INT. Natomiast w miejscu INT znajduje się CLKOUT.<br />Kondensator, który jedną nóżką jest podłączony do OSCI, z drugiej strony ma być podłączony do masy a nie do zasilania.<br /><br />Sprawdź podłączenie z notą katalogową dla PCF8563<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=898">danielos</a> — 9 lip 2014, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-09T11:45:12+01:00</updated>
<published>2014-07-09T11:45:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87056#p87056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87056#p87056"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=87056#p87056"><![CDATA[
Czyżby programowa obsługa tego PCF-a jest tak skomplikowana że nie da się tego zaadaptować do mojego programu? .... no to w takim razie wyłożyłem się na całego ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 9 lip 2014, o 11:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-08T12:00:17+01:00</updated>
<published>2014-07-08T12:00:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86989#p86989</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86989#p86989"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86989#p86989"><![CDATA[
Schemat jest tu mniej istotny bo urządzenie działa ale w nieco innej wersji bo zamiast modułów pomiarowych Haala są wzmacniacze operacyjne z dołączonym bocznikiem z rezystorów mocy.<br />Urządzenie działa w moim spółdzielczym mieszkaniu i jestem z niego zadowolony choć nie działa do końca zgodnie z założeniami. Nie jestem już młodzieniaszkiem [54na karku] a to nie sprzyja łatwemu przyswajaniu wiedzy o &quot;C&quot; która zaczęła się dwa lata temu. Dlatego w programie nie ma złożonych funkcji bo jeszcze nie potrafię ich stosować i stąd prośba o pomoc ewentualne przykłady jak zdefiniować poprawnie potrzebne funkcje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 8 lip 2014, o 12:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xpower]]></name></author>
<updated>2014-07-07T16:18:28+01:00</updated>
<published>2014-07-07T16:18:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86900#p86900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86900#p86900"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86900#p86900"><![CDATA[
Może to nie będzie do końca związane z tematem, ale patrząc na schemat rzuciło mi się w oczy, że wszędzie prowadzisz masę &quot;ręcznie&quot;, podobnie z resztą z zasilaniem. Ogólnie przez dużą ilość połączeń &quot;rysowanych&quot; dla mnie ten schemat jest mało czytelny. <br />Rozdziel sobie cały schemat urządzenia na moduły, skorzystaj z narzędzia &quot;Label&quot;... Mirek nakręcił cały cykl poradników o projektowaniu w Eagle.<br /><br />Tak, zdaję sobie sprawę i wiem jak to jest kiedy korci, żeby zamiast oglądać poradnik, dalej rysować / robić urządzenie <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ale po skończeniu, za jakiś czas będziesz chciał do tego wrócić i stracisz trochę czasu na przypomnienie sobie co i jak. <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=607">xpower</a> — 7 lip 2014, o 16:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-07T14:59:50+01:00</updated>
<published>2014-07-07T14:59:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86890#p86890</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86890#p86890"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86890#p86890"><![CDATA[
Może faktyczne trochę mnie poniosło bo moje próby uporania się z problemem są bardzo frustrujące. Jeżeli jest taka konieczność to wstawię cały kod programu [tą nowszą wersję z innym menu i obsługią PCF 8563] w którym jednak pewne rzeczy nie są do końca dopracowane więc proszę o wyrozumiałość. Bardzo słabo władam angielskim co też nie ułatwia mi zrozumienia co, jak, i dlaczego. <br />[syntax=c]//################################################################<br />//#       A T M E G A   H O M E   S O L A R   S Y S T E M        #            <br />//################################################################<br />//----- wykorzystane porty ATMEGA 32 16Mhz<br />//PORTA &gt;&gt; PIN 0 do 4 pięć kanałów pomiarowych ADC<br />//PORTB &gt;&gt; PIN 0-podświetlenie LCD,1-RS,2-RW,3-E<br />//PORTB &gt;&gt; PIN 4-5-6-7 DATA LCD<br />//PORTC &gt;&gt; PIN 0 - 1 I2C<br />//PORTC &gt;&gt; PIN 2 do 3 wyjścia sterujące zasilaczami<br />//PORTC &gt;&gt; PIN 4 do 7 wyjścia na przekażniki przez bufor ULN2003<br />//PORTD &gt;&gt; PIN 0 do 3 wolne &#91;programowanie FT232 tak jak EVB ver5.1&#93;<br />//PORTD &gt;&gt; PIN 3 do 7 pieć klawiszy<br />//----- umiejscowienie  LCD wzgledem klawiszy <br />// ---------------------------klawisz 1<br />//|wiersz 1|klawisz 2<br />//|wiersz 2|klawisz 3<br />//|wiersz 3|klawisz 4<br />//|wiersz 4|klawisz 5<br />// ---------------------------<br />//#################################################################            <br />#include &lt;stdint.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/interrupt.h&gt; <br />#include &quot;HD44780.h&quot;<br />//**********  obsługa TWI<br />#define ACK 1<br />#define NOACK 0<br />static void TWI_start(void)<br />{<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWSTA)|(1&lt;&lt;TWEN);<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));<br />}<br />static void TWI_stop(void)<br />{<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO);<br />}<br />void TWI_write(unsigned char scalak,unsigned char adres_rejestru,unsigned char liczba)<br />{<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWSTA) | ( 1 &lt;&lt; TWEN );<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =scalak;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =adres_rejestru;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =liczba;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWCR =(1 &lt;&lt; TWINT) | (1&lt;&lt;TWEN) | (1&lt;&lt;TWSTO);<br />} <br />unsigned char TWI_read(unsigned char scalak,unsigned char adres_rejestru)<br />{<br />unsigned char odczyt;     <br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWSTA) | ( 1 &lt;&lt; TWEN );<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =scalak;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =adres_rejestru;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWSTA) | ( 1 &lt;&lt; TWEN );<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWDR =scalak | 0x01;<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />TWCR =(1 &lt;&lt; TWINT) | (1 &lt;&lt; TWEN);<br />while(!(TWCR &amp; (1 &lt;&lt; TWINT)));<br />odczyt =TWDR;     <br />TWCR =(1 &lt;&lt; TWINT) | (1&lt;&lt;TWEN) | (1&lt;&lt;TWSTO);<br />return(odczyt);<br />}<br />//**********  funkcje przetwornika ADC<br />char buffer_n&#91;8&#93;;<br />volatile uint16_t pomiar&#91;6&#93; __attribute__((section(&quot;.noinit&quot;)));<br />void inline SetAdcKanal(unsigned char kanal)<br />{ADMUX = ((ADMUX&amp;0xE0)+ kanal);}<br />//********** funkcje konwersji<br />char dec_na_bcd(char num){return ((num/10 * 16) + (num % 10));}<br />char bcd_na_dec(char num){return ((num/16 * 10) + (num % 16));}<br />//********** definicje zmiennych dla ADC<br />double napiecie_aku,prad_in,napiecie_sol,prad_out,verify_zas,prad_aku;<br />float aku_err = 11.5;<br />float aku_min = 11.7;<br />float aku_max = 13.9;<br />float sol_min = 13.0;<br />float zas_ref = 10.0;<br />//********** adresy pamięci<br />#define mem_read 0xAD// adres RAM I2C<br />uint8_t mem1_addr&#91;&#93;={ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,<br />                      0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F };<br />uint8_t mem2_addr&#91;&#93;={ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,<br />                      0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F };<br />//********** definicje zmiennych dla pcf8583a<br />#define pcf_read 0xA2// adres RAM I2C<br />uint8_t rtc_adres&#91;&#93;={ 0x02,0x03,0x04,0x05,0x06,0x07,0x08};<br />char buffer_t&#91;32&#93;;<br />uint8_t read&#91;5&#93;;<br />uint8_t week,lcd;<br />uint8_t sek=0, min, godz,dni,dni_tyg,mc,mc,rok; //aktualny czas / data<br />uint8_t set_godz,set_min,set_rok,set_mc,set_dni; //nastawy czas / data<br />//********** definicje zmiennych dla zegara sterującego<br />uint8_t reset,czas_tc1,czas_tc2;<br />uint8_t czas_godz&#91;17&#93;;//nastawy zegara sterującego - godziny<br />uint8_t czas_min&#91;17&#93;;//nastawy zegara sterującego - minuty<br />uint8_t obwod&#91;5&#93;;//numer kanału przekażnika lub optotriaka<br />uint8_t status&#91;5&#93;;//status przekażnika / optotriaka<br />uint16_t timer&#91;16&#93;;//suma czasu nastaw zegara sterującego<br />uint16_t time_sys;<br />//********** definicje MENU_LCD<br />unsigned char menu=0,komunikat=0,key=0,pozycja=0,urzadzenie=0,enable=0;<br />//********** definicje ogólne<br />uint8_t enable,timer_start;<br />//*************************************************************************************<br />int main()<br />{<br />DDRB=0x01;//podświetlenie LCD (reszta pinów 4 bity,RS,RW,E pod LCD)<br />DDRC=0xFC;//wyjścia sterujące oraz SCL SDA układu rtc<br />PORTC=0x03;//pul-up dla SCL SDA INT1 układu rtc<br />DDRD=0x00;//wejścia klawiatura<br />PORTD=0xF8;//pull-up klawiatura<br />//----- LCD init LCD_menu init<br />LCD_Initalize();<br />_delay_ms(250);<br />menu=0;<br />//----- ADC init<br />ADMUX = _BV(REFS0)|_BV(REFS1)|_BV(ADLAR);<br />ADCSRA = _BV(ADEN)|_BV(ADPS0)|_BV(ADPS1)|_BV(ADPS2);<br />//----- TWI init<br />TWSR=0x00;<br />TWBR=0x48;//preskaler I2C ((F_CPU/100000UL-16);<br />//==================================================================================== <br />char *t_adc&#91;5&#93;={&quot;AWARIA!&quot;,&quot; zas 1 &quot;,&quot; zas 2 &quot;,&quot;solar &quot;,&quot;stanby &quot;};<br />char *t_dzien&#91;7&#93;={&quot;Poniedzialek&quot;,&quot;   Wtorek&quot;,&quot;   Sroda&quot;,<br />&quot;  Czwartek  &quot;,&quot;   Piatek&quot;,&quot;   Sobota&quot;,&quot; Niedziela&quot;};<br />char *t_status&#91;6&#93;={&quot;ON&quot;,&quot;-0-&quot;,&quot;OFF&quot;};// załacz - zablokuj stan - wyłacz<br />char *t_urzadzenie&#91;16&#93;={&quot;R SPRZET  RTV  OFF &gt;&quot;,&quot;R SPRZET  RTV  ON  &gt;&quot;,<br />&quot;R MIKROFALOWKA OFF &gt;&quot;,&quot;R MIKROFALOWKA ON  &gt;&quot;,<br /> &quot;R PIEC KUCHNIA OFF &gt;&quot;,&quot;R PIEC KUCHNIA ON  &gt;&quot;,<br />                     &quot;R REZERWA      OFF &gt;&quot;,&quot;R REZERWA      ON  &gt;&quot;,<br />                     &quot;W SPRZET  R&amp;TV OFF &gt;&quot;,&quot;W SPRZET  R&amp;TV ON  &gt;&quot;,<br />                     &quot;W MIKROFALOWKA OFF &gt;&quot;,&quot;W MIKROFALOWKA ON  &gt;&quot;,<br />&quot;W PIEC KUCHNIA OFF &gt;&quot;,&quot;W PIEC KUCHNIA ON  &gt;&quot;,<br />                     &quot;W REZERWA      OFF &gt;&quot;,&quot;W REZERWA      ON  &gt;&quot;};<br />//----- pętla główna progranu<br />while(1)<br />{<br />//=====================================================================================<br />//POMIARY NAPIĘĆ I PRĄDÓW <br />//=====================================================================================<br />  int kan;<br />  {<br />    for(kan = 0; kan&lt;5; kan++)<br />    {<br />      SetAdcKanal(kan);<br />      ADCSRA |= (1 &lt;&lt; ADSC);<br />      while(ADCSRA &amp; (1 &lt;&lt; ADSC));<br />      pomiar&#91;kan&#93; = (ADC | ADCH&lt;&lt;8);//odczyt kanalów ADC<br />    }      <br />    napiecie_aku = (pomiar&#91;0&#93;/2.54)/1024;//napięcie akumulatora<br />    prad_in = (pomiar&#91;1&#93;/2.54)/1024;//prąd zasilania<br />    napiecie_sol = (pomiar&#91;2&#93;/2.54)/1024;//napięcie ogniwa fotogalwanicznego<br />    prad_out = (pomiar&#91;3&#93;/2.54)/1024;//prąd obciążenia<br />    verify_zas = (pomiar&#91;4&#93;/2.54)/1024;//monitorowanie zasilacza<br />    prad_aku =(prad_in - prad_out);//prąd akumulatora<br />//=================================================================================<br />//  MONITOROWANIE NAPIĘĆ I STEROWANIE <br />//  ZASILACZEM BUFOROWYM - POPRZEZ PRZEKAŻNIK ZAŁACZAJĄCY 230V<br />//  OGNIWO FOTOGALWANICZNE PODLACZONE NA STAŁE - MASTER<br />    //=================================================================================<br />//    if(napiecie_aku &lt; aku_min)<br />//    {<br />//       PORTC &amp;=~ 0x04;PORTC |= 0x08;komunikat=1;//komunikat zasilacz<br />//    }<br />//    if(napiecie_sol &gt; sol_min)<br />//    {<br />//      PORTC |= 0x04;PORTC |= 0x08;komunikat=3;//komunikat solar<br />//    }      <br />//    if((napiecie_aku &gt; aku_max)&amp;&amp;(napiecie_sol &lt; sol_min)){komunikat=4;}//standby<br />//================================================================================<br />//ODCZYT ZEGARA CZASU RZECZYWISTEGO RTC<br />//================================================================================<br />    TWI_start;<br />    int a,b;<br />    {<br />      for(a=0;a&lt;7;a++){read&#91;a&#93; = TWI_read(pcf_read,rtc_adres&#91;a&#93;);}<br />      sek = bcd_na_dec(read&#91;0&#93;) &amp; 0x7F; //0x02 sekundy<br />      min = bcd_na_dec(read&#91;1&#93;) &amp; 0x7F;//0x03 minuty<br />      godz = bcd_na_dec(read&#91;2&#93;)&amp; 0x3F;//0x04 godziny<br />      dni = bcd_na_dec(read&#91;3&#93;) &amp; 0xFC; //0x05 dzień miesiąca<br />      dni_tyg = read&#91;4&#93; &amp; 0x1F;//0x06 dni tygodnia<br />      mc = bcd_na_dec(read&#91;5&#93;) &amp; 0x1F;//0x07 miesiąc<br />      rok = bcd_na_dec(read&#91;6&#93;)&amp; 0xFF;//0x08 rok<br />TWI_stop;<br />      //==============================================================================<br />      //  ODCZYT NASTAW CZASU DLA ZEGARA STERUJĄCEGO OBWODAMI ZEWNĘTRZNYMI<br />      //==============================================================================<br />      // to muszę napisać od nowa kod by odczytywać RAM z nastawiami czasu<br />      // zegara sterującego<br />      //===============================================================================<br />      // FUNKCJE WYKONAWCZE - STEROWANIE AUTOMATYCZNE I MANUALNE PRZEKAZNIKAMI<br />      //===============================================================================<br />      if(status&#91;1&#93;==0){PORTC |= _BV(4);}else{PORTC &amp;=~ _BV(4);status&#91;1&#93;=1;}<br />      if(status&#91;2&#93;==0){PORTC |= _BV(5);}else{PORTC &amp;=~ _BV(5);status&#91;2&#93;=1;}<br />      if(status&#91;3&#93;==0){PORTC |= _BV(6);}else{PORTC &amp;=~ _BV(6);status&#91;3&#93;=1;}<br />      if(status&#91;4&#93;==0){PORTC |= _BV(7);}else{PORTC &amp;=~ _BV(7);status&#91;4&#93;=1;}<br />    }<br />  }<br />//*************************************************************************************<br />// OBSŁUGA LCD ORAZ KLAWIATURY<br />//*************************************************************************************<br />  if(!(PIND &amp; _BV(3))){_delay_ms(100);key=1;_delay_ms(100);PORTB |= _BV(0);}<br />  if(!(PIND &amp; _BV(4))){_delay_ms(100);key=2;_delay_ms(100);PORTB |= _BV(0);}<br />  if(!(PIND &amp; _BV(5))){_delay_ms(100);key=3;_delay_ms(100);PORTB |= _BV(0);}<br />  if(!(PIND &amp; _BV(6))){_delay_ms(100);key=4;_delay_ms(100);PORTB |= _BV(0);}<br />  if(!(PIND &amp; _BV(7))){_delay_ms(100);key=5;_delay_ms(100);PORTB |= _BV(0);}<br />//=====================================================================================<br />  switch(menu)<br />  {<br />//=====================================================================================<br />   case 0://WYŚWIETLANIE CZASU DATY I DNIA TYGODNIA ORAZ WEJŚCIE DO MENU<br />LCD_GoTo(0,0);LCD_WriteText(&quot;*POWER SOLAR SYSTEM*&quot;);<br />LCD_GoTo(0,1);LCD_WriteText(&quot;**      :  :      **&quot;);<br />LCD_GoTo(6,1);LCD_WriteText(dtostrf(godz,2,0,buffer_t));<br />LCD_GoTo(9,1);LCD_WriteText(dtostrf(min,2,0,buffer_t));<br />LCD_GoTo(12,1);LCD_WriteText(dtostrf(sek,2,0,buffer_t));<br />LCD_GoTo(20,0);LCD_WriteText(&quot;**                **&quot;);<br />LCD_GoTo(24,0);LCD_WriteText(t_dzien&#91;week&#93;);<br />LCD_GoTo(20,1);LCD_WriteText(&quot;**      :  :      **&quot;);<br />LCD_GoTo(26,1);LCD_WriteText(dtostrf(dni,2,0,buffer_t));<br />LCD_GoTo(29,1);LCD_WriteText(dtostrf(mc,2,0,buffer_t));<br />LCD_GoTo(32,1);LCD_WriteText(dtostrf(rok,2,0,buffer_t));<br />//uzupełnienie nie wyswietlanej cyfy gdy dzięsiatki mają wartośc 0<br />//if(godz &lt;10){LCD_GoTo(6,1);LCD_WriteText(&quot;0&quot;);}<br />//if(min &lt; 10){LCD_GoTo(9,1);LCD_WriteText(&quot;0&quot;);}<br />//if(sek &lt; 10){LCD_GoTo(12,1);LCD_WriteText(&quot;0&quot;);}<br />//if(dni &lt; 10){LCD_GoTo(25,1);LCD_WriteText(&quot;0&quot;);}<br />//if(mc &lt; 10){LCD_GoTo(29,1);LCD_WriteText(&quot;0&quot;);}<br />//if(rok &lt; 10){LCD_GoTo(30,1);LCD_WriteText(&quot;0&quot;);}<br />if(key==1){menu=1;key=0;}<br />break;<br />//=====================================================================================<br />case 1:<br />LCD_GoTo(0,0);LCD_WriteText(&quot;   POMIARY NAPIEC  &gt;&quot;);//opcja menu<br />LCD_GoTo(0,1);LCD_WriteText(&quot;     STEROWANIE    &gt;&quot;);//opcja menu<br />LCD_GoTo(20,0);LCD_WriteText(&quot;  ZEGAR  SYSTEMOWY &gt;&quot;);//opcja menu<br />LCD_GoTo(20,1);LCD_WriteText(&quot;  ZEGAR  STERUJACY &gt;&quot;);//opcja menu<br />if(key==1){menu=0;key=0;}<br />if(key==2){menu=2;key=0;}<br />if(key==3){menu=3;enable=1;key=0;}<br />if(key==4){menu=4;key=0;}<br />if(key==5){menu=5;key=0;}<br />break;<br />//=====================================================================================<br />case 2://MONITORING I STATUS ZASILANIA OBWODÓW NISKONAPIĘCIOWYCH<br />LCD_GoTo(0,0);LCD_WriteText(&quot;Stan systemu &quot;);<br />LCD_GoTo(13,0);LCD_WriteText(t_adc&#91;komunikat&#93;);<br />LCD_GoTo(0,1);LCD_WriteText(&quot;AKU     V SOL     V &quot;);<br />LCD_GoTo(4,1);LCD_WriteText(dtostrf(napiecie_aku,4,1,buffer_n));<br />LCD_GoTo(14,1);LCD_WriteText(dtostrf(napiecie_sol,4,1,buffer_n));<br />LCD_GoTo(20,0);LCD_WriteText(&quot;POWER   AKUM   OBCI &quot;);<br />LCD_GoTo(20,1);LCD_WriteText(dtostrf(prad_in,4,1,buffer_n));<br />LCD_GoTo(24,1);LCD_WriteText(&quot;A      A      A &quot;);<br />LCD_GoTo(27,1);LCD_WriteText(dtostrf(prad_aku,4,1,buffer_n));<br />LCD_GoTo(34,1);LCD_WriteText(dtostrf(prad_out,4,1,buffer_n));<br />if(key==2){menu=1;key=0;}<br />break;<br />//=====================================================================================<br />case 3://STEROWANIE MANUALNE OBWODAMI - zmiana statusu oraz czasu zwłoki<br />LCD_GoTo(0,0);LCD_WriteText(&quot; SPRZET RTV        &gt;&quot;);<br />LCD_GoTo(16,0);LCD_WriteText(t_status&#91;status&#91;1&#93;&#93;);<br />LCD_GoTo(0,1);LCD_WriteText(&quot; MICROFALA         &gt;&quot;);<br />LCD_GoTo(16,1);LCD_WriteText(t_status&#91;status&#91;2&#93;&#93;);<br />LCD_GoTo(20,0);LCD_WriteText(&quot; PLYTA KUCHNIA     &gt;&quot;);<br />LCD_GoTo(36,0);LCD_WriteText(t_status&#91;status&#91;3&#93;&#93;);<br />LCD_GoTo(20,1);LCD_WriteText(&quot; REZERWA           &gt;&quot;);<br />LCD_GoTo(36,1);LCD_WriteText(t_status&#91;status&#91;4&#93;&#93;);<br />if(key==1){menu=1;key=0;}<br />if(key==2){status&#91;1&#93;=!status&#91;1&#93;; key=0;}<br />if(key==3){status&#91;2&#93;=!status&#91;2&#93;; key=0;}<br />if(key==4){status&#91;3&#93;=!status&#91;3&#93;; key=0;}<br />if(key==5){status&#91;4&#93;=!status&#91;4&#93;; key=0;}<br />break;<br />//=====================================================================================<br />case 4://PROGRAMOWANIE CZASU ZEGARA SYSTEMOWEGO<br />LCD_GoTo(17,1);LCD_WriteText(&quot;  &gt;&quot;);<br />LCD_GoTo(37,0);LCD_WriteText(&quot;  &gt;&quot;);<br />LCD_GoTo(20,1);LCD_WriteText(&quot; ZAPISZ DO PAMIECI &gt;&quot;);<br />if(pozycja==0)<br />{<br />LCD_GoTo(0,0);LCD_WriteText(&quot; USTAW DATE        &gt;&quot;);<br />LCD_GoTo(0,1);LCD_WriteText(&quot; Ustaw godzine &quot;);<br />  LCD_GoTo(15,1);  LCD_WriteText(dtostrf(set_godz,2,0,buffer_t));<br />LCD_GoTo(20,0);LCD_WriteText(&quot; Ustaw minuty  &quot;);<br />  LCD_GoTo(35,0);  LCD_WriteText(dtostrf(set_min,2,0,buffer_t));<br />if(enable==1){set_godz=godz;set_min=min; enable=0;}<br />if(key==2){pozycja=1;key=0;}<br />  if(key==3){if(++set_godz &gt;= 24){set_godz++;set_godz = 0;}key=0;}<br />   if(key==4){if(++set_min &gt;= 60){set_min++;set_min = 0;}key=0;} <br />if(key==5)//---&gt;&gt; zapis czsu do pcf8583<br />    {<br />    TWI_write(pcf_write,0x03,dec_na_bcd(set_min));<br />    TWI_write(pcf_write,0x04,dec_na_bcd(set_godz));<br />set_godz=0;set_min=0;pozycja=0;key=0;menu=0;<br />   }<br />}<br />if(pozycja==1)//PROGRAMOWANIE DATY ZEGARA SYSTEMOWEGO<br />{<br />LCD_GoTo(0,0);LCD_WriteText(&quot; Ustaw rok     &quot;);<br />  LCD_GoTo(15,0);  LCD_WriteText(dtostrf(set_rok,2,0,buffer_t));<br />LCD_GoTo(0,1);LCD_WriteText(&quot; Ustaw miesiac &quot;);<br />  LCD_GoTo(15,1);  LCD_WriteText(dtostrf(set_mc,2,0,buffer_t));<br />LCD_GoTo(20,0);LCD_WriteText(&quot; Ustaw dzien   &quot;);<br />  LCD_GoTo(35,0);  LCD_WriteText(dtostrf(set_dni,2,0,buffer_t));<br />if(enable==1){set_rok=rok;set_mc=mc; set_dni=dni;enable=0;}<br /> if(key==2){if(++set_rok &gt;= 99){set_rok++;set_rok = 0;}key=0;}<br /> if(key==3){if(++set_mc &gt;= 13){set_mc++;set_mc = 0;}key=0;}<br />   if(key==4){if(++set_dni &gt;= 31){set_dni++;set_dni = 0;}key=0;} <br />if(key==5)//---&gt;&gt; zapis daty do pcf8583<br />   {<br />   TWI_write(pcf_write,0x06,dec_na_bcd(set_dni));<br />TWI_write(pcf_write,0x07,dec_na_bcd(set_mc ));<br />TWI_write(pcf_write,0x08,dec_na_bcd(set_rok));<br />set_rok=0;set_mc=0;set_dni=0;pozycja=0;key=0;menu=0;<br />   }<br />}<br />break;<br />//=====================================================================================<br />case 5://PROGRAMOWANIE ZEGARA STERUJĄCEGO<br />LCD_GoTo(0,0);LCD_WriteText(t_urzadzenie&#91;urzadzenie&#93;);<br />LCD_GoTo(0,1);LCD_WriteText(&quot; ODCZYT CZASU   :   &quot;);<br />LCD_GoTo(14,1);  LCD_WriteText(dtostrf(czas_godz&#91;urzadzenie&#93;,2,0,buffer_t));<br />          LCD_GoTo(17,1);  LCD_WriteText(dtostrf(czas_min&#91;urzadzenie&#93;,2,0,buffer_t));<br />LCD_GoTo(20,0);LCD_WriteText(&quot; USTAW CZAS     :  &gt;&quot;);<br />LCD_GoTo(34,0);  LCD_WriteText(dtostrf(set_godz,2,0,buffer_t));<br />        LCD_GoTo(37,0);  LCD_WriteText(dtostrf(set_min,2,0,buffer_t));<br />LCD_GoTo(20,1);LCD_WriteText(&quot; ZAPISZ DO PAMIECI &gt;&quot;);<br />if(key==1){pozycja=0;key=0;menu=0;set_godz=0;set_min=0; }<br />//petla licznika zmiany programowanego obwodu oraz fukcji<br />if(key==2){if(++urzadzenie &gt;=16){urzadzenie=0;}key=0;}<br />//pętla nastawy żądanego czasu - godziny<br /> if(key==3){if(++set_godz &gt;= 24){set_godz++;set_godz = 0;}key=0;}<br />//pętla nastawy żądanego czasu - minuty<br />           if(key==4){if(++set_min &gt;= 60){set_min++;set_min = 0;}key=0;}<br />       //inicjowanie zapisu do pamięci<br />       if(key==5)<br />               {<br />       //zapis  do zdefiniowanej komórki pamięci - godziny<br />               TWI_write(pcf_write,urzadzenie&#91;mem1_addr&#93;,set_godz);_delay_ms(5);<br />      //zapis do zdefiniowanej komórki pamięci - minuty<br />      TWI_write(pcf_write,urzadzenie&#91;mem2_addr&#93;,set_min); _delay_ms(5);<br />      set_godz=0;set_min=0;key=0;<br />        }<br />break;<br />//=====================================================================================<br />    }<br />}<br />}<br />//*************************************************************************************<br />//************************************ END MAIN ***************************************[/syntax]<br />Jeżeli ktoś ma pomysł jak ten program mógł by być lepiej napisany będę wdzięczy za sugestie ale bez skomplikowanych funkcji bo sobie z nimi nie poradzę.<br />schemat całego układu jeszcze ze starym PCF-em<br /><a href="http://forum.atnel.pl/_obrazki/o/4247/9bcbcd98d5542cda45392ec2a45645bb.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4247/9bcbcd98d5542cda45392ec2a45645bb.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 7 lip 2014, o 14:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-07-06T13:50:04+01:00</updated>
<published>2014-07-06T13:50:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86744#p86744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86744#p86744"/>
<title type="html"><![CDATA[Re: Odp: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86744#p86744"><![CDATA[
<div class="quotetitle">margas napisał(a):</div><div class="quotecontent"><br />Takie rady to mi nie pomogą .. a skoro każesz szukać czego nie ma to znaczy że mnie spławiłeś bo albo nie wiesz lub tak jak ja nie potrafisz tego kodu napisać. Może po prostu ci się nie chce. Więc jak masz tak odpowiadać na posty to szkoda klawiatury i twoich palców ... soory ale tak to wygląda. Nie jestem alfą i omegą z AVR-em w głowie mam problem dlatego szukam pomocy i liczę na zrozumienie i pomoc a nie spychologie. Widzę że na tym forum też już obrośli w piórka...<br /></div><br />Kolego sam mam taki scalak i tez chce sie do niego dobrac sle twoje twierdzenia ze nikt nie chce pomoc sa sluszne ale tym co nie pomagaja sie wcale nie dziwie bo jak tu ci pomoc jak nie ma / nie pokazales<br /><br />Schematu<br />plytki badz fotki stykowki jak to laczysz<br />Calego kodu programu bez bibliotek z bb lub gb<br /><br />Wiec powiedz sam jak ci pomoc nie widzac niczego po za tym fragmentem ktory nic nie mowi.<br /><br />U nas na forum jak ktos zadaje pytanie i poda te 3 wazne rzeczy to na bank uzyska pomoc.<br /><br />Wiec nie ma co obratac w piora autorze tematu pokaz nam to co masz a postaramy sie pomoc bo teraz nawet jak chcemy to nie mamy jak.<br /><br />Sorry za bledy - pisane ze smarta<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 6 lip 2014, o 13:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-05T21:59:19+01:00</updated>
<published>2014-07-05T21:59:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86705#p86705</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86705#p86705"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86705#p86705"><![CDATA[
Takie rady to mi nie pomogą .. a skoro każesz szukać czego nie ma to znaczy że mnie spławiłeś bo albo nie wiesz lub tak jak ja nie potrafisz tego kodu napisać. Może po prostu ci się nie chce. Więc jak masz tak odpowiadać na posty to szkoda klawiatury i twoich palców ... soory ale tak to wygląda. Nie jestem alfą i omegą z AVR-em w głowie mam problem dlatego szukam pomocy i liczę na zrozumienie i pomoc a nie spychologie. Widzę że na tym forum też już obrośli w piórka...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 5 lip 2014, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[savian86]]></name></author>
<updated>2014-07-03T19:50:15+01:00</updated>
<published>2014-07-03T19:50:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86563#p86563</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86563#p86563"/>
<title type="html"><![CDATA[Re: PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86563#p86563"><![CDATA[
Na podstawie takiego wycinka kodu nikt ci nic nie doradzi, tu nic nie ma. Gdzie prawidłowa inicjalizacja komunikacji I2C? Jak wygląda Twi_read? Ten scalak ma autoinkrementacje adresu przy odczycie. Na forum był już rozwiązywany problem z tym scalakiem, poszukaj.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=393">savian86</a> — 3 lip 2014, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[margas]]></name></author>
<updated>2014-07-03T18:54:50+01:00</updated>
<published>2014-07-03T18:54:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86561#p86561</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86561#p86561"/>
<title type="html"><![CDATA[PCF 8563]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7659&amp;p=86561#p86561"><![CDATA[
Usiłuje wydusić z PCF 8563 czas i datę i jakoś mi to nie wychodzi ... potrzebne świeże spojrzenie i OPR oraz nieco &quot;oświecenia &quot; co spartoliłem:<br />Płytka testowa EVB z ATMEGA 32 - takt 16MHz.<br />Odczyt PCF-a w pętli - adresy komórek w tablicy<br />[syntax=c]//********** definicje zmiennych dla pcf-a<br />#define pcf 0xA2<br />uint8_t rtc_adres&#91;&#93;={ 0x02,0x03,0x04,0x05,0x06,0x07};<br />char buffer_t&#91;32&#93;;<br />uint8_t read&#91;6&#93;;[/syntax]<br />a teraz pora coś odczytać :<br />[syntax=c]//================================================================================<br />//ODCZYT ZEGARA CZASU RZECZYWISTEGO RTC<br />//================================================================================<br />int a,b;<br />  {<br />      for(a=0;a&lt;5;a++){read&#91;a&#93; = TWI_read(pcf,rtc_adres&#91;a&#93;);}<br />      sek = bcd_na_dec(read&#91;0&#93;);  //0x02 <br />      //min = bcd_na_dec(read&#91;1&#93;);//0x03<br />      //godz = bcd_na_dec(read&#91;2&#93;);//0x04<br />      //dni = bcd_na_dec(read&#91;3&#93;);        //0x05<br />      //mc = bcd_na_dec(read&#91;4&#93;);//0x06<br />      //rok = bcd_na_dec(read&#91;5&#93;);        //0x07<br />  }[/syntax]<br />i jak na złość pokazuje jakieś cuda  <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4247">margas</a> — 3 lip 2014, o 18:54</p><hr />
]]></content>
</entry>
</feed>