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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-11T07:59:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2540&amp;mode</id>
<entry>
<author><name><![CDATA[p_zag]]></name></author>
<updated>2013-03-11T07:59:04+01:00</updated>
<published>2013-03-11T07:59:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30336#p30336</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30336#p30336"/>
<title type="html"><![CDATA[Re: Collback – czy dorze to rozumiem...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30336#p30336"><![CDATA[
Dziękuje za podpowiedź.<br /> <br />Piotr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=539">p_zag</a> — 11 mar 2013, o 07:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-10T20:31:55+01:00</updated>
<published>2013-03-10T20:31:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30313#p30313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30313#p30313"/>
<title type="html"><![CDATA[Re: Collback – czy dorze to rozumiem...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30313#p30313"><![CDATA[
żeś się zapętlił troszkę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />po co to <br /><br />[syntax=c]przetwarzanie_wstepne_danych(buf);[/syntax]<br /><br /><br />w tym warunku hmmm ???<br /><br />[syntax=c]                if(my_event) {<br />                        przetwarzanie_wstepne_danych(buf);<br />                        (* my_event)(buf);<br />                }[/syntax]<br />          <br />ma być tylko tak:<br /><br />[syntax=c]                if(my_event) {<br />                        (* my_event)(buf);<br />                }[/syntax]<br /><br />wtedy będzie OK<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 mar 2013, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[p_zag]]></name></author>
<updated>2013-03-10T19:08:58+01:00</updated>
<published>2013-03-10T19:08:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30301#p30301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30301#p30301"/>
<title type="html"><![CDATA[Collback – czy dorze to rozumiem...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2540&amp;p=30301#p30301"><![CDATA[
Po lekturze z zielonej książki o collbak'ach a przede wszystkim po analizie kodu z płyty zawartej w tej książce doszedłem do takich oto wniosków:<br /><br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br /><br />uint8_t bufor[10];// bufor na potrzeby odebranych danych w zdarzeniu MOJE_ZDARZENIE():  np. na 10 pozycji<br />volatile uint8_t flaga;// znacznik<br /><br />// wskaźnik do funkcji callback dla zdarzenia MOJE_ZDARZENIE<br />static void (* my_event)(uint8_t * buf);<br /><br /><br />// funkcja do rejestracji funkcji zwrotnej w zdarzeniu MOJE_ZDARZENIE()<br />void register_my_event(void (* callback)(uint8_t * buf)) {<br />my_event = callback;<br />}<br /><br /><br />uint8_t * przetwarzanie_wstepne_danych(uint8_t * buf) {<br />uint8_t * wsk = buf;<br />// ...<br />//tu może być wstępne przetwarzanie danych zawartych w tablicy -&gt; buf[]<br />// ...<br />return wsk;<br />}<br /><br /><br />void MOJE_ZDARZENIE(uint8_t * buf) {<br />if(flaga) {<br />if(my_event) {<br />przetwarzanie_wstepne_danych(buf);<br />(* my_event)(buf);<br />}<br />}<br />}<br /><br />//--------------------------------------------------------------------------<br />// moja własna funkcja do obsługi danych<br />void przetwarzanie_glowne(uint8_t * buf) {<br />flaga--;<br />// tu właściwe przetwarzanie tablicy danych  buf[] do wykorzystania w funkci main()<br />}<br /><br /><br />//************ główna funkcja main() programu *****************************<br />int main(void) {<br /><br />register_my_event(przetwarzanie_glowne); // rejestracja własnej funkcji<br />sei();// globalne odblokowanie przerwań<br /><br />while(1) { // pętla główna programu<br />MOJE_ZDARZENIE(bufor);<br />}<br />}// koniec głównej funkcji main()  ...<br /><br /><br />/*<br />tu są dane pobierane do przetworzenia w zdarzeniu &quot;MOJE_ZDARZENIE(bufor)&quot;. Pomijam tu konfigurację magistrali SPI bo nie jest to moim tematem, po prostu chodzi mi o to, że jakieś przerwanie np. ISR(SPI_STC_vect ) dostarcza danych do obróbki w funkcji  MOJE_ZDARZENIE(bufor).<br />*/<br />ISR(SPI_STC_vect ) { // Serial Transfer Complete <br />flaga++;<br />  // dane  do obróbki w zdarzeniu  MOJE_ZDARZENIE(bufor)<br />}<br />[/syntax]<br /><br />I mam takie pytanie czy dobrze rozumuje, ewentualnie co w moim pseudo-programie jest błędne i co potrzeba poprawić.<br /><br />Piotr<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=539">p_zag</a> — 10 mar 2013, o 19:08</p><hr />
]]></content>
</entry>
</feed>