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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-04-10T20:40:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18114&amp;mode</id>
<entry>
<author><name><![CDATA[fobos]]></name></author>
<updated>2017-04-10T20:40:04+01:00</updated>
<published>2017-04-10T20:40:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186843#p186843</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186843#p186843"/>
<title type="html"><![CDATA[Re: BB 4.12 OneWire funkcja ow_bit_io]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186843#p186843"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A jaki masz efekt gdy podłączysz &quot;cóś&quot;?<br /></div><br />Póki co to tylko moje medytacje, ale po dotarciu do końca BB i przed GB  chciałby prę swoich pomysłów spróbować zrealizować.<br />zenekjar dzięki za opinię w sprawie.<br />Czasami zdarza się, że coś zakumkam prawie dobrze i i to prawie po jakimś czasie gdzieś w innym miejscu mi nie pasuje i tracę sporo czasu na korektę.<br />Dzisiaj patrzyłem jak szpak w taki fragmencik z funkcji ow_byte_wr <br />if( j ) b |= 0x80;<br />funkcja obsługuje zapis/odczyt bajtów wykorzystując funkcje ow_bit_io  ( napisałem odczyt bo tak naprawdę całą robotę READ wykonuje ow_byte_wr  podobnie jak funkcja ow_bit_io dla bitów).<br />bardzo sprytne, no i znowu nie wiem czy moja historyjka jest poprawna w dużym skrócie dla READ<br />[syntax=c]uint8_t ow_byte_wr( uint8_t b )<br />{<br />uint8_t i = 8, j;<br />/* i=8 (0000 1000) odlicza 8 bitów kompletując bajt*/<br />/* dla READ b= 1111 1111  */<br />do {<br />j = ow_bit_io( b &amp; 1 );<br />/* pomijam WRITE bo READ jest ciekawsze<br /> * READ dwa przypadki:<br /> * a. Slave nadaje 0 -&gt; j=0<br /> * b. Slave nadaje 1 -&gt; j=1  */<br /><br />b &gt;&gt;= 1;<br />/* przesuń w prawo o 1 dla READ b=1111 1111 po przesunięciu<br /> * a. b=0111 1111<br /> * b. b=0111 1111 i tutaj dopiero widać po co ten if */<br /><br />if( j ) b |= 0x80;<br />/* dla j=0 (a) zmienna b jest ustawiona prawidłowo b=0111 111<br /> * dla j=1 (b) if ustawi 1 w zmiennej b=1111 1111<br /> * powyższe dotyczy 1-szego bitu i tak kolejne 7 bitów aż cały bajt będzie złożony  */<br />} while( --i );<br /><br />return b;<br />}[/syntax]<br /><br />ale poezja, no właśnie czy interpretacja jest poprawna ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7548">fobos</a> — 10 kwi 2017, o 20:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fobos]]></name></author>
<updated>2017-04-09T18:39:26+01:00</updated>
<published>2017-04-09T18:39:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186739#p186739</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186739#p186739"/>
<title type="html"><![CDATA[BB 4.12 OneWire funkcja ow_bit_io]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18114&amp;p=186739#p186739"><![CDATA[
Od jakiegoś czasu przyglądam się funkcji ow_bit_io  „no i bywają dni, że tak patrzymy na siebie i nic, na szczęście bywają też te dni w których patrzymy na siebie i coś chyba iskrzy”. No i właśnie chciałbym Was prosić o opinię czy to moje  „patrzenie” coś dało, zrobiłem sobie taką historyjkę która opisuje funkcje ow_bit_io  wkleiłem poniżej, napiszcie proszę co w mojej historyjce nie jest prawdą. <br /><br />[syntax=c]/* funkcja obsługuje WRITE/READ Time Slot, dla READ TS wartość logiczna b TRUE (P prawda),<br /> * stan linii OW zalezy od kierunku pinu IO; sterowanie poprzez rejestr DDR<br /> * OW_DIR_OUT(); -&gt; linia OW stan LO(0)<br /> * OW_DIR_IN(); -&gt; linia OW stan HI(1) + pullup resistor<br /> * łaczny czas kazdego TS 60us  */<br /><br />uint8_t ow_bit_io( uint8_t b )<br />{<br />uint8_t sreg;<br />/* zmienna sreg przechowuje wartosc rejestru SREG  */<br /><br />sreg=SREG;<br />/* kopiuj ustawienia rejestru SREG */<br /><br />cli();<br />/* zablokuj przerwania, ponizej blok instrukcji ktorych wykonanie jest krytyczne czasowo (atomowo) */<br /><br />OW_DIR_OUT(); // drive bus low<br />/*  ustaw linie OW low LO(0)  */<br /><br />_delay_us(1);<br />/* Recovery-Time wuffwuff was 1 */<br /><br /><br />if ( b ) OW_DIR_IN(); // if bit is 1 set bus high (by ext. pull-up)<br />/* dla: WRITE TS<br /> * - jezeli b=1 ustaw OW high (1) P-&gt;OW_DIR_IN(); rezystor pullup ustawia stan Hi(1)<br /> * - jezsli b=0 stan linii OW nie ulega zamianie pozostaje LO(0)<br /> *<br /> * dla: READ TS<br /> * dla READ TS wartosc logiczna zmiennej zawsze b TRUE -&gt; OW_DIR_IN(); procesor zwalnia<br /> * linie OW, gdyby nie było ukladu slave na linii OW rezystor pullup ustawil by stan HI(1) jednak<br /> * dla READ TS to uklad SLAVE steruje stanem linii OW (0/1) i to od układu Slave zalezy stan<br /> * linii OW */<br /><br />_delay_us(15);<br />/* po 15us rozpoczyna sie okno probkowania linii OW */<br /><br />if( OW_GET_IN() == 0 ) b = 0;  // sample at end of read-timeslot<br />/*  Master probkuje (tylko probkuje !) stan linii OW<br /> *   READ TS<br /> * - jezeli na linii OW stan LO(0) wyrazenie jest P-&gt; ustaw b=0<br /> *   jezeli na linii OW stn HI(1) b=1, wyrazenie F, b juz wczesnsniej bylo b=1  */<br /><br /><br />_delay_us(60-15);<br />/* łacznie TS=60us 15+45=60  */<br /><br />OW_DIR_IN();<br />/* zolnienie linii OW pullup resistor ustawia stan HI(1) */<br /><br />SREG=sreg; // sei();<br />/* odblokuj przerwania */<br /><br />return b;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7548">fobos</a> — 9 kwi 2017, o 18:39</p><hr />
]]></content>
</entry>
</feed>