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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-31T14:54:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20527&amp;mode</id>
<entry>
<author><name><![CDATA[aiwa]]></name></author>
<updated>2018-03-31T14:54:29+01:00</updated>
<published>2018-03-31T14:54:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206329#p206329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206329#p206329"/>
<title type="html"><![CDATA[Re: Problem z I2C, MPU6050]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206329#p206329"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Bo tak to jest w andruino - niby coś programujesz a nawet nie wiesz jak to działa ...<br /></div><br /><br />Dlatego unikam jak ognia korzystania z Arduino IDE<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />adresy nie są żadne 7-bitowe - tylko podaje się w ramach adresu zawsze 7 najstarszych bitów bo najmłodszy bit ZAWSZE odpowiedzialny jest za ZAPIS albo ODCZYT<br /></div><br /><br />Super! Wszystko teraz rozumiem <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7200">aiwa</a> — 31 mar 2018, o 14:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-03-31T14:35:58+01:00</updated>
<published>2018-03-31T14:35:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206324#p206324</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206324#p206324"/>
<title type="html"><![CDATA[Re: Problem z I2C, MPU6050]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206324#p206324"><![CDATA[
<div class="quotetitle">aiwa napisał(a):</div><div class="quotecontent"><br />Co ciekawe, nigdy nie sprawdzałem kwestii adresu, gdyż w programach na arduino IDE wszyscy używają 0x68.<br /></div><br />Bo tak to jest w andruino - niby coś programujesz a nawet nie wiesz jak to działa ...<br /><br />adresy nie są żadne 7-bitowe - tylko podaje się w ramach adresu zawsze 7 najstarszych bitów bo najmłodszy bit ZAWSZE odpowiedzialny jest za ZAPIS albo ODCZYT ... i jak się wie takie podstawy to się już rozumie o co chodzi z adresami i nie popełnia się takich błędów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 31 mar 2018, o 14:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aiwa]]></name></author>
<updated>2018-03-31T14:30:25+01:00</updated>
<published>2018-03-31T14:30:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206321#p206321</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206321#p206321"/>
<title type="html"><![CDATA[Re: Problem z I2C, MPU6050]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206321#p206321"><![CDATA[
<div class="quotetitle">mczarny napisał(a):</div><div class="quotecontent"><br />W/g mnie adres to 0xD0 lub 0xD1 w zależności od pinu AD0<br /></div><br /><br />Nie wiem dlaczego? Piszą że adres 7 bitowy.<br /><br />Co nie zmienia faktu, że zaczęło działać od razu <img src="https://forum.atnel.pl/images/smilies/icon_mrgreen.gif" alt=":mrgreen:" title="Pan Zielony" /> Dziękuję pięknie.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Co ciekawe, nigdy nie sprawdzałem kwestii adresu, gdyż w programach na arduino IDE wszyscy używają 0x68.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7200">aiwa</a> — 31 mar 2018, o 14:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mczarny]]></name></author>
<updated>2018-03-31T14:06:49+01:00</updated>
<published>2018-03-31T14:06:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206318#p206318</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206318#p206318"/>
<title type="html"><![CDATA[Re: Problem z I2C, MPU6050]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206318#p206318"><![CDATA[
cześć<br />Jak Ci wyszło, że adres I2C to 0x68?<br /><a href="https://obrazkiforum.atnel.pl/4651/46ba62ae8099daaf00bac327ac6331ea.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4651/46ba62ae8099daaf00bac327ac6331ea.JPG" alt="Obrazek" /></a><br />W/g mnie adres to 0xD0 lub 0xD1 w zależności od pinu AD0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4651">mczarny</a> — 31 mar 2018, o 14:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[aiwa]]></name></author>
<updated>2018-03-30T19:36:03+01:00</updated>
<published>2018-03-30T19:36:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206283#p206283</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206283#p206283"/>
<title type="html"><![CDATA[Problem z I2C, MPU6050]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20527&amp;p=206283#p206283"><![CDATA[
Witam,<br />postanowiłem poprosić tu o pomoc, gdyż skończyły mi się pomysły na rozwiązanie problemu.<br />Korzystam ze znanej wszystkim biblioteki TWI i na tej podstawie testuję MPU6050. <br />Jednakże nie działa komunikacja I2C. <br />Do debugowania zamiast diody używam LCD (na którym ostatecznie będę wyświetlał wyniki z MPU).<br />Oto main:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lib/biblio.h&quot;<br /><br />int main(void) {<br />init_TWI();<br />init_lcd();<br />init_mpu6050();<br />_delay_ms(50);<br />while(1){<br />mpu6050_read();<br />lcd_clrscr();//do tego miejsca program już nie dochodzi<br />lcd_puti(bufor&#91;0&#93;);<br />_delay_ms(50);<br />}<br />return 0;<br />}[/syntax]<br /><br />Biblioteka TWI:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;biblio.h&quot;<br /><br />#define TWI_PORTC<br />#define SCL_PIN7<br />#define SDA_PIN6<br />#define ACK 1<br />#define NACK 0<br />void TWI_start(); //jak w BB<br />void TWI_stop(); //jak w BB<br />void TWI_write(uint8_t bajt); //jak w BB<br />uint8_t TWI_read(uint8_t ack); //jak w BB<br /><br />void init_TWI(void){<br />DDR(TWI_PORT) |= (1&lt;&lt;SCL_PIN);<br />DDR(TWI_PORT) |= (1&lt;&lt;SDA_PIN);<br />    PORT(TWI_PORT) |= (1&lt;&lt;SCL_PIN);<br />    PORT(TWI_PORT) |= (1&lt;&lt;SDA_PIN);<br />    TWBR = 0b00001101;//Do zmiany I2C frequency, ma byc max 400kHz dla tego mpu.<br />    _delay_ms(5);<br />}<br /><br />void TWI_write_buf(uint8_t SLA, uint8_t ADR, uint8_t LEN, uint8_t *BUF){<br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(ADR);<br />while(LEN--)<br />TWI_write(*BUF++);<br />TWI_stop();<br />}<br /><br />//odczytanie LEN bajtów z pamięci ADR urządzenia SLA i zapisanie w buforze BUF<br />void TWI_read_buf(uint8_t SLA, uint8_t ADR, uint8_t LEN, uint8_t *BUF){<br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(ADR);<br />TWI_start();<br />TWI_write(SLA+1);<br />while(LEN--)<br />*BUF++ = TWI_read(LEN ? ACK : NACK); //gdy program wchodzi tu w TWI_read wiesza się <br />TWI_stop();<br />}<br /><br />uint8_t TWI_read(uint8_t ack){<br />TWCR = (1&lt;&lt;TWINT) | (ack&lt;&lt;TWEA) | (1&lt;&lt;TWEN);<br />while(!(TWCR&amp;(1&lt;&lt;TWINT)));//nieskończone oczekiwanie :(<br />return TWDR;<br />}<br /><br />//tu funkcje TWI start, stop, write, jak w książce :)[/syntax]<br /><br />I mój plik .c z prostą obsługą modułu MPU6050:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &quot;biblio.h&quot;<br /><br />#define mpu6050_adr 0x68 //adres urządzenia w I2C<br />#define PWR_MGMT_10x6B //adres rejestru Power Management tego mpu<br />#define DATA_REG0x3B //adres rejestru z danymi<br />uint8_t bufor&#91;14&#93;;<br /><br />void init_mpu6050(void) {<br />bufor&#91;0&#93; = 0b00001000;//z noty katalogowej MPU: 4 bit na &quot;1&quot; wyłącza czujnik temp., siódmy bit (LSB-1) na &quot;0&quot; wyłącza sleep mode<br />for(uint8_t a=1; a&lt;8; a++)<br />bufor&#91;a&#93;=0;<br />TWI_write_buf(mpu6050_adr, PWR_MGMT_1, 1, bufor);//wyłączenie sleep mode i czujnika temperatury<br />}<br /><br />void mpu6050_read(void) {<br />TWI_read_buf(mpu6050_adr, DATA_REG, 14, bufor);<br />}[/syntax]<br /><br />Pliku biblio.h nie wrzucałem, bo wszystkie 'define' wplotłem w powyższe kody plików *.c. <br />Procesor to Atmega32, 16MHz, wszystko ładnie ustawione w projekcie (sczytane przez eclipse).<br /><br />Jeśli chodzi o PODŁĄCZENIE, jest bardzo proste więc szybkie fotki zamiast schematu:<br /><a href="https://obrazkiforum.atnel.pl/7200/805b88026f4f97cc28471bbee343e3cf.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/7200/805b88026f4f97cc28471bbee343e3cf.jpg" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/7200/9eecd521aa83d0fa74f6f624b18f2ede.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/7200/9eecd521aa83d0fa74f6f624b18f2ede.jpg" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/7200/c01336b12a291fa48e780fb2524bd5cb.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/7200/c01336b12a291fa48e780fb2524bd5cb.jpg" alt="Obrazek" /></a><br /><br /><a href="https://obrazkiforum.atnel.pl/7200/8b7ed042a70832215f6ca700972597dc.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/7200/8b7ed042a70832215f6ca700972597dc.jpg" alt="Obrazek" /></a><br /><br />Nie jestem pewien czy wszystko się zgadza. Jak widać, podłączyłem MPU bezpośrednio do zasilania z płytki, gdyż...<br />Na konwerterze (który dziś kupiłem) po podłączeniu 5V do HV, na pinie LV pojawia się 2,8V. Nie wiem czy to normalne?<br />Z tego powodu MPU zasilane jest z 5V, ale działa (świeci się dioda) również na 3.3V z płytki. Wtedy na LV konwertera jest 3.3V.<br /><br />Bardzo proszę o pomoc, ponieważ niestety nie mam innego urządzenia z I2C żeby sprawdzić program i konwerter <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />@Edit: dołączam 2 noty katalogowe o MPU6050 z których korzystam<br /><br />@Edit 2: był błąd w podłączeniu, zająłem piny PC6 i PC7 zamiast PC0 i PC1 (SCL i SDA). Poprawiłem, ale wciąż nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7200">aiwa</a> — 30 mar 2018, o 19:36</p><hr />
]]></content>
</entry>
</feed>