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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-12-29T20:36:05+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21783&amp;mode</id>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-12-29T20:36:05+01:00</updated>
<published>2018-12-29T20:36:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215214#p215214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215214#p215214"/>
<title type="html"><![CDATA[Re: Jak dyrektywą kompilacji warunkowej przełączać enum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215214#p215214"><![CDATA[
Dzięki andrews<br /><br />O tym nie pomyślałem <br />masz rację że działający program nie może przejść ponownej kompilacji<br /><br />Wybaczcie że kombinuje jak koń pod górą<br /><br />Ale chciałbym móc pilotem przełączać pracę zegarka na ustawianie czasu ręcznie i za pomocą modułu wifi<br />tym bardziej że siedzę nad tym chyba 2 miechy jak nie więcej<br /><br />A jak hmm czy tak w ogóle się da,  zrobić tak aby po resecie przestawił mi się na drugą wersję enum ?  <br />może macie jakieś pomysły jak przełączać to ustawianie zegara ręczne na automatyczne z wifi<br />praktycznie tam wszystko działa jak się przepisuje wartości w enum i ponownie skompiluje <br />ale jak to zrobić za pomocą pilota <br /><br />Może przed resetem procka zapisać to do jakieś pamięci stałej a po resecie aby program z niej pobrał <br />nowe ustawienie <br /><br />No nie wiem  jak to rozwiązać aż zwoje się jarają  <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=18503">miki53</a> — 29 gru 2018, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-12-29T18:57:41+01:00</updated>
<published>2018-12-29T18:57:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215206#p215206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215206#p215206"/>
<title type="html"><![CDATA[Re: Jak dyrektywą kompilacji warunkowej przełączać enum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215206#p215206"><![CDATA[
<div class="quotetitle">miki53 napisał(a):</div><div class="quotecontent"><br />Może zadam pytanie inaczej bo wielu ogląda a odpowiedzi ani jednej<br /></div><br />Twoje pytanie wskazuje po prostu, że nie rozumiesz, jak działają dyrektywy preprocesora. Nikt nie odpowiada, bo to sporo tłumaczenia jest...<br />W największym skrócie - nie da się tego zrobić tak, jak próbujesz. Dyrektywy są analizowane i wykonywane podczas budowania programu. Nie mogą być zmieniane przez skompilowany, działający już program (choćby dlatego, że zmiana jakiejkolwiek dyrektywy wymaga ponownej kompilacji). Decyzję o tym, jaką wartość przypiszesz do SYNCH_WIFI (0 lub 1) musisz podjąć przed kompilacją.<br /><br />Nie znam kodu z książki, ale myślę, że rozwiązaniem byłoby po prostu dodanie do enum trzeciej opcji w stylu:[syntax=c]enum { _bez_zmiany_czasu=0, _zimowy=1, _letni=2 };[/syntax] i modyfikacja kodu w pliku <em>mk_pcf8583.c</em> w taki sposób, by obsługiwał tę trzecią opcję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 29 gru 2018, o 18:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-12-29T18:31:52+01:00</updated>
<published>2018-12-29T18:31:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215203#p215203</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215203#p215203"/>
<title type="html"><![CDATA[Re: Jak dyrektywą kompilacji warunkowej przełączać enum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215203#p215203"><![CDATA[
Może zadam pytanie inaczej bo wielu ogląda a odpowiedzi ani jednej<br /><br />Czy jeśli w tym warunku zmieni mi się wartość #define_SYNCHRO_WIFI  z 0 na 1<br />a jest on w pliku msgeq7.c i do tego w funkcji  &gt;   static void equ_timer0_tick (TSTIMER * tmr ) { <br />to nastąpi zmiana również a warunku w pliku nagłówkowym mk_pcf8583.h  w miejscu podanym w niższym kodzie<br />=============================================================================================<br />[syntax=c]static void equ_timer0_tick( TSTIMER * tmr ) {<br />     <br />                pomiar_foto();<br />     <br />                static uint16_t lcz=0;<br />     <br />     <br />                clear_screen(0);<br />     <br />                MSGEQ_read();<br />     <br />    // ==============================================================================================<br />    // ---------- wł/wy - wifi ------------<br />          if( synchro == 1) {<br />     <br />     <br />                        clear_screen( 0 );<br />                        setCurrentFont( &amp;font5x8FontInfo );<br />                        mLocate (10,0,1);<br />                   if ( synch == 0 ){<br />                        mputs1_P( PSTR(&quot;off&quot;)) ;<br />             #define SYNCH_WIFI == 0;<br />                      }<br />                   if ( synch == 1 ){<br />                        mputs1_P( PSTR(&quot;on&quot;)) ;<br />             #define SYNCH_WIFI == 1;<br />                      }<br />                        update_screen();<br />     <br />                   if ( synch &gt; 1 ) {<br />                        synch = 1;<br />                       }<br />     <br />                    _delay_ms(500);<br />                       }<br />    // ===================================================================================================<br />     <br />                update_screen();<br />     <br />                lcz++;<br />     <br />                }[/syntax]<br /><br />Czy w tym miejscu dojdzie do zmiany w warunku if pliku nagłówkowego mk_pcf8583.h ?<br /><br />[syntax=c]#ifndef MK_PCF8583_MK_PCF8583_H_<br />    #define MK_PCF8583_MK_PCF8583_H_<br />     <br />    #define  DATETIME_AS_STRING     1<br />     <br />    #define DATE_SEPARATOR  '.'<br />     <br />   // #define SYNCH_WIFI // włą / wył synchronizacje zegara  modułem  -WIFI-  0 wyłącz  - 1 włącz<br />     <br />     <br />    // ===== WŁĄCZANIE i WYŁĄCZANIE SYNCHRONIZACJI ZEGARA MODUŁ WIFI =========================================<br />    // ----  wyłącz synchronizacje zegara  modułem - WIFI  ------------------------------------<br /><br />    #if SYNCH_WIFI == 0<br />     enum { _zimowy=0, _letni=0 };// ja zmieniłem było -  enum { _zimowy=1, _letni=2 };<br />                                  // zmiana wyłącza działanie WIFI i zmiane czasu letni - zimowy<br />     <br />    #else<br />    // ----  włącz synchronizacje zegara modułem - WIFI --------------------------------------<br />     <br />     enum { _zimowy=1, _letni=2 }; // zmiana włącza działanie WIFI i zmiane czasu letni - zimowy<br />    #endif<br />    //================================================================================================[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 29 gru 2018, o 18:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miki53]]></name></author>
<updated>2018-12-28T18:43:40+01:00</updated>
<published>2018-12-28T18:43:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215144#p215144</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215144#p215144"/>
<title type="html"><![CDATA[Jak dyrektywą kompilacji warunkowej przełączać enum]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21783&amp;p=215144#p215144"><![CDATA[
witam kolegów<br /><br />Chciałbym wyłączyć z kompilacji tryb wyliczeniowy enum i przełączyć go na inny w pliku nagłówkowym mk_pcf8583.h<br />ale za pomocą warunku if z pliku  msgeq7.c<br /><br />plik nagłówkowy mk_pcf8583.h<br /><br />[syntax=c]#ifndef MK_PCF8583_MK_PCF8583_H_<br />#define MK_PCF8583_MK_PCF8583_H_<br /><br />#define  DATETIME_AS_STRING 1<br /><br />#define DATE_SEPARATOR '.'<br /><br />#define SYNCH synch // włą / wył synchronizacje zegara  modułem  -WIFI-  0 wyłącz  - 1 włącz<br /><br /><br />// ===== WŁĄCZANIE i WYŁĄCZANIE SYNCHRONIZACJI ZEGARA MODUŁ WIFI =========================================<br />// ----  wyłącz synchronizacje zegara  modułem - WIFI  ------------------------------------<br />#if SYNCH<br /> enum { _zimowy=0, _letni=0 };// ja zmieniłem było -  enum { _zimowy=1, _letni=2 };<br />                              // zmiana wyłącza działanie WIFI i zmiane czasu letni - zimowy<br /><br />#else<br />// ----  włącz synchronizacje zegara modułem - WIFI --------------------------------------<br /><br /> enum { _zimowy=1, _letni=2 }; // zmiana włącza działanie WIFI i zmiane czasu letni - zimowy<br />#endif<br />//================================================================================================[/syntax]<br /><br /><br />ma być przełączany z poziomu msgeq7.c z miejsca oznaczonego komentarzem <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;avr/wdt.h&gt;<br />    #include &lt;stdlib.h&gt;<br />    #include &lt;string.h&gt;<br /><br /><br />    #include &quot;msgeq7.h&quot;<br /><br />    #include &quot;MATRIX_DISP/mk_matrix_disp.h&quot;<br />    #include &quot;MATRIX_DISP/GRAPH/mk_matrix_graph.h&quot;<br />    #include &quot;MATRIX_DISP/FONTS/mk_fonts.h&quot;<br />    #include &quot;MATRIX_DISP/TEXT/mk_matrix_text.h&quot;<br />    #include &quot;MK_PCF8583/mk_pcf8583.h&quot; // dodany dla ustawiania zegara i daty<br /><br />    #include &quot;common.h&quot;<br />    #include &quot;adc.h&quot;<br />    #include &quot;soft_timers.h&quot;<br />    #include &quot;MK_USART/mkuart.h&quot;<br />    #include &quot;IR_UNI/ir_config.h&quot;<br />    #include &quot;efektyFX.h&quot;<br /><br />    int8_t eq_styl = _us_czas;<br />    int8_t eq_width;// =_us_godz;<br /><br />    uint16_t equalizer&#91;7&#93;;  // pomiary equalizera<br /><br /><br />    uint8_t stop_equ;<br /><br />    // -- nagłówki pod menu ---<br />    uint8_t zegar;<br />    uint8_t data;<br />    uint8_t budzik;<br />    uint8_t synchro;<br />    uint8_t test;<br />    uint8_t hh,mm,ss;<br />    uint16_t YY;<br />    uint8_t MM;<br />    uint8_t DD,dd;<br />    uint8_t minuty;<br />    uint8_t wpis;<br />    uint8_t zapisz;<br />    uint8_t synch;<br /><br />   // uint8_t godz,min,sek ;<br /><br /><br />    void MSGEQ7_init( void ) {<br /><br />            DIDR0 |= (1&lt;&lt;EQADC);    // odłączamy port cyfrowy od pinu PC0 (MSGEQ7)<br /><br />            STROBE_DDR |= STROBE;<br />            RST_DDR |= RST;<br /><br />    }<br /><br />    void MSGEQ_read(void) {                                                                 // funkcja odczytujaca dane z equalizera<br />            uint8_t i;<br />            RST_1;<br />            STROBE_1;<br />            RST_0;<br /><br />            for(i=0;i&lt;7;i++) {<br />                    STROBE_0;<br />                    _delay_us(25);<br />                    equalizer&#91;i&#93; = pomiar( EQADC ); //wykonanie pomiaru i zapis wartosci<br />                    STROBE_1;<br />            }<br /><br />    }<br /><br /><br />    static void equ_parse_ir( uint8_t addr, uint8_t cmd, uint8_t key_time ) {<br /><br />            if( addr ) return;<br />            if( 0xff == cmd ) return;<br /><br />    //      if( !key_time ) {<br />    //              beep( 10 );<br />    //      }<br />    // ===========================================================<br />    // ============ Regulacja jasności ===========================<br />            if( ((19 == cmd) || (18 == cmd)) &amp;&amp; 10==key_time ) { // klawisz pilota --&gt;&gt; 19 - JASNOŚĆ + 18<br />                    manual_pwm ^= 1;<br />                    beep(10);<br />            }<br />            if( manual_pwm ) {<br />                    if( 19 == cmd &amp;&amp; key_time ) {      // klawisz pilota JASNOŚĆ -<br />                            if( jasnosc&gt;35 ) jasnosc -= 10;<br />                            matrix_pwm( jasnosc );<br />                    }<br />                    else if( 18 == cmd &amp;&amp; key_time ) { // klawisz pilota JASNOŚĆ +<br />                            if( jasnosc&lt;90 ) jasnosc += 10;<br />                            matrix_pwm( jasnosc );<br />                    }<br />            }<br /><br />    // ================= Regulacja jasności ========================<br />    // =============================================================<br />    // ============ WŁĄCZANIE MENU =================================<br /><br />            if( 59 == cmd &amp;&amp;  key_time ) {          // klawisz pilota OK -&gt; środkowy niebieski<br />                    clear_screen( 0 );<br />                            setCurrentFont( &amp;font5x8FontInfo );<br />                            mLocate( 3,0, 1 );<br />                            mputs1_P( PSTR(&quot;MENU&quot;) );<br />                            update_screen();<br /><br />                            beep(10);<br />                            _delay_ms(2000);<br />            //      stop_equ = 1;<br />            //      beep(10);<br />            }<br /><br />    // ================================================================================================<br />    // ================== WYŁĄCZANIE MENU =============================================================<br />                    if( 59 == cmd &amp;&amp; !key_time ) {         // klawisz pilota OK -&gt; środkowy niebieski<br />                            clear_screen( 0 );<br />                            setCurrentFont( &amp;font5x8FontInfo );<br />                            mLocate( 3,0, 1 );<br />                            mputs1_P( PSTR(&quot;-END-&quot;) );<br />                            update_screen();<br />                            _delay_ms( 2000 );<br />                            clear_screen( 0 );<br />                            update_screen();<br />                            stop_equ = 1;     // wyłącza MENU<br />                            beep(10);<br />                    }<br />    //==================================================================================================<br />    //================ NAGŁÓWKI MENU ===================================================================<br />                if( 32 == cmd &amp;&amp; key_time ) { // klawisz pilota strzałka do GÓRY ^<br />                           eq_styl--;<br />                           beep(10);<br />                       if( eq_styl &lt; 0 )eq_styl = _us_czas;{<br />                           beep(10);<br />            }<br />            }<br />           else if( 33 == cmd &amp;&amp; key_time ) { // klawisz pilota strzałka w DÓŁ V<br />                           eq_styl++;<br />                       if( eq_styl == _us_date )<br />                           beep(10);<br />             }<br />            else if( 33 == cmd &amp;&amp; key_time ) { // klawisz pilota strzałka w DÓŁ V<br />                            eq_styl++;<br />                        if( eq_styl == _alarm )<br />                            beep(10);<br />             }<br />            else if( 33 == cmd &amp;&amp; key_time ) { // klawisz pilota strzałka w DÓŁ V<br />                            eq_styl++;<br />                        if( eq_styl == _wifi )<br />                            beep(10);<br />             }<br />            else if( 33 == cmd &amp;&amp; key_time ) { // klawisz pilota strzałka w DÓŁ V<br />                            eq_styl++;<br />                        if( eq_styl == _test_pi )<br />                            beep(10);<br />          }<br /><br />    // ===========================================================================================<br />    // ********************************* POD MENU ************************************************<br />    //--------------------------- POD MENU USTAWIANIE CZASU  -------------------------------------<br /><br />                 if (( 16 == cmd &amp;&amp;  key_time )&amp;&amp;(eq_styl==_us_czas )){  // klawisz pilota w PRAWO &gt;&gt;&gt;<br />                              zegar = 1;<br />                        }<br />    //---------------------------------------------------------------------------------------------<br />    //---------------------------- POWRÓT Z POD MENU USTAWIENIA CZASU -----------------------------<br /><br />                 if (( 17 == cmd &amp;&amp;  key_time )&amp;&amp;( zegar == 1 )){  // klawisz pilota w LEWO &lt;&lt;&lt;<br />                             zegar = 0;<br />                        }<br />    //============================================================================================<br />    //--------------------------- POD MENU USTAWIANIE DATY  --------------------------------------<br /><br />                 if (( 16 == cmd &amp;&amp;  key_time )&amp;&amp;(eq_styl==_us_date )){  // klawisz pilota w PRAWO &gt;&gt;&gt;<br />                                  data = 1;<br />                        }<br />   //---------------------------------------------------------------------------------------------<br />   //---------------------------- POWRÓT Z POD MENU USTAWIENIA DATY ------------------------------<br /><br />                 if (( 17 == cmd &amp;&amp;  key_time )&amp;&amp;( data == 1 )){  // klawisz pilota w LEWO &lt;&lt;&lt;<br />                                   data = 0;<br />                         }<br />    <br />    //==============================================================================================<br />    //-------- POD MENU WŁĄCZANIA I WYŁĄCZANIA SYNCHRONIZACJI CZASU PRZEZ WIFI ---------------------<br /><br />            else if (( 16 == cmd &amp;&amp;  key_time  )&amp;&amp;(eq_styl==_wifi )){  // klawisz pilota w PRAWO &gt;&gt;&gt;<br />                                    synchro = 1;<br />                        }<br />   <br />// ==================================================================================================<br />// ---- Z TEGO MIEJSCA CHCIAŁBYM PRZEŁĄCZAĆ ENUM -----------------------------------------------------------<br /> //===================================================================================================<br />// ---------------------------- KLAWISZ 1 PILOTA DO USTAWIANIA SYNCHRONIZACJI ZEGARA Z WIFI ----------------------------<br />         if (synchro == 1){<br /><br />                 if ( 1 == cmd &amp;&amp;  key_time  ){ // wł/wy synchronizacji zegara modułem WIFI  -- KLAWISZ PILOTA 1<br />                                synch ++;       // 0 - synchro wyłączone<br /><br />                 }             // 1 - synchro włączone<br />                     }<br /><br /> // =============================================================================================<br />    static void equ_timer0_tick( TSTIMER * tmr ) {<br /><br />            pomiar_foto();<br /><br />            static uint16_t lcz=0;<br /><br /><br />            clear_screen(0);<br /><br />            MSGEQ_read();<br /><br />// ==============================================================================================<br />// ---------- wł/wy - wifi ------------<br />      if( synchro == 1) {<br /><br /><br />                    clear_screen( 0 );<br />                    setCurrentFont( &amp;font5x8FontInfo );<br />                    mLocate (10,0,1);<br />               if ( synch == 0 ) mputs1_P( PSTR(&quot;off&quot;)) ;<br />               if ( synch == 1 ) mputs1_P( PSTR(&quot;on&quot;)) ;<br />                    update_screen();<br /><br />               if ( synch &gt; 1 ) {<br />                    synch = 1;<br />                   }<br /><br />                _delay_ms(500);<br />                   }<br />// ===================================================================================================<br /><br />            update_screen();<br /><br />            lcz++;<br /><br />            }[/syntax]<br /><br />Może macie jakiś inny pomysł jak  przełączać enum z oznaczonego miejsca<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18503">miki53</a> — 28 gru 2018, o 18:43</p><hr />
]]></content>
</entry>
</feed>