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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-06-01T16:55:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11029&amp;mode</id>
<entry>
<author><name><![CDATA[wrzaskun]]></name></author>
<updated>2015-06-01T16:55:19+01:00</updated>
<published>2015-06-01T16:55:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=130601#p130601</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=130601#p130601"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=130601#p130601"><![CDATA[
Hej,<br />mam szybkie pytanko, dlaczego zrobiłeś to wymnożenie i przesunięcie (zakładam że szybciej liczy)?<br />ja to podzieliłem tylko przez 65536 i wyszło to samo, choć pytam głównie dlatego, że chciałem wiedzieć dokładnie co się dzieje w pamięci przy tym zapisie.<br /><br />[syntax=c]t=(175*((uint32_t)temp*100000&gt;&gt;16));<br />t=-46+(t/100000);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=925">wrzaskun</a> — 1 cze 2015, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-13T15:12:03+01:00</updated>
<published>2015-03-13T15:12:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123365#p123365</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123365#p123365"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123365#p123365"><![CDATA[
Zawieszanie komunikacji I2C powodowało przerwanie od UART'a. Po prostu skopiowałem całą bibliotekę z innego projektu i nie popatrzyłem, że miałem włączone przerwanie i odbiornik UART a do pinu RX nie było nic wpięte <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Pięknie działa u mnie poniższy kod napisany na szybko. Temperaturę obliczam tylko w celach testów. Do obliczeń zaprzęgnę raspberry pi ponieważ całość będę wysyłał po wifi a atmega ma tylko wykonywać pomiary i je wysyłać bez marnowania czasu na obliczanie liczb zmiennoprzecinkowych. <br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 25 sty 2015<br /> *      Author: archivi<br /> */<br /><br />// ################ Załączone biblioteki #################<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;UART/UART.h&quot;<br />#include &quot;MK_TERM/mk_term.h&quot;<br />#include &quot;I2C/i2c.h&quot;<br />// #######################################################<br /><br />int main(){<br />_delay_ms(15);<br /><br />// ############## Inicjalizacja #########################<br />i2cSetBitrate(100);<br />sei(); // Globalne uruchomienie przerwań<br />uart_init(__UBRR); // Inicjalizacja RS232<br />tr_cls(1); // Czyszczenie ekranu<br />//HTU21_init();<br />// ######################################################<br />// ################# Deklaracje zmiennych ################<br />uint8_t test&#91;3&#93;;<br />uint16_t temp;<br />int32_t t;<br /><br />// #######################################################<br /><br />while(1){<br />tr_locate(1,3);<br />uart_puts(&quot;TEST&quot;);<br />HTU21_read_temp(3,test);<br />temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);<br /><br />tr_locate(10,3);<br />uart_puts(&quot;temp:&quot;);<br />uart_putlong(temp,10);<br />uart_puts(&quot;                 &quot;);<br /><br />t=(175*((uint32_t)temp*100000&gt;&gt;16));<br />t=-46+(t/100000);<br /><br />tr_locate(11,3);<br />uart_puts(&quot;t:&quot;);<br />uart_putlong(t,10);<br />uart_puts(&quot;                 &quot;);<br />_delay_ms(250);<br />}<br />}[/syntax]<br /><br />Pozostało tylko napisać sensowną bibliotekę i dopisać pomiar wilgotności <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Dzięki bardzo za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 13 mar 2015, o 15:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-03-13T11:26:28+01:00</updated>
<published>2015-03-13T11:26:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123343#p123343</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123343#p123343"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123343#p123343"><![CDATA[
Jeśli chodzi o długość przewodów to jeśli są za długie to możesz spróbować zmniejszyć prędkość komunikacji aczkolwiek u mnie na przewodach 10cm działa 200kHz i odczyt co 1s ... a powiedz mi której wersji do odczytu używasz...twojej czy tej co Ci podesłałem bo one się różnią ... u ciebie jest TWI_write(0xE3); a u mnie jest TWI_write(0xF3); //(No Hold master) i dodatkowo u mnie występuje TWI_Stop dodatkowo. Poza tym po odebraniu 3 bajtów(msb, lsb i crc) musisz je przeliczyć na realną temperaturę... Ja osobiście wzorowałem się na bibliotece z arduino i działa u mnie to bezproblemowo...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 13 mar 2015, o 11:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T23:34:58+01:00</updated>
<published>2015-03-12T23:34:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123313#p123313</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123313#p123313"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123313#p123313"><![CDATA[
Kurczę, wiesz co ? Okazało się, że te rezystory na PCB nie są podciągnięte do VCC. Mam możliwość aktywacji tych rezystorów poprzez zlutowanie zworki. Podciągnąłem obydwie linie do VCC 3.3V i komunikacja działa ale... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dostaję trzy, dokładnie trzy pomiary ( widzę jak się wartości w postaci binarnej zmieniają ) i wszystko ustaje. <br />Na tak późną godzinę przychodzi mi tylko zbyt długi odcinek linii SDA i SCL ( około 6-7cm ). Chociaż z drugiej strony w przypadku BMP180 to nie miało znaczenia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 23:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-03-12T22:41:58+01:00</updated>
<published>2015-03-12T22:41:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123305#p123305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123305#p123305"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123305#p123305"><![CDATA[
Może pokaż schemat jak to łączysz bo może tu jest problem...jaki procek...i jaki moduł z czujnikiem masz...<br />Ja mam to odpalone na xmega z ty modułem <a href="http://botland.com.pl/arduino-shield-/2401-weather-shield-stacja-pogodowa-dla-arduino.html"  class="postlink">Weather Shield</a> i zarówno HTU21D jak i MPL3115A2 działają prawidłowo<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 12 mar 2015, o 22:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T22:22:05+01:00</updated>
<published>2015-03-12T22:22:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123302#p123302</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123302#p123302"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123302#p123302"><![CDATA[
Hmm spróbowałem Twój kod i nie działa. Pętla główna zawiesza się gdzieś przy komunikacji I2C i tak sobie wisi. Wygląda na to, że brak komunikacji z czujnikiem. Rezystorów nie podpinałem bo są wlutowane ( moduł HTU21D ). Jakieś pomysły ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 22:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-03-12T21:43:37+01:00</updated>
<published>2015-03-12T21:43:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123293#p123293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123293#p123293"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123293#p123293"><![CDATA[
Ja u siebie mam coś w tym rodzaju <br />[syntax=c]void HTU21_read_temp(uint8_t len, uint8_t *buf) {<br /> <br />        TWI_start();<br />        TWI_write(0x80);<br />        TWI_write(0xF3);<br />        TWI_stop();<br />        TWI_start();<br />        TWI_write(0x81);<br />        _delay_ms(55);<br />        while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />        TWI_stop();<br />}[/syntax]<br /><br />co prawda ja to używam na xmega ale myślę iż tu też zadziała <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 12 mar 2015, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T21:24:09+01:00</updated>
<published>2015-03-12T21:24:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123288#p123288</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123288#p123288"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123288#p123288"><![CDATA[
W nocie pdf piszą, że zaraz po włączeniu zasilania czujnik potrzebuje najwyżej 15ms, kiedy to na linii SCK jest stan wysoki aby przejść do stanu spoczynku ( czyli tzw. sleep mode ). Ponadto piszą, że zalecany jest &quot;Soft restart&quot; po uruchomieniu. Przynajmniej ja to tak rozumiem.<br /><br />Zabrałem się za kod od nowa. Tym razem wklejam całość.<br /><br />[syntax=c]// ################ Załączone biblioteki #################<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;UART/UART.h&quot;<br />#include &quot;MK_TERM/mk_term.h&quot;<br />#include &quot;I2C/i2c.h&quot;<br />// #######################################################<br /><br />int main(){<br />_delay_ms(15);<br /><br />// ############## Inicjalizacja #########################<br /><br />i2cSetBitrate(100);<br />sei(); // Globalne uruchomienie przerwań<br />uart_init(__UBRR); // Inicjalizacja RS232<br />tr_cls(1); // Czyszczenie ekranu<br />HTU21_init();<br />// ######################################################<br /><br />// ################# Deklaracje zmiennych ################<br />uint8_t test&#91;3&#93;;<br />// #######################################################<br /><br />while(1){<br />HTU21D_read_temp(3,test);<br />tr_locate(3,3);<br />uart_putlong(test&#91;0&#93;,2);<br />uart_puts(&quot;                &quot;);<br />tr_locate(4,3);<br />       uart_putlong(test&#91;1&#93;,2);<br />uart_puts(&quot;                &quot;);<br />tr_locate(5,3);<br />        uart_putlong(test&#91;2&#93;,2);<br />uart_puts(&quot;                &quot;);<br />_delay_ms(1000);<br /><br />}<br />}[/syntax]<br /><br />A tu bilbioteka I2C:<br />[syntax=c]/*<br /> * i2c_twi.c<br /> *<br /> *  Created on: 2010-09-07<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br /><br />#include &quot;i2c.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br />void i2cSetBitrate(uint16_t bitrateKHz) {<br />uint8_t bitrate_div;<br /><br />bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />if(bitrate_div &gt;= 16)<br />bitrate_div = (bitrate_div-16)/2;<br /><br />TWBR = bitrate_div;<br />}<br /><br />void TWI_start(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTA);<br />while (!(TWCR&amp;(1&lt;&lt;TWINT)));<br />}<br /><br />void TWI_stop(void) {<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO);<br />while ( (TWCR&amp;(1&lt;&lt;TWSTO)) );<br />}<br /><br />void TWI_write(uint8_t bajt) {<br />TWDR = bajt;<br />TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);<br />while ( !(TWCR&amp;(1&lt;&lt;TWINT)));<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)));<br />return TWDR;<br />}<br /><br /><br /><br />void TWI_write_buf( uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf ) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />while (len--) TWI_write(*buf++);<br />TWI_stop();<br />}<br /><br /><br /><br />void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br />}<br /><br />void HTU21_read_temp(uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(0x80);<br />TWI_write(0xE3);<br />TWI_start();<br />TWI_write(0x81);<br />_delay_ms(50);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br />}<br /><br />void HTU21_init(){<br />TWI_start();<br />TWI_write(0x80);<br />TWI_write(0xFE);<br />TWI_stop();<br />}[/syntax]<br /><br /><br />Tak jak zasugerowałeś, czekam 15ms na samym początku. W dodatku dopisałem funkcję realizującą &quot;soft restart&quot;.<br />Sprawdziłem połączenie. Czujnik przepiąłem w inne miejsce stykówki, skróciłem przewody, sprawdziłem napięcie, dokładnie 3.3V.<br />Dalej nic <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 21:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-03-12T20:07:26+01:00</updated>
<published>2015-03-12T20:07:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123270#p123270</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123270#p123270"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123270#p123270"><![CDATA[
Stan wysoki na SCK masz w zasadzie ustawiony zaraz po włączeniu, bo po resecie wszystkie porty mikrokontrolera są ustawione jako wejścia. Masz też zapewne włączone rezystory podciągające do +Ucc dla linii magistrali I2C - czyli dla linii SCK i SDA. Zatem jest zapewniony stan wysoki na SCK. Tylko zanim zainicjujesz porty czy magistralę I2C to powinieneś po prostu umieścić jednego delay'a - _delay_ms(15);<br />Popatrz jeszcze do noty pdf tego układu, ale wydaje mi się to konieczne żeby wyszedł ze stanu &quot;sleep mode&quot;.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 12 mar 2015, o 20:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T18:10:23+01:00</updated>
<published>2015-03-12T18:10:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123263#p123263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123263#p123263"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123263#p123263"><![CDATA[
<div class="quotetitle">lemurek napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">archivi napisał(a):</div><div class="quotecontent">Jeżeli chodzi o adres to 0x40 to nie to samo co zapis 0b10000000, a 0x40 +1 = 0b10000001 ?<br /></div><br /><br />Jeśli chodzi o 0x40 to jest 0b1000000 (7bit) i w takim przypadku powinieneś adres podać tak <br />dla zapisu <br />(0x40&lt;&lt;1) | 0x00<br /><br />a dla odczytu <br />(0x40&lt;&lt;1) | 0x01<br /><br />co da w efekcie dla zapisu adres 0b10000000 a dla odczytu 0b10000001</div><br /><br />Hmm, faktycznie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zgodnie z Waszymi podpowiedziami ustawiam adresy na sztywno i sekwencja pomiaru i odczytu temperatury według datasheet'u wygląda według mnie tak:<br /><br />[syntax=c]void HTU21D_read_temp(uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(0x80);<br />TWI_write(0xE3);<br />TWI_start();<br />TWI_write(0x81);<br />_delay_ms(50);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br /><br />}[/syntax]<br /><br />Z tym, że jeszcze nie doszedłem do tego jak wystawić stan wysoki na linie SCK...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 18:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2015-03-12T17:57:14+01:00</updated>
<published>2015-03-12T17:57:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123260#p123260</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123260#p123260"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123260#p123260"><![CDATA[
WItam <br />nie wiem z jakiej biblioteki Mirka korzystasz ale powinieneś wpisać adres bez bitu zapisu lub odczytu normalnie z datasheeta<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 12 mar 2015, o 17:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lemurek]]></name></author>
<updated>2015-03-12T16:30:19+01:00</updated>
<published>2015-03-12T16:30:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123248#p123248</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123248#p123248"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123248#p123248"><![CDATA[
<div class="quotetitle">archivi napisał(a):</div><div class="quotecontent"><br />Jeżeli chodzi o adres to 0x40 to nie to samo co zapis 0b10000000, a 0x40 +1 = 0b10000001 ?<br /></div><br /><br />Jeśli chodzi o 0x40 to jest 0b1000000 (7bit) i w takim przypadku powinieneś adres podać tak <br />dla zapisu <br />(0x40&lt;&lt;1) | 0x00<br /><br />a dla odczytu <br />(0x40&lt;&lt;1) | 0x01<br /><br />co da w efekcie dla zapisu adres 0b10000000 a dla odczytu 0b10000001<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=776">lemurek</a> — 12 mar 2015, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T16:17:46+01:00</updated>
<published>2015-03-12T16:17:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123245#p123245</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123245#p123245"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123245#p123245"><![CDATA[
Nie ustawiam stanu wysokiego przez 15ms bo przyznam się nie wiem nawet jak. Jeżeli chodzi o adres to 0x40 to nie to samo co zapis 0b10000000, a 0x40 +1 = 0b10000001 ?<br />Korzystam z biblioteki Pana Mirka i poza inicjalizacją i ustawieniem prędkości magistrali I2C w programie nie ma nic ciekawego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 16:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2015-03-12T15:26:10+01:00</updated>
<published>2015-03-12T15:26:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123242#p123242</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123242#p123242"/>
<title type="html"><![CDATA[Re: HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123242#p123242"><![CDATA[
No dosyć to skromnie opisałeś, ale tak na pierwszy rzut oka to widzę , że podajesz jako adres układu wartość 0x40 a według noty aplikacyjnej adresem do zapisu jest wartość 0x80 a do odczytu 0x81. Po drugie czy ustawiasz stan wysoki na linii SCK przez conajmniej 15 ms po włączeniu układu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 12 mar 2015, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[archivi]]></name></author>
<updated>2015-03-12T14:59:14+01:00</updated>
<published>2015-03-12T14:59:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123238#p123238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123238#p123238"/>
<title type="html"><![CDATA[HTU21D - komunikacja I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11029&amp;p=123238#p123238"><![CDATA[
Witam,<br /><br />Nie mogę sobie poradzić z komunikacją I2C z czujnikiem HTU21D.  Poradziłem sobie z BMP180, ale z tym za cholerę nie mogę się skomunikować. Bardzo proszę o naprowadzenie na właściwe tory... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />[syntax=c]void HTU21D_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_start();<br />TWI_write(SLA + 1);<br />_delay_ms(50);<br />while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />TWI_stop();<br /><br />}[/syntax]<br /><br />Następnie w pętli głównej co sekundę próbuję, wyświetlić trzy bajty...<br /><br />[syntax=c]HTU21D_read_buf(0x40,0xE3,3,test);<br />tr_locate(3,3);<br />uart_putlong(test&#91;0&#93;,2);<br />uart_puts(&quot;             &quot;);<br />tr_locate(4,3);<br />    uart_putlong(test&#91;1&#93;,2);<br />uart_puts(&quot;             &quot;);<br />tr_locate(5,3);<br />    uart_putlong(test&#91;2&#93;,2);<br />uart_puts(&quot;             &quot;);<br />tr_locate(6,3);<br />_delay_ms(1000);[/syntax]<br /> <br /><br />Prędkość magistrali I2C to 100kHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1389">archivi</a> — 12 mar 2015, o 14:59</p><hr />
]]></content>
</entry>
</feed>