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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-02-10T22:32:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=12&amp;t=5890&amp;mode</id>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-10T22:32:00+01:00</updated>
<published>2014-02-10T22:32:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69792#p69792</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69792#p69792"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69792#p69792"><![CDATA[
Dzięki. Rozkmina jak złoto. Teraz czekam na gls'a w wersji lila-róż i muszę dokupić ATB Shield I/O<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 10 lut 2014, o 22:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-02-10T22:28:00+01:00</updated>
<published>2014-02-10T22:28:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69791#p69791</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69791#p69791"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69791#p69791"><![CDATA[
Może trochę niefortunnie dobrałem tą nazwę. Poniżej trochę poprawione<br />[syntax=basic4gl]'Data_in - wejście danych rejestru<br />'Clk - wejście zegarowe<br />'Strobe - wejście zatrzaskiwania danych<br />Sub Send_to_4094(byval Value As Byte)<br /><br />   Local I As Byte<br /><br />   For I = 0 To 7<br />      Data_in = Value.i<br />      Clk = 1<br />      'Waitus 1<br />      Clk = 0<br />   Next I<br />   Strobe = 1<br />   'Waitus 1<br />   Strobe = 0<br />End Sub[/syntax]<br /><br />Data_in to wejście danych rejestru 4094. <br />Linia [syntax=basic4gl]Data_in = Value.i[/syntax] wystawia na to wejście kolejne bity zmiennej Value. Wystawianie rozpoczyna się od bitu nr 0 do bitu nr 7. Po każdym wystawionym bicie trzeba machnąć linią Clk aby ten bit został zapisany do rejestru. Po wysłaniu całego bajtu zmiana na linii Strobe powoduje, że wysłany bajt pojawia się na wyjściach rejestru.<br /><br />A co do tego zapisu [syntax=basic4gl]Value.i[/syntax] to w ten sposób można dostać się do poszczególnych bitów dowolnej zmiennej. Mamy np. zmienna bajtową Stan.<br />Zapis [syntax=basic4gl]Stan.0 = 1[/syntax] ustawi nam bit nr 0.<br />A np. zapis [syntax=basic4gl]Stan.7 = 0[/syntax]wyzeruje ostatni bit zmiennej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 10 lut 2014, o 22:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-10T22:03:19+01:00</updated>
<published>2014-02-10T22:03:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69785#p69785</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69785#p69785"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69785#p69785"><![CDATA[
A powiedz co znaczy ten kawałek kodu bo nigdy tego nie używałem:<br />[syntax=basic4gl]Dane = Value.i[/syntax]<br /><br />Rozumiem że zmienna Dane przyjmuje wartość zmiennej lokalnej Value, a po co parametr .i ? Co robi kropka oraz i ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 10 lut 2014, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-02-10T21:43:25+01:00</updated>
<published>2014-02-10T21:43:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69778#p69778</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69778#p69778"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69778#p69778"><![CDATA[
To był 74595. Poradnik jest u Mirka na blogu <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2013/09/rejestr-przesuwny-74595-podstawy.html" >http://mirekk36.blogspot.com/2013/09/re ... stawy.html</a><!-- m --><br /><br />Gdybyś miał problemy z przełożeniem tego na bascoma to chętnie pomogę.<br /><br />Z rejestrów przesuwnych używałem też 4094. Dane wysyłałem w prościutkiej procedurze<br />[syntax=basic4gl]Sub Send_to_4094(byval Value As Byte)<br /><br />   Local I As Byte<br /><br />   For I = 0 To 7<br />      Dane = Value.i<br />      Clk = 1<br />      'Waitus 1<br />      Clk = 0<br />   Next I<br />   Strobe = 1<br />   'Waitus 1<br />   Strobe = 0<br />End Sub[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 10 lut 2014, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-10T21:19:13+01:00</updated>
<published>2014-02-10T21:19:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69768#p69768</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69768#p69768"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69768#p69768"><![CDATA[
Jeśli chodzi o zmniejszanie czasu trwania wait to działa nawet z wait1 ale jeśli nie obsługuję wyświetlania. Jeśli tylko chcę coś wyświetlić to zaczyna się migotanie.<br /><br />Co do rejestru to rzeczywiście chyba to będzie lepsze rozwiązanie. Gdzieś Mirek opisywał używanie rejestru. Co to był za rejestr ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 10 lut 2014, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-02-10T21:13:36+01:00</updated>
<published>2014-02-10T21:13:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69765#p69765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69765#p69765"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69765#p69765"><![CDATA[
Próbowałeś może zmniejszyć opóźnienia w podprogramach pomiar_adc?<br /><br />A nie myślałeś żeby zamiast 4051 zastosować jakiś rejestr przesuwny? Bo za pomocą 4051 możesz zaświecić tylko jedna diodę naraz. A żeby świeciły dwie to trzeba je włączać na przemian. A w rejestrze przesuwnym można zaświecać kilka diod naraz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 10 lut 2014, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-08T21:48:07+01:00</updated>
<published>2014-02-08T21:48:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69330#p69330</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69330#p69330"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69330#p69330"><![CDATA[
Podłączenie jest banalne. Podłączam na płytce EvbAVR04. Pinologia dowolna bo dowolnie można podłączyć na tej płytce jak na zestawie ATB. Sam kod na początku opierał się o wybór za pomocą If..then ale nie zdawało to rezultatu więc pomyślałem że zrobię to na select case. I jakoś poszło tylko mam migotanie.<br /><br />W tej chwili mam coś takiego:<br />- skok do podprogramu adc_1<br />- zdefiniowanie jaka zostanie przyjęta wartość select case w zalezności od pomiaru adc1<br />- skok do podprogramu ustawienia danych na szynę układu 4051<br />to samo w stosunku do adc2<br /><br />Kod wygląda jak poniżej i działa. Wszystkiemu winna była obsługa wyświetlania wyników ADC którą teraz zaremowałem.<br /><br />[syntax=basic4gl]Do<br />If Przycisk = 0 Then<br />   Inh = 1<br />   Wejscie = 1<br />  Else<br />   Inh = 0<br />   Wejscie = 0<br />End If<br /><br />Gosub Pomiar_adc1<br />Gosub Select_case<br /><br /><br />Gosub Pomiar_adc2<br />Gosub Select_case<br /><br /><br />Loop<br />End<br /><br />Pomiar_adc1:<br />Adc_1 = Getadc(5)<br /><br />'Home<br />'Lcd &quot;Adc1=&quot; ; Adc_1 ; &quot;    &quot;<br /><br />'If Inh = 0 Then Lcd &quot;INH=0    &quot;<br />'If Inh = 1 Then Lcd &quot;INH=1    &quot;<br />If Adc_1 &lt; 256 Then Wybor = 8<br />If Adc_1 &gt;= 256 And Adc_1 &lt; 512 Then Wybor = 1<br />If Adc_1 &gt;= 512 And Adc_1 &lt; 768 Then Wybor = 6<br />If Adc_1 &gt; 768 Then Wybor = 4<br /><br />Wejscie = 0<br />Waitms 5<br />Wejscie = 1<br /><br />Return<br /><br /><br /><br />Pomiar_adc2:<br />'Locate 2 , 1<br />'Lcd &quot;ADC2=&quot; ; Adc_2 ; &quot;    &quot;<br /><br />Adc_2 = Getadc(0)<br /><br /><br />If Adc_2 &lt; 256 Then Wybor = 9<br />If Adc_2 &gt;= 256 And Adc_2 &lt; 512 Then Wybor = 5<br />If Adc_2 &gt;= 512 And Adc_2 &lt; 768 Then Wybor = 7<br />If Adc_2 &gt; 768 Then Wybor = 2<br /><br />Wejscie = 0<br />Waitms 5<br />Wejscie = 1<br /><br />Return<br /><br />Select_case:<br />  Select Case Wybor<br />     Case 1:<br />      A = 0<br />      B = 0<br />      C = 0<br />     Case 2:<br />      A = 0<br />      B = 0<br />      C = 1<br />     Case 4:<br />      A = 0<br />      B = 1<br />      C = 0<br />     Case 5:<br />      A = 0<br />      B = 1<br />      C = 1<br />     Case 6:<br />      A = 1<br />      B = 0<br />      C = 0<br />     Case 7:<br />      A = 1<br />      B = 0<br />      C = 1<br />     Case 8:<br />      A = 1<br />      B = 1<br />      C = 0<br />     Case 9:<br />      A = 1<br />      B = 1<br />      C = 1<br /> End Select<br />Return[/syntax]<br /><br />Teraz pytanie, jak zapobiec migotaniu podczas wyświetlania danych na wyświetlaczu ?<br />Czy użycie timera i obsługa wszystkiego w przerwaniu coś pomoże ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 8 lut 2014, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-02-08T21:36:53+01:00</updated>
<published>2014-02-08T21:36:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69328#p69328</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69328#p69328"/>
<title type="html"><![CDATA[Re: CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69328#p69328"><![CDATA[
Pokaż może jak to masz podłączone. Kod też by jednak było dobrze pokazać. Bo w tej sytuacji trudno cokolwiek doradzić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 8 lut 2014, o 21:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matrix]]></name></author>
<updated>2014-02-08T14:19:51+01:00</updated>
<published>2014-02-08T14:19:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69260#p69260</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69260#p69260"/>
<title type="html"><![CDATA[CD4051 i sterowanie 2x4 diodami po odczycie ADC.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5890&amp;p=69260#p69260"><![CDATA[
Mam takie pytanie jedno do Was.<br />Mam układ CD4051 sterowany przez kontroler. Dwa wejścia ADC odczytują stan z potencjometrów i na tej podstawie trzeba odpowiednio wysterować układ 4051 tak by osobno sterował dwiema sekcjami po 4 diody.<br />Reasumując pokazuję prosty algorytm:<br />- odczyt adc1<br />- odczyt adc2<br />- jeśli adc1 wynosi x to ustaw na wejściach danych układu 4051 dany adres do wyświetlenia stanu za pomocą pierwszych czterech diod<br />- jeśli adc2 wynosi y to ustaw na wejściach danych układu 4051 dany adres do wyświetlenia stanu za pomocą drugich czterech diod<br /><br />I tu leży kłopot. Jeśli włącza mi poprawnie diodę z pierwszej czwórki to z drugiej już nie, albo wszystko się miesza i z drugiej czwórki wyświetla się dopiero jak ADC1 jest w odpowiedniej pozycji.<br />Programu nie będę przedstawiał bo jest banalny i polega na sprawdzaniu ADC1 i ADC2 oraz odpowiedniej interpretacji wyniku na podstawie tych pomiarów za pomocą instruckji warunkowych If...then.<br /><br />Oczywiście piszę w bascomie. Nadmienię że dla prostego sprawdzania działania programu dodawałem też opóźnienia o różnej długości.<br /><br />Pytanie czy się da to ogarnąć w ten sposób który sobie wymyśliłem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=689">matrix</a> — 8 lut 2014, o 14:19</p><hr />
]]></content>
</entry>
</feed>