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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-06-19T11:21:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20880&amp;mode</id>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-19T11:21:30+01:00</updated>
<published>2018-06-19T11:21:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209072#p209072</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209072#p209072"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209072#p209072"><![CDATA[
<img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Dziekuje andrews. O to mi chodzilo. Teraz bede w komplecie. Bede dzis testowal. Stawiam piwko<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 19 cze 2018, o 11:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-06-19T10:13:18+01:00</updated>
<published>2018-06-19T10:13:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209067#p209067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209067#p209067"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209067#p209067"><![CDATA[
<div class="quotetitle">jacabe napisał(a):</div><div class="quotecontent"><br />[syntax=c]KEY_SELMUX.keyshort = nastepny_kanal(mux_chnl);     //&lt;-tu podstawiam funkcje do wywolania<br />                                                    // z tym parametrem, ktora ma sie wykonac[/syntax]<br /></div><br /><br />Pole struktury o nazwie <strong><em>keyshort</em></strong> to wskaźnik na funkcję. Taki wskaźnik to wartość 16-bitowa będąca adresem pierwszej instrukcji funkcji. Nie da się do niego wpisać jeszcze dodatkowo jakiegoś argumentu. Jedyny sposób to:[syntax=c]KEY_SELMUX.keyshort = nastepny_kanal;[/syntax][/syntax]<br /><br />Jeżeli chcesz zapamiętać argument, z którym funkcja ma się wykonać, możesz np. dodać dodatkowe pole do struktury, które będzie przechowywać wartość tego argumentu:[syntax=c]typedef struct {           //struktura tworzaca przycisk<br />    // pomijam nieistotne tutaj pola struktury<br />    void (*keyshort)(int8_t * attr);     //&lt;-funkcja do obslugi wcisniecia przycisku<br />    int8_t * keyshort_arg;               // argument, z jakim funkcja ma się wykonać<br />    // pomijam nieistotne tutaj pola struktury<br />} PB;[/syntax]<br /><br />W strukturze zapisujesz:[syntax=c]// zamiast KEY_SELMUX.keyshort = nastepny_kanal(mux_chnl);<br />    KEY_SELMUX.keyshort = nastepny_kanal;<br />    KEY_SELMUX.keyshort_arg = &amp;mux_chnl;    // zmienna mux_chnl musi być zdefiniowana jako int8_t<br />                                            // a nie jako uint8_t, jak przedstawiłeś w Twoim kodzie[/syntax]<br /><br />Później wewnątrz funkcji:[syntax=c]// zamiast    if (key-&gt;keyshort) key-&gt;keyshort;  //&lt;-tu ma sie wykonac<br />                                                // funkcja podlaczona przy inicjalizacji<br />    if (key-&gt;keyshort) key-&gt;keyshort(key-&gt;keyshort_arg);[/syntax]<br /><br />Oczywiście istnieją zapewne inne możliwości osiągnięcia celu, być może lepsze, jednak z Twojego opisu nie potrafię wywnioskować, jaki ten cel dokładnie jest, więc trudno doradzić coś konkretnego.<br />Nie podałeś jednoznacznie np.:<br />Czy każdy klawisz ma inną funkcję callback, czy niektóre klawisze korzystają z tych samych funkcji, tylko z innym argumentem?<br />Czy argumenty to zmienne globalne, czy lokalne? Jeśli do funkcji chcesz przekazywać wskaźniki zmiennych globalnych, to być może wcale nie będziesz potrzebował callbacka z argumentem.<br /><br />Nie mam w tej chwili czasu na dokładną analizę kodu, ale na pierwszy rzut oka mam wrażenie, że chyba niepotrzebnie przekombinowałeś...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 19 cze 2018, o 10:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-19T07:44:53+01:00</updated>
<published>2018-06-19T07:44:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209065#p209065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209065#p209065"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209065#p209065"><![CDATA[
Jeszcze raz ogladalem poradniki. Wszedzie jest rejestracja callbacka bez parametrow a wywolanie z parametrem. Czy da sie zarejestrowac callbacka z parametrem : moje KEY[0].KEYSHORT = wyswietl(mux)? A wywolac if(callback) callback; niech sie wywola zarejestrowana funkcja z parametrem ktory wczesniej dolaczylem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 19 cze 2018, o 07:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-19T06:01:00+01:00</updated>
<published>2018-06-19T06:01:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209063#p209063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209063#p209063"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209063#p209063"><![CDATA[
No i wlasnie jakos zatrybic nie umiem. Dlatego prosze o pomoc. Ogladam i probuje i mam bledyw kompilacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 19 cze 2018, o 06:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-06-19T00:02:19+01:00</updated>
<published>2018-06-19T00:02:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209062#p209062</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209062#p209062"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209062#p209062"><![CDATA[
<div class="quotetitle">jacabe napisał(a):</div><div class="quotecontent"><br />Chodzi mi o wywolywanie podstawionej funkcji z parametrem. A nie wywolanie funkcji ze stalym paramertem. Da sie tak?<br /></div>Da się <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Oglądałeś poradniki Mirka o callbackach? Wspomina tam o tym ...<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 19 cze 2018, o 00:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-18T23:28:20+01:00</updated>
<published>2018-06-18T23:28:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209061#p209061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209061#p209061"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209061#p209061"><![CDATA[
Jak zrobic zebym przypisal do wskaznika funkcj np KEY[0].WYSWIETL(INTFCE);<br />      KEY[1].WYSWIETL(MUX);<br />a wywolanie funkcji : if(key-&gt;keyshort)key-&gt;keyshort;<br />Chodzi mi o wywolywanie podstawionej funkcji z parametrem. A nie wywolanie funkcji ze stalym paramertem. Da sie tak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 18 cze 2018, o 23:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-18T10:00:11+01:00</updated>
<published>2018-06-18T10:00:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209022#p209022</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209022#p209022"/>
<title type="html"><![CDATA[Re: callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209022#p209022"><![CDATA[
Tak, tak powinno byc. Tylko wtedy musi byc z tym parametrem. Ja bym chcial zmieniac parametr. Czt tak sie wogole da?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 18 cze 2018, o 10:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacabe]]></name></author>
<updated>2018-06-17T16:50:44+01:00</updated>
<published>2018-06-17T16:50:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209005#p209005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209005#p209005"/>
<title type="html"><![CDATA[callbacki... prosze o pomoc.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20880&amp;p=209005#p209005"><![CDATA[
Cześć. Próbuje napisać program do obsługi 9 klawiszy (takie superdebounce) wykorzystujac zreszta ta funkcje. Problem mam z callbackami, niestety. Mianowicie potrzebuje aby kazdy klawisz obslugiwal callbacka z argumentem. to zrobilem i dziala. ale kazdy klawisz ma miec inny callback i inny argument wywolywany z tej samej funkcji...<br />[syntax=c]//--------------definicje wejsc/wyjsc--------------<br /><br />#define SEL(1&lt;&lt;PA7)//mux selektor<br />#define IFC(1&lt;&lt;PA6)//wybor interfejsu<br />#define SYM(1&lt;&lt;PA5)//symulacja kanalu mux<br />#define SWP(1&lt;&lt;PA4)//wskazanie sondy +<br />#define SWM(1&lt;&lt;PA3)//wskazanie sondy -<br />#define OWP(1&lt;&lt;PA2)//obroty +<br />#define OWM(1&lt;&lt;PA1)//obroty -<br />#define ACC(1&lt;&lt;PA0)//wlaczenie stacyjki<br />#define TAC(1&lt;&lt;PB0)//impulsy tacho<br /><br />//-------------------------------------------------<br /><br />enum { KEYSEL = 1, KEYIFC = 2, KEYSYM = 4, KEYSWP = 8, KEYSWM = 16,<br />KEYOWP = 32, KEYOWM = 64, KEYACC = 128, KEYTAC = 256 };<br /><br /><br /><br />typedef struct {           //struktura tworzaca przycisk<br />  volatile uint8_t *PIN;<br />  uint8_t key;<br />  volatile uint8_t key_long;<br />  volatile uint8_t key_lockD;<br />  volatile uint8_t key_lockU;<br />  uint8_t key_powt_flag;<br />  uint8_t key_d10ms;<br />  void (*keyshort)(int8_t * attr);     //&lt;-funkcja do obslugi wcisniecia przycisku<br />  void (*keyspull)(int8_t);<br />  void (*keylong)(uint8_t);<br />  void (*keypull)(void);<br />} PB;<br /><br />PB KEY&#91;9&#93;;<br /><br />#define KEY_SELMUXKEY&#91;0&#93;<br />#define KEY_INFCEKEY&#91;1&#93;<br />#define KEY_SYMKEY&#91;2&#93;<br />#define KEY_SNDAPKEY&#91;3&#93;//klawisz SONDA +<br />#define KEY_SNDAMKEY&#91;4&#93;//klawisz SONDA -<br />#define KEY_OBRPKEY&#91;5&#93;<br />#define KEY_OBRMKEY&#91;6&#93;<br />#define KEY_ACCKEY&#91;7&#93;<br />#define KEY_TACHOKEY&#91;8&#93;<br /><br /><br /><br />uint8_t disp_flag;//flaga zezwolenia na wyswietlenie informacji<br />#define DFTOGdisp_flag ^= 1<br /><br />uint8_t mux_chnl;//licznik kanalow muxa<br />uint8_t mux_intfce;//zmienna interfejsu muxa<br /><br /><br />volatile uint8_t  d10ms;//zmienna zmieniajaca stan co 10ms<br />volatile uint16_t key_reg;//rejestr flag przyciskow<br />uint16_t key_p;//pomocniczy rejestr przyciskow<br /><br />snd *chanel;//wskaznik na kanal muxa<br /><br /><br /><br />void disp_EVENT(void);<br />void key_EVENT(void);<br />void key_spr(PB * key, uint8_t powt);<br />void nastepny_kanal(int8_t kanal);<br />void zmiana_interfejsu(int8_t intfce);<br />void RX0_EVENT(void);<br /><br /><br />int main(void){<br /><br /><br /><br />PORTD |= ROZ | SZA;//wejscia mux podciagniete do VCC<br />PORTA |= SEL | IFC | SYM | SWP | SWM | OWP | OWM | ACC ;<br />PORTB |= TAC ;<br /><br />GICR |= (1 &lt;&lt; PCIE0);          //odblokowanie przerwania PCINT8-14<br />PCMSK0 |= (1 &lt;&lt; PCINT7)|(1 &lt;&lt; PCINT6)|(1 &lt;&lt; PCINT5)|(1 &lt;&lt; PCINT4)|(1 &lt;&lt; PCINT3)|(1 &lt;&lt; PCINT2)<br />|(1 &lt;&lt; PCINT1)|(1 &lt;&lt; PCINT0);        //przerwanie od PCINT9<br />//PCIFR |= (1 &lt;&lt; PCIF1);          //kazda zmiana stanu<br /><br />/*<br /> * --------------------------timer2---------------------<br /> */<br /><br />TCCR2 |= (1&lt;&lt;WGM21);//tryb CTC<br />TCCR2 |=(1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);//preskaler 1024<br />OCR2 = 72;//czas 10ms<br />TIMSK |=(1&lt;&lt;OCIE2);// zezwolenie na przerwanie<br />/*<br /> * -----------------------------------------------------<br /> */<br /><br />//----------------przypisanie poszczegolnym klawiszom reakcji na wcisniecie krotkie, dlugie<br />//----------------lub zwolnienie-----------------------------------------------------------<br /><br />KEY_SELMUX.PIN = &amp;PINC;<br />KEY_SELMUX.key = KEYSEL;<br />KEY_SELMUX.key_long = 200;      //dlugie wcisniecie co najmniej 2s(200*10ms)<br />KEY_SELMUX.keyshort = nastepny_kanal(mux_chnl);     //&lt;-tu podstawiam funkcje do wywolania z tym parametrem, ktora ma sie <br />                                                                                                wykonac<br />//KEY_SELMUX.keyspull = nastepny_kanal;<br />//KEY_SELMUX.keylong = dlugie;<br />//KEY_SELMUX .keypull = zwolniony;<br /><br /><br />KEY_INFCE.PIN = &amp;PINC;<br />KEY_INFCE.key = KEYSEL;<br />KEY_INFCE.key_long = 200;      //dlugie wcisniecie co najmniej 2s(200*10ms)<br />KEY_INFCE.keyshort = zmiana_interfejsu(mux_chnl);     //&lt;-inna funkcja dla roznych klawiszy i inne parametry<br />//KEY&#91;0&#93;.keyspull = nastepny_kanal;<br />//KEY&#91;0&#93;.keylong = dlugie;<br />//KEY&#91;0&#93;.keypull = zwolniony;<br /><br />    USART0_Init(UBRRC0);<br /><br /><br />//    licz_petli = 150;<br />//    uint8_t zaptime = 5;//200ms*5 = 1s<br />    //co sekunde zapyta sonde o wartosc<br /><br /><br />    wdt_disable();<br /><br />    _delay_ms(1000);<br /><br />    sei();<br /><br /><br /><br /><br /><br /><br />      while (1) {<br /><br />      key_EVENT();<br /><br />      if (disp_flag){<br />      DFTOG;<br /><br />      disp_EVENT();<br /><br />      }<br /><br />      RX0_EVENT();<br /><br />   }<br />}<br /><br />ISR ( PCINT0_vect ) {<br /><br />  if (!(*KEY&#91;0&#93;.PIN &amp; KEY&#91;0&#93;.key) &amp;&amp; !KEY&#91;0&#93;.key_lockD) KEY&#91;0&#93;.key_lockD = 1;<br />  else if ((*KEY&#91;0&#93;.PIN &amp; KEY&#91;0&#93;.key) &amp;&amp; (KEY&#91;0&#93;.key_lockD &gt; 1) &amp;&amp; !KEY&#91;0&#93;.key_lockU) KEY&#91;0&#93;.key_lockU = 1;<br /><br />//    else if((PINA &amp; SEL) &amp;&amp; ksel_lock &gt; 0 &amp;&amp; ksel_lock &lt; 3){<br />//    ksel_lock++;<br />//    }<br /><br /><br />if (!(PINA &amp; IFC) &amp;&amp; !KEY&#91;1&#93;.key_lockD) {<br />KEY&#91;1&#93;.key_lockD = 1;<br />   key_reg |= KEYIFC;<br />}<br /><br />else if((PINA &amp; IFC) &amp;&amp; KEY&#91;1&#93;.key_lockU){<br />   key_reg &amp;= ~KEYIFC;<br />   KEY&#91;0&#93;.key_lockU = 0;<br />}<br />}<br /><br />ISR(TIMER2_OVF_vect){<br /><br />if(!(PINB &amp; TAC) &amp;&amp; !KEY&#91;8&#93;.key_lockD){<br />KEY&#91;8&#93;.key_lockD = 1;<br />key_reg |= KEYTAC;<br />}<br />else if((PINB &amp; TAC) &amp;&amp; KEY&#91;8&#93;.key_lockU){<br />key_reg &amp;= ~KEYTAC;<br />KEY&#91;8&#93;.key_lockU = 0;<br />}<br />//else if((PINB &amp; TAC) &amp;&amp; ktac_lock &gt; 0 &amp;&amp; ktac_lock &lt; 3){<br />//ktac_lock++;<br />//}<br /><br />d10ms ^= 1;<br />uint16_t n = delaytime1;//realizacja delay min 10ms<br />if(n)delaytime1 = --n;<br /><br />}<br /><br />void disp_EVENT(void){<br /><br /><br />}<br /><br /><br />void key_EVENT(void){<br /><br />key_spr(&amp;KEY_SELMUX, 0);<br />key_spr(&amp;KEY_INFCE, 0);<br /><br />}<br /><br />void key_spr(PB * key, uint8_t powt) {<br /><br />  if (!(*key-&gt;PIN &amp; key-&gt;key) &amp;&amp; key-&gt;key_lockD == 1) {                       //akcja zaraz po wcisnieciu przycisku<br />    key-&gt;key_lockD++;<br />    key-&gt;key_lockU = 0;<br />    if (key-&gt;keyshort) key-&gt;keyshort;      //&lt;-tu ma sie wykonac funkcja podlaczona przy inicjalizacji<br />  }<br /><br />  if (!(*key-&gt;PIN &amp; key-&gt;key) &amp;&amp; key-&gt;key_lockD &amp;&amp; (!(key-&gt;key_d10ms == d10ms))) {<br />    key-&gt;key_d10ms = d10ms;<br />    if (key-&gt;key_lockD &lt; 255) key-&gt;key_lockD++;<br /><br />  }<br /><br />  if ((!(*key-&gt;PIN &amp; key-&gt;key)) &amp;&amp; (key-&gt;key_lockD == key-&gt;key_long)) {       //akcja po dlugim naciskaniu przycisku<br /><br />    if (powt &amp;&amp; key-&gt;key_powt_flag) key-&gt;key_powt_flag = 0;    //jezeli akcja ma byc powtarzana co zadany czas<br /><br />    if (!key-&gt;key_powt_flag) {<br />      if (key-&gt;keylong) key-&gt;keylong(key-&gt;key_lockD);<br />      key-&gt;key_powt_flag = 1;<br />      key-&gt;key_lockD = 2;<br />    }<br />  }<br /><br />  if ((*key-&gt;PIN &amp; key-&gt;key) &amp;&amp; key-&gt;key_lockD &gt; 1 &amp;&amp; key-&gt;key_lockU == 1 ) { //akcja po puszczeniu przycisku<br />    if (key-&gt;keyspull) key-&gt;keyspull(-1);<br />    if (key-&gt;keypull) key-&gt;keypull();<br />    key-&gt;key_lockD = 0;<br />    key-&gt;key_lockU++;<br />  }<br /><br />  if ((*key-&gt;PIN &amp; key-&gt;key) &amp;&amp; (!(key-&gt;key_d10ms == d10ms)) &amp;&amp; key-&gt;key_lockU) {<br />    key-&gt;key_d10ms = d10ms;<br />    key-&gt;key_lockU++;<br />  }<br /><br />  if ((*key-&gt;PIN &amp; key-&gt;key) &amp;&amp; key-&gt;key_lockD &gt; 1 &amp;&amp; key-&gt;key_lockU &gt; 1) {  //akcja po<br />    //puszczeniu przycisku<br />    key-&gt;key_lockD = 0;<br />    key-&gt;key_lockD = 0;<br />    key-&gt;key_powt_flag = 0;<br />  }<br /> <br />}<br /><br />void nastepny_kanal(int8_t kanal){<br /><br />kanal++;<br />if (kanal == 4) kanal = 0;<br />mux_chnl = kanal;<br />//complus(kanal);<br />disp_flag = 1;<br /><br />}<br /><br />void zmiana_interfejsu(int8_t kanal){<br /><br />*chanel = complus(kanal);<br />uint8_t ifc = chanel-&gt;interfejs &amp; 63;<br />uint8_t pom = 0;<br />ifc = ifc&lt;&lt;1;//przejscie na kolejna pozycje interfejsu<br />if (ifc &gt; 0 &amp;&amp; ifc &lt; 32) pom = ifc;<br />if(pom == 32) pom = 1;//pozycji jest piec potem pozycja 1<br />else if (pom == 128) pom |= 64;//jezeli wlaczona symulacja kanalu mux ustaw pozycje 6<br />else if (!pom) pom &amp;= ~63;//jezeli wylaczona symulacja to zeruj pozycje 6<br /><br />chanel-&gt;interfejs = pom;<br />disp_flag = 1;// flaga zezwolenia na wyswietlenie<br /><br />}[/syntax]<br /><br />Niestety kompilator sypie bledami:<br /> [syntax=c]17:28:06 **** Incremental Build of configuration Release for project 000_krzysiek_tester ****<br />make all <br />'Building file: ../main.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega162 -DF_CPU=7372800UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.o&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />../main.c: In function 'main':<br />../main.c:131:22: error: void value not ignored as it ought to be<br />  KEY_SELMUX.keyshort = nastepny_kanal(mux_chnl);<br />                      ^<br />../main.c:140:21: warning: assignment from incompatible pointer type &#91;enabled by default&#93;<br />  KEY_INFCE.keyshort = zmiana_interfejsu;<br />                     ^<br />../main.c: In function 'key_spr':<br />../main.c:328:5: warning: passing argument 1 of 'key-&gt;keyshort' makes pointer from integer without a cast &#91;enabled by default&#93;<br />     if (key-&gt;keyshort) key-&gt;keyshort(mux_chnl);<br />     ^<br />../main.c:328:5: note: expected 'int8_t *' but argument is of type 'uint8_t'<br />make: *** &#91;main.o&#93; Błąd 1<br /><br />17:28:07 Build Finished (took 1s.339ms)[/syntax]<br />Pytanie moje jest takie: Czy da się tak jak ja chce i jak to wykonać? Proszę o pomoc. Mirek tak fajnie to tłumaczył, ze podstawowe działanie rozumiem, niestety chciałbym moc podać rożne funkcje i parametry do wykonania przy rożnych klawiszach. Z góry dziękuję za wytłumaczenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12296">jacabe</a> — 17 cze 2018, o 16:50</p><hr />
]]></content>
</entry>
</feed>