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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-04-27T10:51:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6874&amp;mode</id>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-27T10:51:42+01:00</updated>
<published>2014-04-27T10:51:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79402#p79402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79402#p79402"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79402#p79402"><![CDATA[
Generalnie &quot;produktem finalnym&quot; miały być wskazania przechylenia i pochylenia czujnika, wyrażone w stopniach. Kolegę interesują wartości podawane w 'g', czy jakieś inne? Obsługę wyświetlania mam zrobioną na LCD alfanumerycznym i wygląda to następująco...<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/58771ccbd603480683dd7391c345619a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/58771ccbd603480683dd7391c345619a.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 27 kwi 2014, o 10:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2014-04-27T05:24:38+01:00</updated>
<published>2014-04-27T05:24:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79393#p79393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79393#p79393"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79393#p79393"><![CDATA[
Jeżeli teraz wskazania masz OK, to może pokaż jak to wygląda w terminalu. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jestem ciekawy bo mam do uruchomienia moduły IMU 10DOF z MPU6050 + HMC5883L + MS5611 na pokładzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 27 kwi 2014, o 05:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-26T23:20:05+01:00</updated>
<published>2014-04-26T23:20:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79386#p79386</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79386#p79386"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79386#p79386"><![CDATA[
Problem rozwiązany. Powodem zła kolejność odczytywanych bajtów LSB i MSB.<br /><br />Dziękuję koledze atmel za pomoc.<br />Temat do zamknięcia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 26 kwi 2014, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-26T14:03:24+01:00</updated>
<published>2014-04-26T14:03:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79200#p79200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79200#p79200"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79200#p79200"><![CDATA[
W dalszym ciągu nie umiem sobie poradzić z problemem <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Z kodu wyrzuciłem delay'a. Po pomnożeniu wartości przez 0.061, co odpowiada rozdzielczości 1LSB przy +/- 2g, otrzymałem takie wartości.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/c59178b9db1e3b3e8b86b18475ecef7a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/c59178b9db1e3b3e8b86b18475ecef7a.jpg" alt="Obrazek" /></a><br /><br /><br /><a href="http://www.st.com/web/en/resource/technical/document/datasheet/DM00057547.pdf"  class="postlink">http://www.st.com/web/en/resource/technical/document/datasheet/DM00057547.pdf</a><br /><br />Czy odpowiednie ustawienie bitów AHPM[1:0] w rejestrze CTRL7, umożliwi mi włączenie filtra górnoprzepustowego, czy trzeba jeszcze coś ustawiać aby on chodził? <br />Zastanawiałem się też nad podłączeniem przerwania z czujnika do ATmegi, jednak wyjście INT2 w LSM nie posiada konwertera napięć i tu jest moje pytanie czy mogę połączyć je z INT0 w ATmedze, skoro poziom będzie maks 3.3V... Kiedyś gdzieś wyczytałem, że AVR rozpoznają logiczną '1' od poziomu 0.6*Vcc... Przy zasilaniu 5V, byłyby to 3V.<br /><br />Z góry dziękuję za wszelką pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 26 kwi 2014, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-25T15:58:21+01:00</updated>
<published>2014-04-25T15:58:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79145#p79145</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79145#p79145"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79145#p79145"><![CDATA[
Po zastosowaniu się do kolegi wskazówek odczyty z osi Z są następujące...<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/9a3ba024b3b8a316f013151556e68b05.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/9a3ba024b3b8a316f013151556e68b05.png" alt="Obrazek" /></a><br /><br />Chyba zmniejszył się &quot;rozrzut&quot; wyników, jednak zastanawiające jest to, że przy nieruchomym czujniku, wartości jak widać, cały czas znacznie skaczą... Czy możliwe jest, że co jakiś czas do tablicy bufor2, trafiają śmieci?<br /><br />-------------------------------------------------<br /><br />Poprawiłem błąd w bibliotece i2c, związany z funkcją TWI_stop(). Dla położenia czujnika osią Z równolegle do płaszczyzny, wyniki się zmieniły, jednak dalej to nie jest to raczej, ponieważ dla czujnika w bezruchu odczyty raczej powinny być bez przerwy porównywalne...<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/12a4e2805f57f12c4e741b1bf5a4c672.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/12a4e2805f57f12c4e741b1bf5a4c672.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 25 kwi 2014, o 15:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-25T08:08:58+01:00</updated>
<published>2014-04-25T08:08:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79120#p79120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79120#p79120"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79120#p79120"><![CDATA[
Oczywiście niezbędne są funkcje do wyświetlania (wysyłania) liczb zmiennoprzecinkowych, a nie &quot;intów&quot;. W tym przypadku trzeba by było dołączać pewne biblioteki do linkera, a niepotrzebnie to utrudni sprawę, więc można zaokrąglić te wartości przy wyświetlaniu funkcją round, z jednoczesnym rzutowaniem jej wyniku na typ int32_t tzn.:<br /><br />[syntax=c]uart_putint((int32_t)round(wynikZ), 10);[/syntax]<br />Możliwe, że będzie potrzeba dołączenia biblioteki stdio.h lub math.h.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />Oczywiście niezbędne są funkcje do wyświetlania (wysyłania) liczb zmiennoprzecinkowych, a nie &quot;intów&quot;. W tym przypadku trzeba by było dołączać pewne biblioteki do linkera, a niepotrzebnie to utrudni sprawę, więc można zaokrąglić te wartości przy wyświetlaniu funkcją round, z jednoczesnym rzutowaniem jej wyniku na typ int32_t tzn.:<br />[syntax=c]uart_putint ((int32_t)round (wynikZ), 10);[/syntax]<br /><br />Możliwe, że będzie potrzeba dołączenia biblioteki stdio.h lub math.h.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 25 kwi 2014, o 08:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-25T06:41:03+01:00</updated>
<published>2014-04-25T06:41:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79116#p79116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79116#p79116"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79116#p79116"><![CDATA[
Po zmienieniu zmiennych wynikX, wynikZ, i Y, na typ float... Cały czas widać bardzo dziwne wyniki, dla czujnika skierowanego osią Z w dół.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/ef2037cf346af63321aa8ec51690d0d9.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/ef2037cf346af63321aa8ec51690d0d9.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 25 kwi 2014, o 06:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-04-24T23:50:41+01:00</updated>
<published>2014-04-24T23:50:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79112#p79112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79112#p79112"/>
<title type="html"><![CDATA[Re: Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79112#p79112"><![CDATA[
Witamy serdecznie  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Z pobieżnego przejrzenia kodu strzelam, że zmienne wynikX, wynikY i wynikZ powinny być większego typu, a najlepiej float lub double.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 24 kwi 2014, o 23:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MAK]]></name></author>
<updated>2014-04-24T21:55:14+01:00</updated>
<published>2014-04-24T21:55:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79104#p79104</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79104#p79104"/>
<title type="html"><![CDATA[Odczyt osi LSM303D [ATmega32][C]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6874&amp;p=79104#p79104"><![CDATA[
Witam  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Jako, że to mój pierwszy post na forum, chciałbym najsampierw się &quot;uroczyście&quot; ze wszystkimi przywitać. Więc witajcie drodzy forumowicze.  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Słowem opisu, mam na imię Kamil, lat 17. <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Jednak do rzeczy...<br />Jestem w trakcie czytania Bluebooka i postanowiłem dłuższą przerwę zrobić przy obsłudze I2C. Pożyczyłem od kumpla moduł z LSM303D czyli ackel+magneto, i postanowiłem sobie napisać w C obsługę tegoż czujnika <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Notę przewertowałem, internet przekopałem no i końcem końców coś tam skleciłem. Moje pytanie, które się rodzi jest następujące...<br />Czy poniższe wskazania akcelerometru, dałem tu przykładowo oś Z, są wiarygodne, czy wszystko tutaj działa... <br />Wszystko złożone na zestawie ATB <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Taktowane kwarcem 11.0592MHz.<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/3616/9c19b5318a69d88650ba23d0817286bb.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/3616/9c19b5318a69d88650ba23d0817286bb.jpg" alt="Obrazek" /></a><br /><br />Wskazania wydają mi się dosyć bardzo dziwne. Więc jeśli coś jest nie tak, to wcale się nie zdziwię, i po to przychodzę do Was o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Dodam, że czujnik przez większość pomiaru z rzutu był skierowany ku górze.<br />Poniżej jeszcze zamieszam kod.<br />Wszelkie rady mile widziane <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><span style="color: #0000FF">[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;LSM303D/lsm303d.h&quot;<br />#include &quot;MKUART/mkuart.h&quot;<br /><br /><br /><br />int bufor1&#91;6&#93;;<br />int bufor2&#91;6&#93;;<br /><br />int wynikX;<br />int wynikY;<br />int wynikZ;<br /><br />int wynikX1;<br />int wynikX2;<br />int wynikY1;<br />int wynikY2;<br />int wynikZ1;<br />int wynikZ2;<br /><br /><br />int main(void)<br />{<br /><br />USART_Init(__UBRR);<br />i2cSetBitrate(100);<br />initLSM303Di2c();<br />sei();<br /><br />while(1){<br /><br />TWI_read_buf( LSM303D_ADDR, OutDataReg_X_M_L , 6, bufor1 );// odczyt rejestrów danych poszczególnych osi akcelerometru<br />TWI_read_buf( LSM303D_ADDR, OutDataReg_X_A_L , 6, bufor2 );     // odczyt rejestrów danych poszczególnych osi magnetometru<br /><br /><br /><br />wynikX1 = bufor2&#91;0&#93;;<br />wynikX2 = bufor2&#91;1&#93;;<br />wynikX =(((wynikX1)&lt;&lt;8) | (wynikX2));<br /><br />wynikY1 = bufor2&#91;2&#93;;<br />wynikY2 = bufor2&#91;3&#93;;<br />wynikY =(((wynikY1)&lt;&lt;8) | (wynikY2));<br /><br />wynikZ1 = bufor2&#91;4&#93;;<br />wynikZ2 = bufor2&#91;5&#93;;<br />wynikZ =(((wynikZ1)&lt;&lt;8) | (wynikZ2));<br /><br />uart_putint(wynikZ,10);<br />uart_puts(&quot;  : Os Z \r \n   &quot;);<br /><br /><br /><br />_delay_ms(250);<br /><br />}<br /><br /><br />}<br /><br />void initLSM303Di2c(void)<br />{<br />//TWI_start();<br />//TWI_write(ADDR_WRITE);<br />//TWI_write(CTRL_Reg0);<br />//TWI_write(WriteCTRL0);<br />//TWI_stop();<br /><br />TWI_start();<br />TWI_write(ADDR_WRITE);<br />TWI_write(CTRL_Reg1);<br />TWI_write(WriteCTRL1);<br />TWI_stop();<br /><br />//TWI_start();<br />//TWI_write(ADDR_WRITE);<br />//TWI_write(CTRL_Reg5);<br />//TWI_write(WriteCTRL5);<br />//TWI_stop();<br /><br />TWI_start();<br />TWI_write(ADDR_WRITE);<br />TWI_write(CTRL_Reg7);<br />TWI_write(WriteCTRL7);<br />TWI_stop();<br /><br />}[/syntax]</span><br /><br />[syntax=c]#ifndef LSM303D_H_<br />#define LSM303D_H_<br /><br />#define LSM303D_ADDR0x3A<br />#define ADDR_WRITE0x3A<br />#define ADDR_READ0x3B<br /><br /><br />#define OutDataReg_X_M_L0x88// w rejestrach jest włączana opcja autoinkrementacji dla osi X,Y,Z magnetometru<br />#define OutDataReg_Y_M_L0x8A// i dla osi X,Y,Z akcelerometru<br />#define OutDataReg_Z_M_L0x8C<br /><br />#define OutDataReg_X_A_L0xA8<br />#define OutDataReg_Y_A_L0xAA<br />#define OutDataReg_Z_A_L0xAC<br /><br />#define OutDataReg_X_M_H0x89<br />#define OutDataReg_Y_M_H0x8B<br />#define OutDataReg_Z_M_H0x8D<br /><br />#define OutDataReg_X_A_H0xA9<br />#define OutDataReg_Y_A_H0xAB<br />#define OutDataReg_Z_A_H0xAD<br /><br />#define WHO_I_AM0x0F<br /><br />#define CTRL_Reg00x1F<br />#define CTRL_Reg10x20<br />#define CTRL_Reg20x21<br />#define CTRL_Reg30x22<br />#define CTRL_Reg40x23<br />#define CTRL_Reg50x24<br />#define CTRL_Reg60x25<br />#define CTRL_Reg70x26<br /><br />#define FIFO_CTRL0x2E// Rejestr kontrolny bufora FIFO, typu read/write.<br />#define FIFO_STAT0x2F// Status rejestru bufora FIFO, typu read.<br /><br />#define STATUS_A0x27<br /><br />#define OFFSET_X_L_M0x16<br />#define OFFSET_Y_L_M0x18<br />#define OFFSET_Z_L_M0x1A<br /><br />#define OFFSET_X_H_M0x17<br />#define OFFSET_Y_H_M0x19<br />#define OFFSET_Z_H_M0x1B<br /><br />#define WriteCTRL00x04// High-pass filter enabled for click function.<br />#define WriteCTRL10x27// Makro wybudzające akcelerometr, oraz ustawiające odswiezanie na 6.25Hz<br />#define WriteCTRL40x08// Accelerometer data-ready signal on INT2.<br />#define WriteCTRL50// Makro ustawiajace częstotliwosc samplowania magnetometru na 3.125Hz<br />#define WriteCTRL70xA0// High-pass filter mode selection: normal mode &amp; Magnetic sensor mode selection: Continuous-conversion mode<br /><br />void initLSM303Di2c(void);<br /><br />#endif <br />/* LSM303D_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3616">MAK</a> — 24 kwi 2014, o 21:55</p><hr />
]]></content>
</entry>
</feed>