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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-05-07T09:23:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7002&amp;mode</id>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-05-07T09:23:41+01:00</updated>
<published>2014-05-07T09:23:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80386#p80386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80386#p80386"/>
<title type="html"><![CDATA[Re: Obługa micro-switchy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80386#p80386"><![CDATA[
Dziękuję za pomoc. Bluebooka posiadam, jednak widocznie nie doczytałem jeszcze. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 7 maja 2014, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-05-07T04:28:26+01:00</updated>
<published>2014-05-07T04:28:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80372#p80372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80372#p80372"/>
<title type="html"><![CDATA[Re: Obługa micro-switchy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80372#p80372"><![CDATA[
<div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />Głównie chodzi o przekazanie argumentu do funkcji: void (*kfun)(void) <br />o następnie o warunek: if(kfun) kfun();<br /></div><br /><br />A Bluebooka: <!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --> kolega posiada ? Coś czuję, że chyba nie - bo tam jest to opisane a dodatkowo jeszcze wiele innych ważnych rzeczy ... ale ok<br /><br />if( kfun ) .... // sprawdzamy czy został na pewno przekazany wskaźnik, czy nie jest on przypadkiem = ZERO<br /><br /><br /><div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />O co chodzi w zapisie przekazywania funkcji do funkcji, jaką rolę odgrywa krzyżyk?<br /></div><br /><br />Też nie wiem o jaki krzyżyk chodzi (tak jak kolega wyżej)<br /><br /><div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />I czy nie prościej zapisać te funkcję po prostu tak:<br /></div><br /><br />Przecież na tym blogu w tym samym artykule, masz wyżej DOKŁADNIE taką uproszczoną wersję. Więc o co chodzi  tym pytaniu ? ... hmmm no chyba o to, że nie rozumiesz po co są te operacje ze wskaźnikiem i przekazywaniem funkcji .... wtedy może i to pytanie ma sens. Ale na prawdę proponuję ci poczytać Bluebooka a w nim o wskaźnikach ale też o wskaźnikach do funkcji i przykładach jak to stosować w praktyce ... bo coś mi się zdaje że masz tu ogromną lukę ...<br /><br />podpowiem tylko że po to pokazałem w kolejnym przykładzie takie zastosowanie wskaźnika do funkcji aby można było mieć jeszcze większe możliwości a to dzięki temu że programista może na etapie wywoływania funkcji decydować co ona zrobi! .... bo sam mówi (tzn przekazuje jeszcze inną funkcję która ma się w niej wykonać)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 maja 2014, o 04:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2014-05-07T01:22:20+01:00</updated>
<published>2014-05-07T01:22:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80370#p80370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80370#p80370"/>
<title type="html"><![CDATA[Re: Obługa micro-switchy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80370#p80370"><![CDATA[
<div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />jaką rolę odgrywa krzyżyk?<br /></div><br /><br />Jaki krzyżyk ?<br />Chodzi Ci o &quot;++&quot; operator inkrementacji ?<br /><br /><br /><br /><div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />void (*kfun)(void)<br /></div><br /><br />Zobacz to:<br /><a href="http://forum.atnel.pl/topic2783.html"  class="postlink">http://forum.atnel.pl/topic2783.html</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 7 maja 2014, o 01:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-05-06T23:34:30+01:00</updated>
<published>2014-05-06T23:34:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80368#p80368</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80368#p80368"/>
<title type="html"><![CDATA[Obługa micro-switchy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7002&amp;p=80368#p80368"><![CDATA[
Witam,<br /><br />Mam problem ze zrozumieniem kawałka kodu, konkretnie ze postu <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html" >http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html</a><!-- m --> . Przedstawiam cały kod a pod nim to, czego konkretnie nie rozumiem.<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2012-10-05<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /> <br />#define LED1 (1&lt;&lt;PC5)<br />#define LED2 (1&lt;&lt;PC4)<br />#define KEY1 (1&lt;&lt;PC7)<br />#define KEY2 (1&lt;&lt;PC6)<br /> <br />uint8_t key1_lock, key2_lock;<br /> <br />void change_led1(void) {<br /> PORTC ^= LED1;<br />}<br /> <br />void change_led2(void) {<br /> PORTC ^= LED2;<br />}<br /> <br />void key_press( uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) ;<br />void key_push_up( uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) ;<br /> <br /> <br />//**************** OBSŁUGA DWÓCH KLAWISZY za pomocą 2 funkcji<br /> <br />int main(void) {<br /> <br /> PORTC |= KEY1|KEY2;  // podciągamy linie klawiszy do VCC<br /> DDRC |= LED1|LED2;   // piny LED jako WYjścia<br /> <br /> _delay_ms(10);<br /> <br /> while(1) {<br /> <br />  key_press( &amp;key1_lock, &amp;PINC, KEY1, change_led1 );<br /> <br />  key_push_up( &amp;key2_lock, &amp;PINC, KEY2, change_led2 );<br /> <br /> }<br /> <br />}<br /> <br /> <br />void key_press(uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) {<br /> <br /> register uint8_t key_press = (*KPIN &amp; key_mask);<br /> <br /> if( !*klock &amp;&amp; !key_press ) {<br />  *klock=1;<br /> <br />  // reakcja na PRESS (wcinięcie przycisku)<br />  if(kfun) kfun();<br /> <br /> } else if( *klock &amp;&amp; key_press ) (*klock)++;<br />}<br /> <br /> <br /> <br />void key_push_up(uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) ) {<br /> <br /> register uint8_t key_press = (*KPIN &amp; key_mask);<br /> <br /> if( !*klock &amp;&amp; !key_press ) *klock=1;<br /> else if( *klock &amp;&amp; key_press ) {<br />  if( !++*klock ) {<br /> <br />   // reakcja na PUSH_UP (zwolnienie przycisku)<br />   if(kfun) kfun();<br />  }<br /> }<br />}[/syntax]<br /><br /><br />Głównie chodzi o przekazanie argumentu do funkcji:  void (*kfun)(void) <br />o następnie o warunek: if(kfun) kfun();<br /><br />O co chodzi w zapisie przekazywania funkcji do funkcji, jaką rolę odgrywa krzyżyk? I nie mogę zrozumieć na czym polega warunek. Jak on działa? <br /><br />I czy nie prościej zapisać te funkcję po prostu tak:<br /><br />[syntax=c]void key_press(uint8_t * klock, volatile uint8_t * KPIN, uint8_t key_mask ) {<br /> <br /> register uint8_t key_press = (*KPIN &amp; key_mask);<br /> <br /> if( !*klock &amp;&amp; !key_press ) {<br />  *klock=1;<br /> <br />  // reakcja na PRESS (wcinięcie przycisku)<br />  PORTB ^= LED1;<br /> <br /> } else if( *klock &amp;&amp; key_press ) (*klock)++;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 6 maja 2014, o 23:34</p><hr />
]]></content>
</entry>
</feed>