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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-02-17T22:22:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10693&amp;mode</id>
<entry>
<author><name><![CDATA[Benio]]></name></author>
<updated>2015-02-17T22:22:16+01:00</updated>
<published>2015-02-17T22:22:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119584#p119584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119584#p119584"/>
<title type="html"><![CDATA[Re: MCP3421 i odczyt wyniku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119584#p119584"><![CDATA[
Dzięki, działa! <br /><br />[syntax=c]wynik = (((uint32_t)(buf&#91;0&#93;&amp;0x01)&lt;&lt;16)|(buf&#91;1&#93;&lt;&lt;8)|buf&#91;2&#93;);[/syntax]<br /><br />Taka mała zmiana kodu, a tak wielka różnica w działaniu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Z drugiej strony - człowiek uczy się całe życie i głupim umiera <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Benio<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1822">Benio</a> — 17 lut 2015, o 22:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MrDarkenRahl]]></name></author>
<updated>2015-02-17T00:30:52+01:00</updated>
<published>2015-02-17T00:30:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119476#p119476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119476#p119476"/>
<title type="html"><![CDATA[Re: MCP3421 i odczyt wyniku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119476#p119476"><![CDATA[
A co się dzieje, jeżeli zmienną wynik zadeklarujesz jako &quot;unsigned long wynik&quot;? Dołączyłeś bibliotekę &lt;stdint.h&gt;? Jeżeli to nie pomoże, to wtedy trzeba będzie zrobić rzutowanie zmiennej:<br />[syntax=c]int main(void) {<br />    uint32_t wynik;<br />    wynik = (((uint32_t)(buf&#91;0&#93;&amp;0x01)&lt;&lt;16)|((uint16_t)buf&#91;1&#93;&lt;&lt;8)|(uint8_t)buf&#91;2&#93;);<br />}[/syntax]<br /><br />EDIT<br />Chociaż w sumie kolejnych rzutować już nie trzeba, więc wystarczy po prostu:<br />[syntax=c]int main(void) {<br />    uint32_t wynik;<br />    wynik = (((uint32_t)(buf&#91;0&#93;&amp;0x01)&lt;&lt;16)|(buf&#91;1&#93;&lt;&lt;8)|buf&#91;2&#93;);<br />}[/syntax]<br />A przynajmniej tak mi się wydaje <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=636">MrDarkenRahl</a> — 17 lut 2015, o 00:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Benio]]></name></author>
<updated>2015-02-16T23:48:00+01:00</updated>
<published>2015-02-16T23:48:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119472#p119472</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119472#p119472"/>
<title type="html"><![CDATA[MCP3421 i odczyt wyniku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10693&amp;p=119472#p119472"><![CDATA[
Witajcie,<br /><br />Męczę się z tym już dłuższy czas i wymiękam...<br />Robię testy z układem MCP3421 i o ile po poradnikach Mirka odczyt wyniku z rozdzielczością 16 bit nie mam problemów, to wymiękłem na rozdzielczości 18bit.<br />Zgodnie z DS dla 18 bitów zwracana wartość jest w 3 bajtach (tabelka na dole strony13). No więc odczytuję sobie po kolei te trzy bajty do buforów 0-2, zgodnie z poradnikiem Mirka - buf[0], buf[1], buf[2]. W buf[0] jest najstarsza część, w buf[2] najmłodsza. Zgodnie z DS w buf[0] ostanie 6 bitów odrzucam, 2 bit to bit znaku który mnie nie interesuje a maskuję tylko bit 1, bo zawiera on 17 bit wartości odczytywanej. Wobec tego piszę sobie taką oto linijkę kodu do wyłuskania wartości:<br />[syntax=c]uint32_t wynik;<br />wynik = (((buf&#91;0&#93;&amp;0x01)&lt;&lt;16)|(buf&#91;1&#93;&lt;&lt;8)|buf&#91;2&#93;);[/syntax]<br /><br />I otrzymuję ostrzeżenie, że:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />../main.c:50: warning: left shift count &gt;= width of type<br /></div><br /><br />Program piszę w Eclipse Indigo z toolchainem WinAVR. No i zbaraniałem - no bo przecież zadeklarowana zmienna wynik ma 32bity, to jak mogę przekraczać zakres?<br />Ma ktoś pomysł?, bo ja wysiadam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Pozdrawiam<br />Benek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1822">Benio</a> — 16 lut 2015, o 23:48</p><hr />
]]></content>
</entry>
</feed>