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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-01-11T19:41:58+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=138&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-01-11T19:41:58+01:00</updated>
<published>2012-01-11T19:41:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1230#p1230</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1230#p1230"/>
<title type="html"><![CDATA[Re: Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1230#p1230"><![CDATA[
przemyśleć można too  <!-- m --><a class="postlink" href="http://www.seekway.com.cn/e/ledsys9.htm">http://www.seekway.com.cn/e/ledsys9.htm</a><!-- m --><br />bo to co pokazałeś to się po prostu pisze <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=58">SunRiver</a> — 11 sty 2012, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczo]]></name></author>
<updated>2012-01-11T18:17:28+01:00</updated>
<published>2012-01-11T18:17:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1228#p1228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1228#p1228"/>
<title type="html"><![CDATA[Re: Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1228#p1228"><![CDATA[
Wiem jak działają przesunięcia, lecz jakoś nie lubię ich używać. Już domyśliłem się czym będzie różnić się taki zapis<br />PORTB |= _BV(0); <br />lub <br />PORTB |= (1&lt;&lt;PB0);<br />lub<br />PORTB |= 0x01;<br />od<br />PORTB = _BV(0);<br />lub<br />PORTB = (1&lt;&lt;PB0);<br />lub<br />PORTB = 0x01<br /><br />W pierwszym przypadku zostanie zmieniony tylko najmłodszy bit rejestru PORTB, a reszta zostanie nienaruszona, natomiast drugi ustawi najmłodszy bit a resztę wyzeruję. <br /><br />Napisałem też program, który steruje 12 diodami<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br /><br />#define jeden DDRB = 0x03; PORTB = 0x02;  // we/wy 0000 0011 vcc/gnd 0000 0010<br />#define dwa DDRB = 0x03; PORTB = 0x01;  // we/wy 0000 0011 vcc/gnd 0000 0001<br />#define trzy DDRB = 0x06; PORTB = 0x02;   // we/wy 0000 0110 vcc/gnd 0000 0010<br />#define cztery DDRB = 0x06; PORTB = 0x04; // we/wy 0000 0110 vcc/gnd 0000 0100<br />#define szesc DDRB = 0x05; PORTB = 0x01;  // we/wy 0000 0101 vcc/gnd 0000 0001<br />#define piec DDRB = 0x05; PORTB = 0x04;    //  0101<br />#define siedem DDRB = 0x09; PORTB = 0x01;<br />#define osiem DDRB = 0x09; PORTB = 0x08;<br />#define dziewiec DDRB = 0x0a; PORTB = 0x02;<br />#define dziesiec DDRB = 0x0a; PORTB = 0x08;<br />#define jedenascie DDRB = 0x0c; PORTB = 0x08;<br />#define dwanascie DDRB = 0x0c; PORTB = 0x04;<br />#define pauza 100<br /><br /><br /><br /><br /><br />main(void)<br />{<br /><br />while(1)<br />{<br />jeden;<br />_delay_ms(pauza);<br />dwa;<br />_delay_ms(pauza);<br />trzy;<br />_delay_ms(50);<br />cztery;<br />_delay_ms(pauza);<br />piec;<br />_delay_ms(pauza);<br />szesc;<br />_delay_ms(pauza);<br />siedem;<br />_delay_ms(pauza);<br />osiem;<br />_delay_ms(pauza);<br />dziewiec;<br />_delay_ms(pauza);<br />dziesiec;<br />_delay_ms(pauza);<br />jedenascie;<br />_delay_ms(pauza);<br />dwanascie;<br />_delay_ms(pauza);<br />jedenascie;<br />_delay_ms(pauza);<br />    dziesiec;<br />    _delay_ms(pauza);<br />    dziewiec;<br />    _delay_ms(pauza);<br />    osiem;<br />    _delay_ms(pauza);<br />    siedem;<br />    _delay_ms(pauza);<br />    szesc;<br />    _delay_ms(pauza);<br />    piec;<br />    _delay_ms(pauza);<br />    cztery;<br />    _delay_ms(pauza);<br />    trzy;<br />    _delay_ms(pauza);<br />    dwa;<br />    _delay_ms(pauza);<br />    jeden;<br />    _delay_ms(pauza);<br /><br />}<br />}<br />[/syntax]<br /><br />Teraz przemyślę jak zrobić efekt taki jak na filmiku.<br /><!-- m --><a class="postlink" href="http://www.youtube.com/watch?v=MzOgxkCL7hw&amp;feature=mfu_in_order&amp;list=UL">http://www.youtube.com/watch?v=MzOgxkCL ... er&amp;list=UL</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=78">miszczo</a> — 11 sty 2012, o 18:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-01-11T16:20:21+01:00</updated>
<published>2012-01-11T16:20:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1226#p1226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1226#p1226"/>
<title type="html"><![CDATA[Re: Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1226#p1226"><![CDATA[
<div class="quotetitle">miszczo napisał(a):</div><div class="quotecontent"><br />Btw czym róźni się taki zapis<br /> PORTB |=  _BV(0)<br />od takiego<br /> PORTB =  _BV(0)<br />Czy w obu przypadkach w rejestrze PORTB pojawi się wartość 0x01?<br /></div><br /><br />Ja teraz bardzo przepraszam, ale muszę koledze (tak oczywiście pół żartem pół serio) udzielić oficjalnej nagany na naszym forum. Sądzę, że kolega posiada książkę &quot;Mikrokontrolery AVR Język C Podstawy programowania&quot; ? Toż poświęciłem w niej TYYYYYYYYYYYLE czasu aby wyjaśnić w SUPER szczegółach zasady stosowania tzw przesunięć bitowych, i polecałem aby to je właśnie stosować a nie posługiwać się tymi kocimi makrami _BV()<br /><br />Więc mam nadzieję, że kolega się nie obrazi na mnie, że odeślę go do wspomnianej książki i poproszę o przeczytanie stosownego rozdziału, gdzie kurczę specjalnie fikuśne rysunki własnymi łapkami tworzyłem aby wyjaśnić jak działają przesunięcia typu np:<br /><br />[syntax=c]PORTB |= (1&lt;&lt;PB0);[/syntax]<br /><br />albo<br /><br />[syntax=c]PORTC &amp;= ~(1&lt;&lt;PC7);[/syntax]<br /><br />to jest milion razy bardziej czytelne niż po stokroć kocie makra _BV() i tylko dlatego nie udzielę na to pytanie odpowiedzi. Chyba, że kolega poczyta wspomniany rozdział i zechce dopytać o coś na temat przesunięć, aby ew uzupełnić wiedzę przekazaną w książce, jeśli coś jeszcze będzie niezrozumiałe. Wtedy nadlecę jak jastrząb i postaram się wyjaśnić wszystko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sty 2012, o 16:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczo]]></name></author>
<updated>2012-01-11T16:05:24+01:00</updated>
<published>2012-01-11T16:05:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1224#p1224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1224#p1224"/>
<title type="html"><![CDATA[Re: Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1224#p1224"><![CDATA[
W takim razie w czym tkwi błąd w tym kodzie? Diodę podłączam między pb1, a pb0.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2012-01-11<br /> *      Author: Miszczo<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />int main(void)<br />{<br /><br /><br /><br />while(1)<br /><br /><br />DDRB |= 0x03; // 0000 0011  pb0,pb1 jako wyjscie<br />PORTB |= 0x01; // 0000 0001  pb0-vcc pb1-gnd pb2-nc<br />_delay_ms(500);<br />        PORTB &amp;= 0x00;<br />PORTB |= 0x02; //0000 0010 pb0-gnd pb1-vcc<br />_delay_ms(500);<br />[/syntax]<br /><br />Btw czym róźni się taki zapis<br /> PORTB |=  _BV(0)<br />od takiego<br /> PORTB =  _BV(0)<br />Czy w obu przypadkach w rejestrze PORTB pojawi się wartość 0x01?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=78">miszczo</a> — 11 sty 2012, o 16:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-01-11T15:31:15+01:00</updated>
<published>2012-01-11T15:31:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1222#p1222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1222#p1222"/>
<title type="html"><![CDATA[Re: Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1222#p1222"><![CDATA[
<div class="quotetitle">miszczo napisał(a):</div><div class="quotecontent"><br />W jaki sposób na pinie wymusić stan wysokiej impedancji?<br /></div><br /><br />To proste, wystarczy wymusić na nim stan dokładnie taki jaki jest po resecie mikrokontrolera, gdy wszystkie piny I/O są w stanie wysokiej impedancji. A zatem, ustawiasz kierunek pinu/portu za pomocą rejestru DDRx na wejście (czyli 0) i jednocześnie wystawiasz ZERO na dany pin ale w rejestrze PORTx - przez co likwidujesz programowe podciąganie do VCC - no i proszę - masz stan wysokiej impedancji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 sty 2012, o 15:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miszczo]]></name></author>
<updated>2012-01-11T14:44:50+01:00</updated>
<published>2012-01-11T14:44:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1220#p1220</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1220#p1220"/>
<title type="html"><![CDATA[Attiny13 charlieplexing]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=138&amp;p=1220#p1220"><![CDATA[
Witam<br />Chciałbym sterować 6 diodami w ten sposób<br /><!-- m --><a class="postlink" href="http://upload.wikimedia.org/wikipedia/commons/9/99/3_Pin_Charlieplexing.png">http://upload.wikimedia.org/wikipedia/c ... lexing.png</a><!-- m --><br /><br />Napisałem program, ale nie działa on prawidłowo. <br />W jaki sposób na pinie wymusić stan wysokiej impedancji?<br />[syntax=c]/*<br /> * main2.c<br /> *<br /> *  Created on: 2012-01-11<br /> *      Author: Miszczo<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//  PPPP PPPP   PPPP PPPP<br />//  BBBB BBBB   BBBB BBBB<br />//          7654 3210   7654 3210<br />     //   |||| ||||    |||| ||||<br />#define jeden DDRB &amp;= 0x0B; PORTB |= 0x01; // 0000 1011 / 0000 0001<br />#definedwa DDRB &amp;= 0x0B; PORTB |= 0x02;   // 0000 1011 / 0000 0010<br />#define trzy DDRB &amp;= 0x0D; PORTB |= 0x04;  // 0000 1101 / 0000 0100<br />#define cztery DDRB &amp;= 0x0D; PORTB |= 0x01;// 0000 1101 / 0000 0001<br />#define piec DDRB &amp;= 0x0E; PORTB |= 0x02;  // 0000 1110 / 0000 0010<br />#define szesc DDRB &amp;= 0x0E; PORTB |= 0x08; // 0000 1110 / 0000 0100<br /><br /><br />int main(void)<br />{<br /><br />jeden;<br />_delay_ms(200);<br />dwa;<br />_delay_ms(200);<br />trzy;<br />_delay_ms(200);<br />cztery;<br />_delay_ms(200);<br />piec;<br />_delay_ms(200);<br />szesc;<br />_delay_ms(200);<br />piec;<br />_delay_ms(200);<br />cztery;<br />_delay_ms(200);<br />trzy;<br />_delay_ms(200);<br />dwa;<br />_delay_ms(200);<br /><br /><br />}<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=78">miszczo</a> — 11 sty 2012, o 14:44</p><hr />
]]></content>
</entry>
</feed>