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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-31T07:22:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=14983&amp;mode</id>
<entry>
<author><name><![CDATA[ryba84]]></name></author>
<updated>2016-03-30T19:19:12+01:00</updated>
<published>2016-03-30T19:19:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157387#p157387</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157387#p157387"/>
<title type="html"><![CDATA[Re: Pseudo OneWire i/lub biblioteka do obsługi tanich modułó]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157387#p157387"><![CDATA[
W linii gdzie widnieje:<br />[syntax=c]#if defined (__AVR__ATmega2560__)[/syntax]<br />dodaj na końcu:<br />[syntax=c]|| defined (__AVR_Atmega328P__)[/syntax]<br />Co do błędów kompilacji to wywal z kodu w funkcji dataReceived linie z wywołaniem putBuffer (tej funkcji nie ma w przykładzie ona wysyłała odebrane dane przez uart, więc usunąłem ją z przykładu). Sam sobie wymyśl co zrobisz z danymi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. To co mi się nasuwa to zajrzałeś do dokumentacji? Bo kolejny błąd jest związany z brakiem włączenia odbiornika. Powinieneś to zrobić w preferencjach projektu (w Eclipse: Properties-&gt;C/C++ Build-&gt;Settings-&gt;AVR Compiler-&gt;Symbols). Dodaj tam MAN_RXENABLED. W taki sam sposób możesz definiować inne opcje. Więcej w dokumentacji <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />PS. Oczywiście możesz zrobić to w pliku manchester_lib.h (#define MAN_RXENABLED), ale nie polecam tego sposobu. Wg. mnie to tak jak byś definiował F_CPU w kodzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />W Pierwszym poście poprawiłem załącznik. Powinien już chodzić na 328P. Dodatkowo poprawiłem komentarze w przykładach, aby nie myliły.<br /><br />PS2. Zapomniałem. Dodaj jeszcze MAN_CHEAPRF jeśli korzystasz z tych tanich modułów, bo inaczej nic nie odbierzesz <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=3170">ryba84</a> — 30 mar 2016, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maxus]]></name></author>
<updated>2016-03-30T18:13:20+01:00</updated>
<published>2016-03-30T18:13:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157378#p157378</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157378#p157378"/>
<title type="html"><![CDATA[Re: Pseudo OneWire i/lub biblioteka do obsługi tanich modułó]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157378#p157378"><![CDATA[
Albo mi się wydaje, albo nazwy rejestrów w atmedze2560 są takie same jak w 328P. <br />Więc jak dodam do pliku <strong>manchester_lib-mach.h</strong> ten kod:<br />[syntax=c]#if defined (__AVR_Atmega328P__)<br />#if MANCHESTER_TIMER == 0<br />#define MAN_TCNT TCNT0<br />#define MAN_TIMSTARTTCCR0B |= (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00)<br />#define MAN_TIMSTOPTCCR0B = 0<br />#define MAN_TIMERINIT TCCR0A = 0;\<br />TIMSK0 |= (1 &lt;&lt; TOIE0)<br />#define MAN_TIMMAX255<br />#endif<br />#if MANCHESTER_TIMER == 1<br />#define MAN_TCNT TCNT1<br />#define MAN_TIMSTARTTCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10)<br />#define MAN_TIMSTOPTCCR1B = 0<br />#define MAN_TIMERINIT TCCR1A = 0;\<br />TIMSK |= (1 &lt;&lt; TOIE1)<br />#define MAN_TIMMAX65535<br />#endif<br />#if MANCHESTER_TIMER == 2<br />#error &quot;Timer 2 not supported!!! You can add own support.&quot;<br />#endif<br />#if MANCHESTER_TIMER == 3<br />#error &quot;Timer 3 not supported!!! You can add own support.&quot;<br />#endif<br />#if MANCHESTER_TIMER == 4<br />#error &quot;Timer 4 not supported!!! You can add own support.&quot;<br />#endif<br />#if MANCHESTER_TIMER == 5<br />#error &quot;Timer 5 not supported!!! You can add own support.&quot;<br />#endif<br />#endif /* MANCHESTER_LIB_MACH_H_ */[/syntax]<br />to powinno być ok co nie?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 11 minutach ]</span></strong><br /><br />[syntax=c]make all <br />'Building target: rf_avr32.elf'<br />'Invoking: AVR C Linker'<br />avr-gcc -Wl,-Map,rf_avr32.map -mmcu=atmega8 -o &quot;rf_avr32.elf&quot;  ./rf_avr/manchester_lib.o  ./main.o   <br />./main.o: In function `dataReceived':<br />main.c:(.text.dataReceived+0x8): undefined reference to `putBuffer'<br />./main.o: In function `main':<br />main.c:(.text.startup.main+0x4): undefined reference to `registerReceiveCallback'<br />main.c:(.text.startup.main+0x10): undefined reference to `startReceiver'<br />collect2.exe: error: ld returned 1 exit status<br />make: *** &#91;rf_avr32.elf&#93; Błąd 1[/syntax]<br />Błąd <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Plik transmitter.c wyłączyłem z kompilacji, a receiver.c zmieniłem nazwę na main.c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8161">maxus</a> — 30 mar 2016, o 18:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maxus]]></name></author>
<updated>2016-03-30T15:26:35+01:00</updated>
<published>2016-03-30T15:26:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157366#p157366</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157366#p157366"/>
<title type="html"><![CDATA[Re: Pseudo OneWire i/lub biblioteka do obsługi tanich modułó]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157366#p157366"><![CDATA[
Prostota tych przykładów powala <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jeśli masz chwilę to powiedz co pozmieniać żeby działało to na Atmedze328p @11,0592 MHz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8161">maxus</a> — 30 mar 2016, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ryba84]]></name></author>
<updated>2016-03-30T06:56:40+01:00</updated>
<published>2016-03-30T06:56:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157353#p157353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157353#p157353"/>
<title type="html"><![CDATA[Re: Pseudo OneWire i/lub biblioteka do obsługi tanich modułó]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157353#p157353"><![CDATA[
To akurat z 1wire ma niewiele wspólnego. Tutaj kodujemy po prostu transmisję kodem manchester i machamy pinem by uzyskać odpowiedni przebieg na wyjściu. Dobrze to działa z tanimi modułami RF. Takimi jak na tej stronie <a href="http://www.romanblack.com/RF/cheapRFmodules.htm"  class="postlink">http://www.romanblack.com/RF/cheapRFmodules.htm</a>, jednak ja nie wykorzystuję UART do tego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3170">ryba84</a> — 30 mar 2016, o 06:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2016-03-29T23:33:40+01:00</updated>
<published>2016-03-29T23:33:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157347#p157347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157347#p157347"/>
<title type="html"><![CDATA[Re: Pseudo OneWire i/lub biblioteka do obsługi tanich modułó]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157347#p157347"><![CDATA[
Cenna rzecz dzięki! Jeszcze 1wire nie odpalałem....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 29 mar 2016, o 23:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ryba84]]></name></author>
<updated>2016-03-31T07:22:58+01:00</updated>
<published>2016-03-29T20:59:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157339#p157339</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157339#p157339"/>
<title type="html"><![CDATA[Pseudo OneWire i/lub biblioteka do obsługi tanich modułów RF]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14983&amp;p=157339#p157339"><![CDATA[
Witam.<br /><br />Bibliotekę wstawiam na prośbę kolegi maxus. Przykładowy kod nadajnika poniżej:<br />[syntax=c]/*<br /> * transmitter.c<br /> *<br /> *  Created on: 29 mar 2016<br /> *      Author: Piotr Rudzki<br /> */<br /><br />// You must enable transmitter in project CFLAGS using MAN_TXENABLED macro<br />// Data buffer size in bytes must be defined using MAN_DATA_BUFFER_SIZE macro in project CFLAGS<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;manchester_lib.h&quot;<br /><br />static uint8_t data&#91;&#93; = { &quot;tst\n\r&quot; };<br />static uint16_t txBuff&#91;MAN_TX_BUFFER_SIZE&#93;; // use MAN_TX_BUFFER_SIZE macro when declaring transmit buffer<br /><br />static trx_T trxStruct = {<br />.portDir = &amp;DDRB,<br />.port = &amp;PORTB,<br />.mask = (1 &lt;&lt; PB2),<br />.txBuffer = txBuff,<br />.buffer = data,<br />.length = 0,<br />.status = STOP,<br />};<br /><br />int main(void) {<br />manchesterInit(&amp;trxStruct);<br /><br />sei(); // enable interrupts<br />while (1) {<br />sendEncodedData(5);<br /><br />while (trxStruct.status != STOP); // wait for transmission end<br />_delay_ms(1000);<br />}<br />}[/syntax]<br />Kod odbiornika:<br />[syntax=c]/*<br /> * receiver.c<br /> *<br /> *  Created on: 29 mar 2016<br /> *      Author: Piotr Rudzki<br /> */<br /><br />// You must enable receiver in project CFLAGS using MAN_RXENABLED macro<br />// Data buffer size in bytes must be defined using MAN_DATA_BUFFER_SIZE macro in project CFLAGS<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;manchester_lib.h&quot;<br /><br />static uint8_t data&#91;MAN_DATA_BUFFER_SIZE&#93;;<br />static uint8_t rxBuff&#91;MAN_RX_BUFFER_SIZE&#93;; // use MAN_RX_BUFFER_SIZE macro when declaring receive buffer<br /><br />static trx_T trxStruct = {<br />.portDir = &amp;DDRB,<br />.port = &amp;PORTB,<br />.pin = &amp;PINB,<br />.mask = (1 &lt;&lt; PB0),<br />.rxBuffer = rxBuff,<br />.buffer = data,<br />.length = 0,<br />.status = STOP,<br />};<br />void dataReceived(void) {<br />putBuffer(trxStruct.buffer);<br />}<br />int main(void) {<br /><br />registerReceiveCallback(&amp;dataReceived);<br />manchesterInit(&amp;trxStruct);<br /><br />sei(); // enable interrupts<br />while (1) {<br />startReceiver(5);<br />while (trxStruct.status != NEW_DATA_IN_BUFFER); // Wait for new data in buffer<br />}<br />}[/syntax]<br />Biblioteka wraz z dokumentacją w załączniku. Aktualnie obsługuje ATmega8, ATmega16, ATmega2560 i ATmega328P. Dokumentacja może być niekompletna lub pozostawiać niejasności (pisałem na szybko), więc w razie pytań piszcie a postaram się odpowiedzieć. Żeby nie było za łatwo to wszystko w języku angielskim <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Trochę bałaganu jest w kodzie, ale poprawiam w wolnym czasie i tylko wieczorami. Mam małą pomocnicę w domu, która uwielbia dopisywać mi dodatkowy kod do programu;)<br /><br /><br />PS. No i jak ktoś ma jakieś pomysły co dodać z chęcią wysłucham.<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3170">ryba84</a> — 29 mar 2016, o 20:59</p><hr />
]]></content>
</entry>
</feed>