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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-02-08T13:14:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=21940&amp;mode</id>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-08T13:14:54+01:00</updated>
<published>2019-02-08T13:14:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216474#p216474</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216474#p216474"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216474#p216474"><![CDATA[
Trochę wychodząc naprzód - chciałbym podpiąć swoje funkcje z typem void. <br /><br />I jak mam w menu_display.h :<br /><br />[syntax=c]typedef struct {<br />uint8_t type;<br />union {<br />uint8_t byte;<br />int int16;<br />int32_t int32;<br />};<br />union {<br />uint8_t def_byte;<br />int def_int16;<br />uint32_t def_uint32;<br />};<br />char * string;<br />char * def_str;<br /><br />} TPROPERTY;[/syntax]  Zamiast tego chciałbym mieć swoje funkcje typu void. <br /><br />gdzie później bym mógł umożliwić jej aktywowanie w menu_property i przypisać odpowiednio do case'ów po switch (fun_id ) w pliku mk_menu_exe.c<br /><br />dajmy na to przykład : void praca_start_pom_1 (void); by mógł się podpiąć pod TPROPERTY; Drążę temat i nie mogę tego załapać, wyskakują błędy. <br /><br />I taką funkcję (opisana przykładowo w następujący sposób) wtedy wrzucam do mk_menu_display.c, żeby potem ją podpiąć pod 1 case w pliku mk_menu_exe? <br />[syntax=c]void praca_start_pom1_callback (void){<br /><br />SILOWNIK1_OPEN;<br />DDRC |= (1&lt;&lt;PC2); // ustawienie programowego kanału PWM jako wyjście dla wentylatora<br />temp_w = 4; // minimalna dopuszczalna temperatura wymiennika ciepła.<br />wentylator_pwm = 100; // początkowy rozruch wentylatora (ok. 40%) w kanale PWM<br />if ((temp_z+1) &gt;&gt; DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />{ // jesli temp. zadana wyzsza o min. 2 stopnie od temp. pomieszczenia = grzanie<br />    COOL_OFF;// wyłączenie chłodnicy freonowej<br />       HEAT1_ON;   // załączenie nagrzewnicy (jednej fazy)<br />            wentylator_pwm = 154; // zwiększenie prędkości wentylatora do 60%<br />    }<br />else if ((temp_z-1) &lt;&lt; DS18X20_read_meas(gSensorIDs&#91;2&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits)) //<br />{  // jesli temp. zadana nizsza o min. 2 stopnie od temp. pomieszczenia = chlodzenie<br />            HEAT1_OFF; // wyłączenie nagrzewnicy<br />            if ((SILOWNIK2_OPEN) &amp;&amp; (HEAT2_ON)) // jesli dla drugiego pomieszczenia aktualnie jest wykonywana praca w grzaniu<br />            {<br />            HEAT2_OFF; // wylaczyc nagrzewnice<br />            SILOWNIK2_CLOSE; // zamknac silownik<br />            _delay_ms(2000); // zanim nastąpi załączenie chłodnicy freonowej, zamkniecie dopływu powietrza<br /> COOL_ON; // włączenie chłodnicy freonowej<br />wentylator_pwm = 154; // prędkośc wentylatora 60%<br />            }<br />            else if ((SILOWNIK2_OPEN) &amp;&amp; (HEAT2_OFF) &amp;&amp; temp_z == DS18X20_read_meas(gSensorIDs&#91;2&#93;,<br />            &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />            // jesli dla drugiego pomieszczenia wykonywana jest tylko wentylacja<br />            {<br />            COOL_OFF; // priorytet wentylacji dla dwóch pomieszczeń<br />            wentylator_pwm = 255; // przyspieszenie wentylatora do 100%<br />            }<br />            else if ((SILOWNIK2_OPEN) &amp;&amp; (HEAT2_OFF) &amp;&amp; (temp_z-1) &lt;&lt; DS18X20_read_meas(gSensorIDs&#91;2&#93;,<br />            &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />            // jesli dla drugiego pomieszczenia wykonywane jest chlodzenie<br />            {<br />            wentylator_pwm = 255; // predkosc 100%<br />            COOL_ON;<br />            if (temp_w &gt;= DS18X20_read_meas(gSensorIDs&#91;3&#93;, // jesli temp. wymiennika spadnie do lub ponizej 4 stopni<br />            &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />              { // zabezpieczenie przeciwzamrozeniowe<br />            wentylator_pwm = 0;<br />            COOL_OFF;<br />            SILOWNIK1_CLOSE;<br />            SILOWNIK2_CLOSE;<br />              }<br />            }<br />}<br />else if (temp_z == DS18X20_read_meas(gSensorIDs&#91;1&#93;, &amp;subzero, &amp;cel, &amp;cel_fract_bits))<br />{  // jesli temp. zadana rowna temp. pomieszczenia = wentylacja<br />            HEAT1_OFF;<br />            COOL_OFF;<br />            wentylator_pwm = 154;<br />}<br />}[/syntax]<br /><br />Jak z tymi voidami wtedy zadziałać, żeby to pożenić z TPROPERTY? Szukam w książce(filmiki obejrzałem już któryś raz rzędu) ale nie mogę znaleźć podpowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 8 lut 2019, o 13:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-07T19:28:35+01:00</updated>
<published>2019-02-07T19:28:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216457#p216457</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216457#p216457"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216457#p216457"><![CDATA[
Nie ma problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> dziękuję <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=20433">Gammadion</a> — 7 lut 2019, o 19:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-07T18:43:43+01:00</updated>
<published>2019-02-07T18:43:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216454#p216454</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216454#p216454"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216454#p216454"><![CDATA[
Ok widzę, że muszę przygotować przykładowe programy - dobra przygotuję - ale trzeba troszkę poczekać ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lut 2019, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-07T13:48:42+01:00</updated>
<published>2019-02-07T13:48:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216451#p216451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216451#p216451"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216451#p216451"><![CDATA[
Z tej całej rutyny nie wstawiłem podciągnięcia klawiszy, gdzie wcześniej to wszystko było w key_init. Po prostu dałem w pętli while te klawisze a key_init zakomentowałem. Długo siedzę na tym wszystkim i czuje się już zmęczony <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dziękuję za pomoc !<br />Timerów ani przerwań żadnych nie konfigurowałem, procek atmega32A, taktowanie 11Mhz. Teraz wystąpił inny problem - źle przekierowuje mnie na poszczególne pozycje menu. Dodatkowo wcina, przesuwa mi wyrazy po przejściach. Wszystko generuje z programu mkmenugen (nie wprowadzałem zmian ręcznie) pod LCD 4x20 (wiem, że w programie jest 2x16 i 4x16) ale w bibliotekach też ustawiałem rozdzielczość  dla wyświetlacza i problem jest ten sam... <br /><a href="https://obrazkiforum.atnel.pl/20433/5d589e0e6b9660aac6931cf32b7d041a.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20433/5d589e0e6b9660aac6931cf32b7d041a.png" alt="Obrazek" /></a><br /><br /><br /><!-- m --><a class="postlink" href="https://youtu.be/OYtpwu9D7nQ" >https://youtu.be/OYtpwu9D7nQ</a><!-- m --><br /><!-- m --><a class="postlink" href="https://youtu.be/tOjtA678ZRI" >https://youtu.be/tOjtA678ZRI</a><!-- m --><br /><br />[syntax=c]void execute_node( uint8_t fun_id, uint8_t prop_id, uint8_t y ) {<br /><br />switch( fun_id ) {<br />case /* func 00 */ id_praca_pom_1_0_FP:  break;<br />case /* func 01 */ id_praca_pom_2_1_FP:  break;<br />case /* func 02 */ id_stop_pom_1_2_FP:  break;<br />case /* func 03 */ id_stop_pom_2_3_FP:  break;<br />case /* func 04 */ id_nastawa_temp_1_4_F:  break;<br />case /* func 05 */ id_nastawa_temp_2_5_F:  break;<br />case /* func 06 */ id_temp__minimalna_6_F:  break;<br />case /* func 07 */ id_temp__maksymalna_7_F:  break;<br />case /* func 08 */ id_temp_pom1_8_F:  break;<br />case /* func 09 */ id_temp_pom2_9_F:  break;<br />case /* func 10 */ id_temp_wymiennika_10_F:  break;<br />case /* func 11 */ id_wentylator_11_F:  break;<br />case /* func 12 */ id_nagrzewnica_1_12_F:  break;<br />case /* func 13 */ id_nagrzewnica_2_13_F:  break;<br />case /* func 14 */ id_przepustnica_1_14_F:  break;<br />case /* func 15 */ id_przepustnica_2_15_F:  break;<br />case /* func 16 */ id_ustaw_date_16_F:  break;<br />case /* func 17 */ id_ustaw_godzine_17_F:  break;<br />case /* func 18 */ id_wlacz_wylacz_18_FP:  break;<br />case /* func 19 */ id_czas_wlaczenia_19_F:  break;<br />case /* func 20 */ id_czas_wylaczenia_20_F:  break;<br />};[/syntax]<br /><br />[syntax=c]uint8_t len = strlen( tbuf );<br /><br /><br />// example for simple LCD 2x16<br /> lcd_locate( y, 16-len );<br /> lcd_str( tbuf );<br />}<br /><br />void on_display_item_cursor( int y ) {<br />// example for simple LCD 2x16<br /> lcd_locate( y, 0 );<br /> lcd_str_P( PSTR(&quot;&gt;&quot;) );<br />}<br /><br />void on_clear_item_cursor( void ) {<br />// example for simple LCD 2x16<br /> lcd_locate( get_y_pos(screen_cursor), 0 );<br /> lcd_str_P( PSTR(&quot; &quot;) );<br />}[/syntax]<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />// example with ROTARY ENCODER<br />//#include &quot;MK_ENCODER/mkencoder.h&quot;<br /><br /><br />// inkludy konieczne do obsługi MK_MENU -------------------------------<br />//----- funkcje biblioteczne ------<br />#include &quot;MK_MENU_LIB/mk_menu.h&quot;<br />#include &quot;MK_MENU_LIB/menu_items.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_exe.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_display.h&quot;<br />//----------------------------------------------------------------------<br />#include &quot;INOUT/inout.h&quot;<br /><br />// encoder callbacks headers<br />//void my_encoder( void );<br />//void enc_switch( void );<br /><br />#define KEY1_DOWN  (1&lt;&lt;PB7)<br />#define KEY2_UP    (1&lt;&lt;PB6)<br />#define KEY3_ENTER (1&lt;&lt;PB5)<br />#define KEY4_CANC  (1&lt;&lt;PB4)<br /><br /><br /><br />int main( void ) {<br /><br />  //Ustawienie przyciskow jako wejscia<br />DDR(KEY1_PORT) &amp;= ~ (KEY1_DOWN);<br />DDR(KEY2_PORT) &amp;= ~ (KEY2_UP);<br />    DDR(KEY3_PORT) &amp;= ~ (KEY3_ENTER);<br />DDR(KEY4_PORT) &amp;= ~ (KEY4_CANC);<br /><br />//Podciągniecie do VCC - stan wysoki<br />PORTB |= KEY1_DOWN;<br />    PORTB |= KEY2_UP;<br />    PORTB |= KEY3_ENTER;<br />    PORTB |= KEY4_CANC;<br /><br />    DDRA |= (1&lt;&lt;PA7);<br />    PORTA |= (1&lt;&lt;PA7);<br /><br /><br /><br />    lcd_init();<br />    lcd_str_P( PSTR(&quot;centrala&quot;) );<br />    lcd_locate( 1, 0 );<br />    lcd_str_P( PSTR(&quot;  START....  &quot;) );<br />    <br />  //  key_init();<br /><br /><br />//mk_encoder_init();<br />//register_enc_event_callback( my_encoder );<br />//register_enc_event_sw_callback( enc_switch );<br /><br />// inicjalizacja pracy MK_MENU<br /><br />register_menu_node_callback( display_menu_node );<br />register_menu_branch_callback( display_menu_branch );<br /><br />register_execute_node_fun_callback( execute_node );<br /><br />// MK_ENCODER LIB specific function<br />//register_reset_controller_pos_callback( reset_encoder );<br /><br />// zarejestrowanie zmiennej odpowiadającej za Menu Timeout<br />// jeśli w ogóle jest używana w programie<br />//register_timeout_counter_ptr( &amp;menu_timeout );<br /><br /><br />sei();// for ENCODER Events<br /><br />    while(1) {<br />//    ENCODER_EVENT();<br /><br />    if (!(PINB &amp; (1&lt;&lt;PB7) )) mk_menu_inc();<br />        if (!(PINB &amp; (1&lt;&lt;PB6) )) mk_menu_dec();<br />    if (!(PINB &amp; (1&lt;&lt;PB5) )) mk_menu_click();<br />       if (!(PINB &amp; (1&lt;&lt;PB4) )) mk_menu_hide();<br /><br />    }<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 7 lut 2019, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-07T08:49:49+01:00</updated>
<published>2019-02-07T08:49:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216442#p216442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216442#p216442"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216442#p216442"><![CDATA[
<div class="quotetitle">Gammadion napisał(a):</div><div class="quotecontent"><br />Natomiast jest problem z wyświetlaniem - załączam filmiki:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=7knd8g3gWkw" >https://www.youtube.com/watch?v=7knd8g3gWkw</a><!-- m --><br /></div><br />jeszcze jedno? na jakim procku to odpalasz - bo taki efekt jak na tym pierwszym filmiku może być gdy się cały czas procek resetuje bo np źle skonfigurowałeś jakiś timer tzn jego przerwanie itp<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 lut 2019, o 08:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-06T22:50:40+01:00</updated>
<published>2019-02-06T22:50:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216440#p216440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216440#p216440"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216440#p216440"><![CDATA[
<div class="quotetitle">Gammadion napisał(a):</div><div class="quotecontent"><br />//      register_menu_node_callback( display_menu_node );<br />//      register_menu_branch_callback( display_menu_branch );<br /></div><br /><br />A to u mnie w poradnikach rozumiem jest zakomentowane tak ?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br /><div class="quotetitle">Gammadion napisał(a):</div><div class="quotecontent"><br />z przyciskami już sobie poradziłem.<br /></div><br />No i dlatego mówiłem, żebyś pokazał cały kod - bo jak widać z kodu to to zdanie jest nieprawdziwe, w ogóle nie poradziłeś sobie z przyciskami niestety i nie obraź się, ale powinienem odesłać do podstaw do Bluebooka ... bo na prawdę bez podstaw ciężko się zabierać za takie bardziej zaawansowane rzeczy ...<br /><br />ale podpowiem, podciągania przycisków to ja w ogóle nie widzę w tym kodzie dla TAK mega prostej obsługi tych przycisków - więc nie dziwota że masz SZAŁ na LCD <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to wręcz normalne - i doświadczasz tego na własnej skórze czym jest stan HiZ (stan wysokiej impedancji) ... krótko mówiąc przyciski same ci się wciskają<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2019, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-06T18:32:23+01:00</updated>
<published>2019-02-06T18:32:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216424#p216424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216424#p216424"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216424#p216424"><![CDATA[
[syntax=c]/*<br /> * main.c - template<br /> *<br /><br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;inout.h&quot;<br /><br />// example with ROTARY ENCODER<br />//#include &quot;MK_ENCODER/mkencoder.h&quot;<br /><br /><br />// inkludy konieczne do obsługi MK_MENU -------------------------------<br />//----- funkcje biblioteczne ------<br />#include &quot;MK_MENU_LIB/mk_menu.h&quot;<br />#include &quot;MK_MENU_LIB/menu_items.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_exe.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_display.h&quot;<br />//----------------------------------------------------------------------<br /><br /><br />// encoder callbacks headers<br />//void my_encoder( void );<br />//void enc_switch( void );<br /><br /><br /><br />int main( void ) {<br /><br />    DDRA |= (1&lt;&lt;PA7);<br />    PORTA |= (1&lt;&lt;PA7);<br /><br />    lcd_init();<br />    lcd_str_P( PSTR(&quot; centrala &quot;) );<br />    lcd_locate( 1, 0 );<br />    lcd_str_P( PSTR(&quot;  START....  &quot;) );<br />    <br /><br />//mk_encoder_init();<br />//register_enc_event_callback( my_encoder );<br />//register_enc_event_sw_callback( enc_switch );<br /><br />// inicjalizacja pracy MK_MENU<br /><br />//register_menu_node_callback( display_menu_node );<br />//register_menu_branch_callback( display_menu_branch );<br /><br />register_execute_node_fun_callback( execute_node );<br /><br />// MK_ENCODER LIB specific function<br />//register_reset_controller_pos_callback( reset_encoder );<br /><br />// zarejestrowanie zmiennej odpowiadającej za Menu Timeout<br />// jeśli w ogóle jest używana w programie<br />//register_timeout_counter_ptr( &amp;menu_timeout );<br /><br /><br />sei();// for ENCODER Events<br /><br />    while(1) {<br />//    ENCODER_EVENT();<br /><br />    if (!(PINB &amp; (1&lt;&lt;PB7) )) mk_menu_inc();    <br />    if (!(PINB &amp; (1&lt;&lt;PB6) )) mk_menu_dec();   <br />    if (!(PINB &amp; (1&lt;&lt;PB5) )) mk_menu_click();<br />    if (!(PINB &amp; (1&lt;&lt;PB4) )) mk_menu_toggle();<br />    <br />    }<br /><br />}<br /><br /><br />// encoder switch pressed - callback<br />//void enc_switch( void ) {<br />//mk_menu_click();<br />//}<br /><br />// encoder rotate left/right<br />//void my_encoder( void ) {<br /><br />//if( ENC_LEFT == enco_dir ) {<br />//mk_menu_inc();<br />//} else {<br />//mk_menu_dec();<br />//}<br />//}[/syntax]<br /><br />z przyciskami już sobie poradziłem. Natomiast jest problem z wyświetlaniem - załączam filmiki:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=7knd8g3gWkw" >https://www.youtube.com/watch?v=7knd8g3gWkw</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=wVUN9gsrKpA" >https://www.youtube.com/watch?v=wVUN9gsrKpA</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=6xT3_fhmreo" >https://www.youtube.com/watch?v=6xT3_fhmreo</a><!-- m --><br /><br />Od razu mówię, iż przy normalnym wyświetlaniu po funkcjach lcd_str normalnie wszystko wyświetla bez migotania. Tylko w przypadku pozycji menu wyświetlacz wariuje. Sprawdzone na dwóch LCD. Płytka jest sprawna.<br /><br />W ogóle nie pokazuje mi menu powitalnego, który powinien zostać wygaszony poprzez wciśnięcie przycisku (tak jak u Pana poprzez wciśnięcie enkodera). Pojawia sie odrazu migoczące menu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 6 lut 2019, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-06T18:14:04+01:00</updated>
<published>2019-02-06T18:14:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216420#p216420</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216420#p216420"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216420#p216420"><![CDATA[
Pokaż że pan w końcu cały swój main.c zamiast tylko fragmenty a babola możesz robić gdzie indziej<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2019, o 18:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-06T15:35:09+01:00</updated>
<published>2019-02-06T15:35:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216413#p216413</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216413#p216413"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216413#p216413"><![CDATA[
Obejrzałem po razie te poradniki. Dla mnie to wszystko jest raczej jasne...<br /><br />Ale pomimo wszystko funkcje, które przedstawiłem wyżej do przycisków - po prostu nie działają, nie zmienia się nic w menu. <br /><br />Przykładowo jak dam :<br />if( !(PIND &amp;(1&lt;&lt;PD5) ) mk_menu... to mam puste LCD, wcześniej nie pojawia się nic. Bez &quot;!&quot; pokazuje się tylko &quot;strona tytułowa&quot;.<br />Idąc krok po kroku wg poradnika np. <!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=Apq4DZuHy88&amp;list=PLtXXWLsA5QNgkllCHYKTCEh7u9BijGuoR&amp;index=3" >https://www.youtube.com/watch?v=Apq4DZu ... oR&amp;index=3</a><!-- m --> w min. 25:34<br />żeby chociaż za pomocą przycisków zadziałać na lcd_cls; nie działa. <br />Nie mówiąc już o tym, że nie mogę przejść do moich case'ów.<br /><br />[syntax=c]void key_down_press(void){   // funkcja przycisku DOWN<br /><br />static uint8_t key_down_lock = 0; // deklaracja wciśnięcia przycisku<br /><br />if (!key_down_lock &amp;&amp; !(PINB &amp; KEY1_DOWN)) // sprawdzenie czy przycisk wciśnięty<br />{<br />key_down_lock = 1;<br />mk_menu_inc();<br /><br />} else if (key_down_lock &amp;&amp; (PINB &amp; KEY1_DOWN)) key_down_lock++; // eliminacja dgrań styków<br />}<br /><br />void key_up_press(void){<br /><br />static uint8_t key_up_lock = 0;<br /><br />if (!key_up_lock &amp;&amp; ! (PINB &amp; KEY2_UP))<br />{<br />key_up_lock = 1;<br />mk_menu_dec();<br /><br />} else if (key_up_lock &amp;&amp; (PINB &amp; KEY2_UP)) key_up_lock++;<br />}<br /><br />void key_enter_press(void){<br /><br />static uint8_t key_enter_lock = 0;<br /><br />if (!key_enter_lock &amp;&amp; ! (PINB &amp; KEY3_ENTER))<br />{<br />key_enter_lock = 1;<br />mk_menu_click();<br /><br />} else if (key_enter_lock &amp;&amp; (PINB &amp; KEY3_ENTER)) key_enter_lock++;<br />}[/syntax] wywołuje je w pętli głównej<br /><br />albo robię tak ! czy bez - nie działa. <br />[syntax=c]while(1) {<br />  //  ENCODER_EVENT();<br /> if ((PINB &amp; (1&lt;&lt;PB4))) mk_menu_inc();<br /> if ((PINB &amp; (1&lt;&lt;PB5))) mk_menu_dec();<br /> if ((PINB &amp; (1&lt;&lt;PB6))) mk_menu_click();<br /> if ((PINB &amp; (1&lt;&lt;PB7))) mk_menu_toggle();<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 6 lut 2019, o 15:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2019-02-06T14:44:25+01:00</updated>
<published>2019-02-06T14:44:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216412#p216412</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216412#p216412"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216412#p216412"><![CDATA[
Proponuję na początek obejrzeć dokładnie poradniki na temat tego tematu:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=AFbE11VbhzY" >https://www.youtube.com/watch?v=AFbE11VbhzY</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=_h1NsDEtlFw" >https://www.youtube.com/watch?v=_h1NsDEtlFw</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=HiO8b5daZgU" >https://www.youtube.com/watch?v=HiO8b5daZgU</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=Apq4DZuHy88" >https://www.youtube.com/watch?v=Apq4DZuHy88</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=AHGxapcx36U" >https://www.youtube.com/watch?v=AHGxapcx36U</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=94jMYw2sKps" >https://www.youtube.com/watch?v=94jMYw2sKps</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=-w1oCy_hjx4" >https://www.youtube.com/watch?v=-w1oCy_hjx4</a><!-- m --><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=z8ZH2LPYAuk" >https://www.youtube.com/watch?v=z8ZH2LPYAuk</a><!-- m --><br /><br />Bo kolega zadaje pytania tak jakby w ogóle ich nie obejrzał ... a szczególnie tych dwóch gdzie na żywo pokazuję co i jak:<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />oraz ten, w którym pokazuję nawet jak to w terminalu zrobić czyli sterowanie przez UART zamiast np klawiszy, enkoderów czy innych<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />no nie da rady bez tych poradników zacząć pracy z tą biblioteką - szczególnie gdy się jest początkującą osobą w programowaniu. <br /><br />A po obejrzeniu poradników gwarantuję, że podstawowe MENU ruszy z kopyta a nawet jeśli nie to kolega zada bardziej precyzyjne pytania ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 lut 2019, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-06T14:20:58+01:00</updated>
<published>2019-02-06T14:20:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216411#p216411</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216411#p216411"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216411#p216411"><![CDATA[
Jeszcze jedno pytanie. Jeśli mogę robić własne propertiesy, a są menu_property[MENU_PROPERTY_COUNT]:<br /><br />typ = byte itd. a chce zrobić własne funkcje. To jak je zaszczepić żeby móc je podpisać własnymi nazwami w np.<br />[syntax=c]void execute_node( uint8_t fun_id, uint8_t prop_id, uint8_t y ) {<br /><br />switch( fun_id ) {<br />case /* func 00 */ id_praca_pom_1_0_FP:MOJA_FUNKCJA();  break;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 6 lut 2019, o 14:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-06T11:53:23+01:00</updated>
<published>2019-02-06T11:53:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216406#p216406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216406#p216406"/>
<title type="html"><![CDATA[Re: klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216406#p216406"><![CDATA[
Wrzuciłem teraz coś takiego, normalnie mi się kompiluje, natomiast przyciski nie działają..<br />[syntax=c]while(1) {<br /><br /><br /> if (KEY1_DOWN==1) mk_menu_inc();<br /> if (KEY2_UP==1) mk_menu_dec();<br /> if (KEY3_ENTER==1) mk_menu_click();<br /> if (KEY4_CANC==1) mk_menu_hide();<br />    }<br /><br /><br />}[/syntax]<br /><br />Próbowałem jeszcze tak :<br /><br />[syntax=c]void key_up_press(void){<br /><br />static uint8_t key_up_lock = 0;<br /><br />if (!key_up_lock &amp;&amp; ! (PINB &amp; KEY2_UP))<br />{<br />key_up_lock = 1;<br />mk_menu_dec();<br /><br />} else if (key_up_lock &amp;&amp; (PINB &amp; KEY2_UP)) key_up_lock++;<br />}[/syntax]<br /><br />i w pętli głównej :<br /><br />[syntax=c]while(1) {<br /><br /><br />        key_down_press();<br />key_up_press();<br />key_enter_press();<br />key_cancel_press();<br /><br /> //if (KEY1_DOWN==1) mk_menu_inc();<br />// if (KEY2_UP==1) mk_menu_dec();<br />// if (KEY3_ENTER==1) mk_menu_click();<br />// if (KEY4_CANC==1) mk_menu_hide();<br />    }[/syntax]<br /><br />Jeśli chodzi o funkcje, które były w innych plikach, to odkomentowałem wg. poradnika na YT. <br />Czy w funkcjach obsługi klawiszy czegoś brakuje? Jak je zaprogramować do obsługi menu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 6 lut 2019, o 11:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Gammadion]]></name></author>
<updated>2019-02-06T10:40:47+01:00</updated>
<published>2019-02-06T10:40:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216403#p216403</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216403#p216403"/>
<title type="html"><![CDATA[klawisze micro-switch do współpracy z kodami MkMenuGen]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21940&amp;p=216403#p216403"><![CDATA[
W oparciu o licencję personal i zdjęcie z filmiku Pana Mirka, chciałbym dopytać o to jak przypisać klawisze do obsługi menu.<br /><a href="https://obrazkiforum.atnel.pl/20433/43e6e57d2d3cf68001f5b5be6a01e876.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20433/43e6e57d2d3cf68001f5b5be6a01e876.png" alt="Obrazek" /></a><br /><br />Pytanie wręcz banalne, a jednak mam mały problem. <br /><br />w pętli głównej po zakomentowaniu enkodera obsługa przycisków wygląda tak:<br /><br />[syntax=c]key_init();<br />    while(1) {<br /><br /> if (key_down_press) mk_menu( 1 );<br /> if (key_up_press) mk_menu ( -1 );<br /> if (key_enter_press) mk_menu ( 0 );<br /> if (key_cancel_press) mk_menu ( 2 );<br />    }<br /><br />}[/syntax]<br /><br />natomiast funkcje do przycisków(przykładowy jeden) :<br /><br />[syntax=c]void key_enter_press(void){<br /><br />static uint8_t key_enter_lock = 0;<br /><br />if (!key_enter_lock &amp;&amp; ! (PINB &amp; KEY3_ENTER))<br />{<br />key_enter_lock = 1;<br /><br />if(key_enter_func) (*key_enter_func)();<br />} else if (key_enter_lock &amp;&amp; (PINB &amp; KEY3_ENTER)) key_enter_lock++;<br />}[/syntax]<br /><br />jak chcę wrzucić mk_menu (); pod obsługę przycisków wewnątrz funkcji, czy to w pętli głównej to podkreśla mi na żółto że &quot;implicit declaration of function&quot;. Co robię nie tak? Z góry dziękuje za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20433">Gammadion</a> — 6 lut 2019, o 10:40</p><hr />
]]></content>
</entry>
</feed>