<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>vmario techblog &#187; Elektronika</title>
	<atom:link href="http://blog.vmario.org/category/elektronika/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.vmario.org</link>
	<description>zapiski przyszłego inżyniera</description>
	<pubDate>Tue, 23 Jun 2009 19:07:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sage policzy to za Ciebie</title>
		<link>http://blog.vmario.org/2009/05/21/sage-policzy-to-za-ciebie/</link>
		<comments>http://blog.vmario.org/2009/05/21/sage-policzy-to-za-ciebie/#comments</comments>
		<pubDate>Thu, 21 May 2009 18:07:57 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[Komputer]]></category>

		<category><![CDATA[Recenzje]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/?p=535</guid>
		<description><![CDATA[Z pewnym żalem obserwuję czasem wśród moich kolegów z uczelni prawie że kompletny brak umiejętności posługiwania się oprogramowaniem matematycznym. Rozumiem jednak niechęć do MATLAB-a, a nawet do samej matematyki; ze wstydem przyznaję też, że sam, po blisko czterech latach na politechnice, posiadam wciąż bardzo ubogi aparat matematyczny i z trudem udaje mi się zmusić komputer [...]]]></description>
			<content:encoded><![CDATA[<p>Z pewnym żalem obserwuję czasem wśród moich kolegów z uczelni prawie że kompletny brak umiejętności posługiwania się oprogramowaniem matematycznym. Rozumiem jednak niechęć do <abbr title="MATrix LABoratory">MATLAB</abbr>-a, a nawet do samej matematyki; ze wstydem przyznaję też, że sam, po blisko czterech latach na politechnice, posiadam wciąż bardzo ubogi aparat matematyczny i z trudem udaje mi się zmusić komputer do tego, do czego został stworzony, czyli do&hellip; liczenia.</p>
<p>Chcąc nie chcąc, uczyłem się w ramach zajęć na <abbr title="Elektronika, Telekomunikacji i Informatyka">ETI</abbr> wykorzystywać <abbr title="MATrix LABoratory">MATLAB</abbr>-a, a więc przy okazji i Octave&#8217;a, do podstawowych obliczeń, szybko jednak zapominałem pokręconą składnię tego środowiska. Brakowało mi też wsparcia dla obliczeń analitycznych i możliwości pisania programów z użyciem wygodnej składni. Potrzebowałem czegoś, co pozwoli mi zarówno policzyć analitycznie całkę, z którą nie poradzi sobie mój kalkulator (Casio Algebra FX 2.0 Plus), wykreślić przebieg dowolnej funkcji, wyznaczyć <abbr title="Discrete Fourier Transform">DFT</abbr> sygnału, jak i szybko zaimplementować jakiś własny algorytm.</p>
<p>Cóż więc mi pozostawało? SciPy, Maxima, Scilab? A może coś jeszcze innego? W końcu trafiłem na środowisko <a href="http://www.sagemath.org/">Sage</a>.</p>
<p><span id="more-535"></span></p>
<p>Powiedzieć, że Sage jest programem matematycznym, to nieścisłość. Określić go jako zgrabne środowisko do wszelkiego rodzaju obliczeń to nadużycie, przynajmniej jeżeli chodzi o mój pogląd na piękno. Uważam, że tutaj najbardziej pasuje określenie &bdquo;<a href="http://pl.wikipedia.org/wiki/Srebrna_ta%C5%9Bma_klej%C4%85ca">duct tape</a>&rdquo;. Jeżeli jesteś matematykiem lub cenisz eleganckie rozwiązania programistyczne (albo miejsce na twardym dysku&hellip;), Sage może nie wzbudzić Twojego zachwytu. Jeżeli jednak masz w sobie ducha MacGyveryzmu, Sage może okazać się świetnym rozwiązaniem wielu problemów.</p>
<p>Sage jest zbiorem programów i bibliotek matematycznych, takich jak Maxima, SciPy czy <abbr title="GNU Scientific Library">GSL</abbr>, powiązanych Pythonem i okraszonych interfejsem <abbr title="Command-line interface">CLI</abbr> i dziwacznym <abbr title="Graphical user interface">GUI</abbr> w postaci&hellip; strony WWW. Jego niewątpliwą zaletą jest darmowość i otwartość (możemy więc poznać sposób, w jaki przeprowadzane są obliczenia).</p>
<p>Korzystam z Arch Linuksa, gdzie Sage dostępny jest w repozytorium <abbr title="ArchLinux User-community Repository">AUR</abbr> jako <code>sage-mathematics</code> i <code>sage-mathematics-bin</code>. Pierwszy pakiet chyba nie chciał mi się kompilować, a w każdym razie miałem z nim jakiś problem, ściągnąłem więc źródła bezpośrednio ze strony programu i próbowałem sam go zbudować. Niestety, udało mi się rozwiązać tylko część problemów i w końcu zakończyłem na błędzie po dwóch czy trzech godzinach kompilacji. Zrezygnowany sięgnąłem po binarkę. Pomijając fakt, że pobrałem bodaj 400MB, instalacja przebiegła bezboleśnie. Co prawda z dysku zniknęło mi 1,2GB, ale nie byłem zdziwiony &mdash; o ile dobrze zauważyłem, Sage zawiera w sobie wszystkie niezbędne biblioteki i programy, więc mam teraz zdublowanego Pythona, Maximę, SciPy i pewnie sporo innych rzeczy&hellip;</p>
<p>Przejdźmy jednak do meritum. Po uruchomieniu program może krzyczeć o odpowiednie uprawnienia do katalogu konfiguracyjnego. Poniższa komenda powinna rozwiązać problem:</p>
<pre><code># chmod +x ~/.sage/ipython</code></pre>
<p>Teraz odpalamy powłokę Sage&#8217;a i możemy przystępować do liczenia. Jednak od interfejsu linii poleceń znacznie wygodniejszy jest interfejs webowy, uruchamiany poleceniem <code>notebook()</code>. Jego działanie polega na wystartowaniu serwera WWW i przeglądarki z aplikacją webową. Jest to rozwiązanie w takim samym stopniu dziwne, co wygodne. Zgodnie z nazwą, serwuje nam ono coś w rodzaju notesów, w których możemy zapisywać obliczenia i ich wyniki. Przyznaję, że jest to bardzo intuicyjne rozwiązanie. Niestety, jesteśmy pozbawieni jakiegoś zgrabnego <abbr title="Integrated Development Environment">IDE</abbr>, pozwalającego wykorzystać możliwości Sage&#8217;a do pisania dłuższych skryptów czy programów. Może to i lepiej&hellip;</p>
<p>Odłóżmy jednak na bok ironiczne uwagi i przyjrzyjmy się bliżej <i>notebookowi</i>. <a href="http://www.sagemath.org/help-video.html">Screencasty</a> pokazują bogate możliwości tego interfejsu. W szczególności należy zwrócić uwagę na <a href="http://wiki.sagemath.org/interact">tryb interaktywny</a> &mdash; możliwość szybkiego napisania skryptu, który na bieżąco wizualizuje parametry ustawiane suwakiem, zrobiła na mnie wrażenie. To aż się prosi o wykorzystanie w szkołach czy na uczelniach!</p>
<p>Wykresy są całkiem estetyczne, do wypisywania wzorów można wykorzystać składnię LaTeX-a, a możliwość zapisania stanu pracy i powrotu w każdej chwili do obliczeń jest bardzo wygodna. Brakuje mi tylko skrótu klawiaturowego, który obliczałby wyrażenie bez przenoszenia do kolejnego wiersza (a tak działa <i>Shift + Enter</i>). Może jednak to tylko mój brak znajomości klawiszologii.</p>
<p>Jako podsumowanie cisną mi się na usta słowa: &bdquo;To jest naprawdę świetne narzędzie, <strong>ale&hellip;</strong>&rdquo;. Owych &bdquo;ale&rdquo; jest, niestety, sporo: od samej idei zlepienia różnych programów matematycznych, przez duże rozmiary aplikacji po dziwny interfejs. W zamian jednak otrzymujemy ogromne możliwości, pomysłowy tryb interaktywny i w sumie niegłupią ideę <i>notebooków</i>. Warto zatem instalować? Szczerze mówiąc, gdyby projekt <a href="http://www.wolframalpha.com/">Wolfram|Alpha</a> wystartował trochę wcześniej, to pewnie nie sięgnąłbym po Sega&#8217;a, w każdym razie nie po to, by policzyć analitycznie kilka całek czy wykreślić przebieg funkcji. Myślę jednak, że warto spróbować przygody z tą aplikacją czy to przez LiveCD, czy przez instalację binarki. W mojej krótkiej recenzji nie zabrakło złośliwości, ale nie mam zamiaru usuwać w najbliższym czasie programu z dysku &mdash; czas pokaże, czy to narzędzie rzeczywiście okaże się niezastąpione.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2009/05/21/sage-policzy-to-za-ciebie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nut/OS na Linuksie i MMnet104</title>
		<link>http://blog.vmario.org/2009/05/06/nutos-na-linuksie-i-mmnet104/</link>
		<comments>http://blog.vmario.org/2009/05/06/nutos-na-linuksie-i-mmnet104/#comments</comments>
		<pubDate>Wed, 06 May 2009 19:29:57 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[Komputer]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/?p=479</guid>
		<description><![CDATA[Tydzień temu pisałem o przywróceniu do życia modułu MMnet104. Dziś opiszę krótko instalację i uruchomienie środowiska, które pozwoli oprogramować ten moduł pod Linuksem z użyciem systemu operacyjnego Nut/OS.
Nut/OS jest modularnym systemem operacyjnym czasu rzeczywistego (RTOS) opracowanym w ramach projektu Ethernut. Ethernut jest projektem typu &#8222;open source hardware&#8221;, mającym na celu udostępnienie systemów wbudowanych obsługujących Ethernet.

Nas [...]]]></description>
			<content:encoded><![CDATA[<p>Tydzień temu pisałem o <a href="http://blog.vmario.org/2009/04/29/jtag-vs-fuse-bity-atmegi128/">przywróceniu do życia</a> modułu <a href="http://www.propox.com/products/t_130.html">MMnet104</a>. Dziś opiszę krótko instalację i uruchomienie środowiska, które pozwoli oprogramować ten moduł pod Linuksem z użyciem systemu operacyjnego Nut/OS.</p>
<p><a href="http://www.ethernut.de/en/firmware/nutos.html">Nut/OS</a> jest modularnym systemem operacyjnym czasu rzeczywistego (<abbr title="Real-Time Operating System">RTOS</abbr>) opracowanym w ramach projektu <a href="http://www.ethernut.de/index.html">Ethernut</a>. Ethernut jest projektem typu &bdquo;open source hardware&rdquo;, mającym na celu udostępnienie systemów wbudowanych obsługujących Ethernet.</p>
<p><span id="more-479"></span></p>
<p>Nas w tej chwili interesuje jednak tylko część software&#8217;owa tego projektu, czyli Nut/OS, udostępniający gotowy stos <abbr title="Transmission Control Protocol/Internet Protocol">TCP/IP</abbr> i obsługę protokołów takich jak <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr>, <abbr title="Domain Name System">DNS</abbr>, <abbr title="Simple Mail Transfer Protocol">SMTP</abbr>, a nawet <abbr title="Hypertext Transfer Protocol">HTTP</abbr> czy <abbr title="File Transfer Protocol">FTP</abbr>. Nut/OS bardzo dobrze wspiera kompilator AVR-GCC, a poza tym autorzy projektu przewidzieli możliwość pracy na Linuksie, więc czas przystąpić do dzieła.</p>
<p>Zaczynamy od ściągnięcia źródeł, rozpakowania i uruchomienia konfiguracji:</p>
<pre><code>$ tar jxvf ethernut-4.8.2.tar.bz2
$ cd ethernut-4.8.2
$ ./configure</code></pre>
<p>Powinniśmy zobaczyć m.in.:</p>
<pre><code>configure: nutconfgui is enabled</code></pre>
<p>co oznacza, że będziemy mogli skorzystać z konfiguratora graficznego. W innym wypadku zapewne będziemy musieli doinstalować <a href="http://www.wxwidgets.org/">wxWidgets</a> lub inną bibliotekę, której brak wskaże nam konfigurator.</p>
<p>Ja napotkałem inny problem, związany ze specjalną biblioteką <a href="http://wxpropgrid.sourceforge.net/cgi-bin/index">wxPropertyGrid</a>, wymaganą przez narzędzie <code>nutdisc</code>, czyli Discoverera:</p>
<pre><code>configure: WARNING: wxpropgrid not found
[&hellip;]
configure: nutdisc requires propgrid</code></pre>
<p>Discoverer nie jest na szczęście niezbędny, jest to dodatkowy program, umożliwiający odnalezienie w sieci Ethernet nie do końca skonfigurowanych hostów, pracujących pod kontrolą Nut/OS-a.</p>
<p>Niestety, u mnie Ethernut najpierw nie widział skompilowanej biblioteki, a po wprowadzeniu zmian w <code>configure</code> i tak kończył kompilację z błędem. Koniec końców zignorowałem więc brak Discoverera i odpaliłem:</p>
<pre><code>$ make
$ make check
$ su -c "make install"</code></pre>
<p>Podczas kompilacji może nas jednak spotkać kolejna przykra niespodzianka: proces przerwie się niespodziewanie, sypiąc błędami, zapoczątkowanymi przez komunikat</p>
<pre><code>error: wx/setup.h: Nie ma takiego pliku ani katalogu</code></pre>
<p>Na szczęście i na to jest prosta rada:</p>
<pre><code># ln -s /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h /usr/include/wx-2.8/wx/setup.h</code></pre>
<p>Teraz <code>make clean</code> i jazda od nowa z kompilacją!</p>
<p>Po zainstalowaniu nie zmieniamy katalogu, tylko uruchamiamy <code>nutconf</code> i wybieramy plik konfiguracyjny <code>MMnet104.conf</code>.</p>
<p>Następnie klikamy <i>Edit -&gt; Settings</i>. W zakładce <i>Build</i> <i>Source Directory</i> powinien wskazywać na katalog, do którego rozpakowaliśmy źródła, zaś <i>Platform</i> powinien mieć wartość <code>avr-gcc</code>. Jako <i>Build Directory</i> podałem katalog <code>~/test/build</code>, zaś jako <i>Install Directory</i> &mdash; <code>~/test/build/lib</code>. W zakładce <i>Samples</i> wskazałem <code>~/test/samples</code>.</p>
<p>Teraz klikamy <i>Build -&gt; Build Nut/OS</i> i <i>Build -&gt; Create Sample Directory</i>. W efekcie uzyskujemy gotowe środowisko pracy: jądro <abbr title="Real-Time Operating System">RTOS</abbr>, liczne biblioteki i przykładowe aplikacje. Możemy zacząć np. od serwera <abbr title="Hypertext Transfer Protocol">HTTP</abbr> &mdash; po wydaniu komendy <code>make</code> w katalogu <code>samples/httpd</code> powinniśmy otrzymać HEX-a gotowego do wgrania do naszego mikrokontrolera.</p>
<p>Przy okazji wspomnę, iż warto skorzystać z debugowania za pomocą interfejsu RS232. Interfejs ten coraz rzadziej spotyka się w komputerach, jeżeli jednak korzystamy z płytki wyposażonej w konwerter RS232&lt;-&gt;USB na bazie układu scalonego <a href="http://www.ftdichip.com/">FTDI</a>, Linux powinien nam automatycznie wykryć port i przypisać go do urządzenia <code>/dev/ttyUSB0</code>. Na PC-cie wystarczy uruchomić terminal RS232, np. <a href="http://sourceforge.net/projects/gtkterm/">GTKTerm</a> czy <a href="http://cutecom.sourceforge.net/">CuteCom</a> (baudrate odczytamy z kodu źródłowego; w moim przypadku parametry transmisji wynosiły <code>115200, 8N1</code>), a w kodzie programu mikrokontrolera umieścić wywołania <code>printf()</code> czy <code>puts()</code>, raportujące stan urządzenia.</p>
<p>Jedyną niedogodnością jest fakt, iż po odłączeniu kabla lub zasilania płytki oba terminale zawieszają się, zajmując przy okazji całą moc CPU PC-ta. Dlatego w takich sytuacjach warto pamiętać o wcześniejszym rozłączeniu połączenia w terminalu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2009/05/06/nutos-na-linuksie-i-mmnet104/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JTAG vs. fuse bity ATmegi128</title>
		<link>http://blog.vmario.org/2009/04/29/jtag-vs-fuse-bity-atmegi128/</link>
		<comments>http://blog.vmario.org/2009/04/29/jtag-vs-fuse-bity-atmegi128/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 20:38:59 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/?p=498</guid>
		<description><![CDATA[W naszym projekcie grupowym na ETI korzystamy z modułu MMnet104 z mikrokontrolerem ATmega128. W wyniku bliżej nieokreślonych manipulacji procesor przestał odpowiadać na próby komunikacji po SPI za pomocą programatorów ISP.
Po konsultacjach uzgodniliśmy, że przed dramatyczną próbą wybebeszenia ATmegi i potraktowania ją programatorem równoległym spróbujemy użyć JTAG-a. Szczęśliwie okazało się, że da się w miarę prosto [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/vmario/3487121562/" title="AVR JTAG by vmario, on Flickr"><img class="vmlewa" src="http://farm4.static.flickr.com/3414/3487121562_5deb72b0e9_t.jpg" width="75" height="100" alt="AVR JTAG" /></a>W naszym projekcie grupowym na <abbr title="Elektronika, Telekomunikacja i Informatyka">ETI</abbr> korzystamy z modułu <a href="http://www.propox.com/products/t_130.html">MMnet104</a> z mikrokontrolerem ATmega128. W wyniku bliżej nieokreślonych manipulacji procesor przestał odpowiadać na próby komunikacji po <abbr title="Serial Peripheral Interface">SPI</abbr> za pomocą programatorów <abbr title="In-System Programming">ISP</abbr>.</p>
<p>Po konsultacjach uzgodniliśmy, że przed dramatyczną próbą wybebeszenia ATmegi i potraktowania ją programatorem równoległym spróbujemy użyć <abbr title="Joint Test Action Group">JTAG</abbr>-a. Szczęśliwie okazało się, że da się w miarę prosto zbudować taki programator w warunkach domowych.</p>
<p><span id="more-498"></span></p>
<p>W Internecie nietrudno natrafić na <a href="http://www.scienceprog.com/build-your-own-avr-jtagice-clone/">opisy</a> wykonania <abbr title="Joint Test Action Group">JTAG</abbr>-a, także <a href="http://liku.sdfpau.org/artykuly.php?a=avrjtag">w języku polskim</a>. Jak widać, schemat ideowy jest całkiem prosty, a elementy dosyć popularne i łatwe do zdobycia. Wyjątkiem jest oscylator kwarcowy o częstotliwości 7,3728MHz. Ja znalazłem go dopiero w czwartym sklepie (jeżeli ktoś mieszka w trójmieście, radzę od razu odwiedzić sklep Jacktronic). Warto też pamiętać, by kupić dwie ATmegi16, dzięki czemu będziemy mieli jeden czysty mikrokontroler, który posłuży do sprawdzenia poprawności działania <abbr title="Joint Test Action Group">JTAG</abbr>-a.</p>
<p>Postępując zgodnie z opisem powinniśmy uruchomić całość w miarę szybko i sprawnie. Ja napotkałem tylko na problem z wgraniem bootloadera za pomocą programatora AVR USBasp, który <a href="http://blog.vmario.org/2008/10/22/programator-avr-usbasp-na-linuksie/">opisywałem</a> kilka miesięcy temu. Programator ciągle przerywał pracę, strasząc jakimś &bdquo;broken pipe&rdquo;. Nie udało mi się znaleźć wytłumaczenia tego problemu &mdash; być może jest to kwestia zakłóceń, powstających na skutek montażu na płytce stykowej. W każdym razie wystarczy odrobina cierpliwości i wgrywanie wsadu aż do skutku (w trybie spowolnionego programowania, które wlecze się niemiłosiernie, ale w końcu odnosi skutek). Co do samego wsadu, to radzę zastosować <a href="http://liku.sdfpau.org/files/avrboot.hex">gotowy</a> (u mnie samodzielna kompilacja nie zaowocowała działającą binarką).</p>
<p>Jeżeli komuś nie chce się przeliczać fuse bitów dla ATmegi16 w <abbr title="Joint Test Action Group">JTAG</abbr>-u, poniżej podaję gotową komendę dla <code>avrdude</code> (<i>Fuse Low Byte</i> równy <code>0xFF</code> i <i>Fuse High Byte</i> równy <code>0xD8</code>).</p>
<pre><code>$ avrdude -p m16 -c usbasp -v -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m</code></pre>
<p>Przypominam, że należy starannie zaciskać złącza IDC10 na taśmie programującej, a w przypadku użycia scrossowanego kabla RS232 należy zamienić odpowiednie końcówki w gnieździe.</p>
<p>Jeżeli ktoś chciałby uruchomić cały programator pod Linuksem, to, niestety, nie jestem w stanie służyć pomocą. Pod Linuksem wgrałem tylko bootloader, a resztę załatwiło AVR Studio pod Windowsem.</p>
<p>Co do naszej nieszczęsnej ATmegi128 &mdash; za pomocą JTAG-a odblokowałem lock bity, ustawiłem poprawną konfigurację oscylatora i wyłączyłem flagę <i>WDTON</i>, która niepotrzebnie włączała watchdoga, dzięki czemu moduł w końcu ruszył.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2009/04/29/jtag-vs-fuse-bity-atmegi128/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rzecz o efkach</title>
		<link>http://blog.vmario.org/2009/01/21/rzecz-o-efkach/</link>
		<comments>http://blog.vmario.org/2009/01/21/rzecz-o-efkach/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:22:45 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/?p=413</guid>
		<description><![CDATA[Stanąłem przed zadaniem rozdzielenia sygnału telewizyjnego na dwa telewizory. Zdawało mi się, że zakup rozgałęźnika rozwiąże cały problem. Okazało się jednak, że nie wziąłem pod uwagę jednego &#8212; w powszechnym użyciu są dwa standardy złącz: złącze F, w które był wyposażony rozgałęźnik, oraz zwykłe złącze antenowe (Belling-Lee connector, IEC 169-2 connector, TV aerial plug), w [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/vmario/3215067067/" title="Rozgałęźnik + przejściówki by vmario, on Flickr"><img class="vmprawa" src="http://farm4.static.flickr.com/3510/3215067067_93b5d76088_t.jpg" width="100" height="75" alt="Rozgałęźnik + przejściówki" /></a>Stanąłem przed zadaniem rozdzielenia sygnału telewizyjnego na dwa telewizory. Zdawało mi się, że zakup rozgałęźnika rozwiąże cały problem. Okazało się jednak, że nie wziąłem pod uwagę jednego &mdash; w powszechnym użyciu są dwa standardy złącz: <a href="http://pl.wikipedia.org/wiki/Z%C5%82%C4%85cze_F">złącze F</a>, w które był wyposażony rozgałęźnik, oraz zwykłe <a href="http://en.wikipedia.org/wiki/TV_aerial_plug#">złącze antenowe</a> (<i>Belling-Lee connector</i>, <i>IEC 169-2 connector</i>, <i>TV aerial plug</i>), w które wyposażone są odbiorniki i gniazdo z sygnałem. Byłem tą niespodzianką lekko skonfundowany, w końcu student elektroniki powinien sobie z tak podstawowych rzeczy zdawać sprawę.</p>
<p><span id="more-413"></span></p>
<p>Na szczęście kilka przejściówek pozwoliło to wszystko ze sobą sprawnie połączyć:</p>
<div style="text-align:center"><a href="http://www.flickr.com/photos/vmario/3215067871/" title="Przygotowany rozgałęźnik by vmario, on Flickr"><img class="vmnormalny" src="http://farm4.static.flickr.com/3407/3215067871_ecf88e977f_m.jpg" width="240" height="180" alt="Przygotowany rozgałęźnik" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2009/01/21/rzecz-o-efkach/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programator AVR USBasp na Linuksie</title>
		<link>http://blog.vmario.org/2008/10/22/programator-avr-usbasp-na-linuksie/</link>
		<comments>http://blog.vmario.org/2008/10/22/programator-avr-usbasp-na-linuksie/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 15:28:59 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[Komputer]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/?p=272</guid>
		<description><![CDATA[Z braku portu LPT w nowym komputerze zaopatrzyłem się w programator USB, żeby móc czymś męczyć AVR-y. Padło na urządzenie na bazie USBasp, konkretnie model firmy Protech Micro (można ich znaleźć także na Allegro). Zakup był trochę ryzykowny, gdyż producent nie gwarantował, że programator będzie obsługiwany pod Linuksem, choć fakt, iż układ jest wspierany przez [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/vmario/2964667500/" title="Programator AVR na bazie USBasp by vmario, on Flickr"><img class="vmlewa" src="http://farm4.static.flickr.com/3011/2964667500_d5090ba6f5_t.jpg" width="100" height="75" alt="Programator AVR na bazie USBasp" /></a>Z braku portu LPT w nowym komputerze zaopatrzyłem się w programator USB, żeby móc czymś męczyć AVR-y. Padło na urządzenie na bazie USBasp, konkretnie model firmy <a href="http://www.protech-micro.pl/">Protech Micro</a> (można ich znaleźć także na Allegro). Zakup był trochę ryzykowny, gdyż producent nie gwarantował, że programator będzie obsługiwany pod Linuksem, choć fakt, iż układ jest wspierany przez AVRDUDE dobrze rokował. I rzeczywiście, pod rootem programator śmigał od ręki. Gorzej było z uruchomieniem go z konta zwykłego użytkownika. Drogą eksperymentów z udev udało mi się w końcu nadać odpowiednie uprawnienia i mogę spokojnie zająć się programowaniem. Oto droga do celu pod Arch Linuksem.<br />
<span id="more-272"></span><br />
Instalujemy AVRDUDE:</p>
<pre><code># pacman -S avrdude</code></pre>
<p>Sprawdzamy, czy programator jest poprawnie podłączony. Komenda</p>
<pre><code># avrdude -p t13 -c usbasp -v</code></pre>
<p>(obecnie używam ATtiny13) powinna m.in. odczytać fuse bity z naszego uC. Nie dajmy się tu zwieść informacji o używanym porcie</p>
<pre><code>Using Port            : /dev/parport0</code></pre>
<p>gdyż, rzecz jasna, nie korzystamy wcale z LPT, lecz z USB.</p>
<p>Spróbujmy jednak szczęścia z poziomu użytkownika:</p>
<pre><code>$ avrdude -p t13 -c usbasp -v</code></pre>
<p>Jeżeli znów się nam udało, możemy spokojnie zająć się pracą, jednak komunikat</p>
<pre><code>avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc</code></pre>
<p>wróży nam odrobinę walki o uprawnienia.</p>
<p>Zacznijmy od tego, że AVRDUDE podaje nam identyfikator urządzenia, co pomaga szybko sprawdzić, jak wygląda dostęp do niego. Poleceniem</p>
<pre><code># lsusb -v|grep -i 16c0:05dc</code></pre>
<p>odnajdujemy ścieżkę do naszego programatora. Przykładowo może to wyglądać tak:</p>
<pre><code>Bus 006 Device 006: ID 16c0:05dc</code></pre>
<p>Nie jest trudno rozszyfrować tę informację i wyświetlić uprawnienia urządzenia:</p>
<pre><code># ls -l /dev/bus/usb/006/006</code></pre>
<p>Zapewne zobaczymy, że do naszego programatora może pisać tylko root. Tu z pomocą przychodzi nam udev, który ochoczo przystanie na zmianę uprawnień, jeżeli ładnie go o to poprosimy. Tworzymy plik <code>/etc/udev/rules.d/95-myrules.rules</code>, który zawiera tę prośbę:</p>
<pre><code># Programator AVR USBasp
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", ATTRS{product}=="USBasp", GROUP="usb", MODE="0664"</code></pre>
<p>Tu należy zauważyć, że nazwa pliku zaczyna się od <code>95</code>, aby nasze reguły zostały przetworzone pod koniec przeglądania urządzeń. Dzięki temu domyślne ustawienia nie nadpiszą naszych. W razie problemów możemy użyć opcji <code>MODE:="0664"</code>, która zablokuje przetwarzanie uprawnień przez inne reguły.</p>
<p>Oczywiście, dla bezpieczeństwa, a raczej dla elegancji, nie zastosowaliśmy uprawnień <code>0666</code>, lecz utworzyliśmy grupę <code>usb</code> z możliwością zapisu. Grupę tę dodajemy chyżo do systemu, po czym się do niej dopisujemy:</p>
<pre><code># groupadd usb
# gpasswd -a <i>użytkownik</i> usb</code></pre>
<p>Odłączamy i podłączamy programator, po czym sprawdzamy, czy możemy już zaprogramować uC z poziomu użytkownika. Jeżeli nie, problemu należy szukać przede wszystkim w uprawnieniach. Przypominam, że po ponownym podłączeniu programator będzie dostępny pod innym adresem &mdash; zapewne o numer większym, a więc w tym przypadku: <code>/dev/bus/usb/006/007</code>, zresztą w każdej chwili możemy to sprawdzić za pomocą <code>lsusb</code>.</p>
<p>W przypadku kłopotów można też spróbować polecenia</p>
<pre><code># udevadm control --reload-rules</code></pre>
<p>lub po prostu restartu komputera.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2008/10/22/programator-avr-usbasp-na-linuksie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nie umiem wróżyć z fusów</title>
		<link>http://blog.vmario.org/2008/01/31/nie-umiem-wrozyc-z-fusow/</link>
		<comments>http://blog.vmario.org/2008/01/31/nie-umiem-wrozyc-z-fusow/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 11:49:26 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/2008/01/31/nie-umiem-wrozyc-z-fusow/</guid>
		<description><![CDATA[Próbowałem wczoraj ugryźć wreszcie dekodowanie RC5 z użyciem timera w ATtiny2313. Miałem jednak spore problemy z wyliczeniem czasów, przede wszystkim dlatego, że wcześniej pracowałem na AT90S2313, który przyzwyczaił mnie do tego, że domyślnie taktowany jest przez zewnętrzny oscylator. Z nowymi AVR-ami rzecz ma się nieco inaczej, bowiem chociażby w takim ATtiny2313 mamy do wyboru całkiem [...]]]></description>
			<content:encoded><![CDATA[<p>Próbowałem wczoraj ugryźć wreszcie dekodowanie RC5 z użyciem timera w ATtiny2313. Miałem jednak spore problemy z wyliczeniem czasów, przede wszystkim dlatego, że wcześniej pracowałem na AT90S2313, który przyzwyczaił mnie do tego, że domyślnie taktowany jest przez zewnętrzny oscylator. Z nowymi AVR-ami rzecz ma się nieco inaczej, bowiem chociażby w takim ATtiny2313 mamy do wyboru całkiem sporo wewnętrznych oscylatorów RC. Wyboru dokonuje się przez młodsze fuse bity (<i>Fuse Low Byte</i>). W szczególności interesują nas bity <i>CKSEL3..0</i> (<i>Select Clock source</i>) i bit <i>CKDIV8</i> (<i>Divide clock by 8</i>). W dokumentacji jasno stoi, iż domyślnie bity <i>CKSEL3..0</i> ustawione są na <i>0100</i> tak, że pracuje wewnętrzny oscylator 8MHz. <i>CKDIV8</i> jest zaś ustawiony na <i>0</i>, byłem więc przekonany, że dzielnik zegara systemowego jest wyłączony.</p>
<p><span id="more-223"></span></p>
<p>Niestety, ciągle coś mi nie grało &#8212; wartości w rejestrze timera znacząco odbiegały od moich przewidywań. W końcu postanowiłem uruchomić USART, żeby móc na bieżąco wysyłać mierzone czasy (dotąd kilka diod informowało mnie, czy czasy mieszczą się w zadanych granicach). Po uruchomieniu GtkTerma, okazało się, że transmisja przebiega poprawnie ale nie przy 9600bps, jak ustawiłem, lecz przy 1200bps. Odczytałem więc fusy</p>
<pre><code>$ uisp -dprog=stk200 -dlpt=/dev/parport0 --rd_fuses</code></pre>
<p>otrzymując</p>
<pre><code>Fuse Low Byte      = 0x64</code></pre>
<p>Wyglądało na to, że najstarszy bit (<i>CKDIV8</i>) jest wyzerowany. Więc skąd ośmiokrotnie niższe taktowanie? Po głębszej analizie dokumentacji i chwili googlowania w końcu zrozumiałem &#8212; wartość <i>0</i> oznacza <i>programmed</i>, czyli ustawienie fuse bita.</p>
<p>Poprawiłem więc <code>F_CPU</code> w <code>Makefile</code> z <code>8000000</code> na <code>1000000</code> i&hellip; transmisja oszalała. Rzut oka na tabelę błędów USART (jakiś dobry człowiek zamieścił ją w dokumentacji) &#8212; aha, przy takim taktowaniu dla 9600bps mamy błąd zegara -7,0%. Zmieniłem więc bitrate na 4800bps i teraz wszystko zdaje się być w porządku.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2008/01/31/nie-umiem-wrozyc-z-fusow/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Uprawnienia dla /dev/parport0</title>
		<link>http://blog.vmario.org/2008/01/14/uprawnienia-dla-devparport0/</link>
		<comments>http://blog.vmario.org/2008/01/14/uprawnienia-dla-devparport0/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 19:51:07 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[GNU/Linux]]></category>

		<category><![CDATA[Komputer]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/2008/01/14/uprawnienia-dla-devparport0/</guid>
		<description><![CDATA[Po tym, jak, wykazując się umiarkowaną inteligencją, usunąłem sobie program KontrollerLab i nie byłem go w stanie skompilować na nowo ani na Debianie, ani na Archu (chyba jakieś problemy z jedną z bibliotek KDE), postanowiłem zaprzyjaźnić się z linią komend avr-gcc i avrdude. Jako platformę wybrałem tym razem laptopa z Archem. I okazało się, że [...]]]></description>
			<content:encoded><![CDATA[<p>Po tym, jak, wykazując się umiarkowaną inteligencją, usunąłem sobie program <a href="http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab" title="Strona domowa programu KontrollerLab">KontrollerLab</a> i nie byłem go w stanie skompilować na nowo ani na Debianie, ani na Archu (chyba jakieś problemy z jedną z bibliotek KDE), postanowiłem zaprzyjaźnić się z linią komend <code>avr-gcc</code> i <code>avrdude</code>. Jako platformę wybrałem tym razem laptopa z Archem. I okazało się, że jest trudniej niż na Debianie.</p>
<p>Po pierwsze większość pakietów musiałem zainstalować z <a href="http://aur.archlinux.org/index.php?setlang=pl">AUR</a>, czyli repozytorium źródeł utrzymywanych przez użytkowników, bo w oficjalnych binarkach był tylko <code>avrdude</code>.</p>
<p>Gdy się już z tym uporałem, okazało się, że <code>avrdude</code> nie może dostać się do portu LPT. Zmieniłem więc ustawienia, ale po restarcie wszystko wróciło do stanu wyjściowego. W końcu znalazłem sposób na trwałą zmianę uprawnień. Do <code>/etc/udev/rules.d/udev.rules</code> w sekcji <code>Permissions and Symlinks</code> dopisałem:</p>
<pre><code>KERNEL=="parport[0-9]*",        GROUP="lp"</code></pre>
<p>Rzecz jasna, musimy dodać się później do odpowiedniej grupy:</p>
<pre><code># gpasswd -a użytkownik lp</code></pre>
<p>Mam nadzieję, że najbliższa aktualizacja <code>udev</code> nie nadpisze moich ustawień.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2008/01/14/uprawnienia-dla-devparport0/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spawanie światłowodów</title>
		<link>http://blog.vmario.org/2007/12/15/spawanie-swiatlowodow/</link>
		<comments>http://blog.vmario.org/2007/12/15/spawanie-swiatlowodow/#comments</comments>
		<pubDate>Sat, 15 Dec 2007 15:02:57 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[Polibuda]]></category>

		<guid isPermaLink="false">http://blog.vmario.org/2007/12/15/spawanie-swiatlowodow/</guid>
		<description><![CDATA[Kilka dni temu na zajęciach z techniki światłowodowej mieliśmy okazję samodzielnie zespawać światłowód. Postanowiłem przy tej okazji zrobić dobry uczynek: strzelić kilka fotek i uzupełnić odpowiednie artykuły na Wikipedii. Tak wzbogacony został opis spawarki światłowodowej. Artykuły o obcinarce i stripperze musiałem utworzyć od nowa.
Sam proces spawania nie był szczególnie trudny, tym bardziej, że spawarka, choć [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka dni temu na zajęciach z techniki światłowodowej mieliśmy okazję samodzielnie zespawać światłowód. Postanowiłem przy tej okazji zrobić dobry uczynek: strzelić kilka fotek i uzupełnić odpowiednie artykuły na Wikipedii. Tak wzbogacony został opis <a href="http://pl.wikipedia.org/wiki/Spawarka_%C5%9Bwiat%C5%82owodowa">spawarki światłowodowej</a>. Artykuły o <a href="http://pl.wikipedia.org/wiki/Obcinarka_do_%C5%9Bwiat%C5%82owod%C3%B3w">obcinarce</a> i <a href="http://pl.wikipedia.org/wiki/Stripper">stripperze</a> musiałem utworzyć od nowa.</p>
<p>Sam proces spawania nie był szczególnie trudny, tym bardziej, że spawarka, choć ręczna, nie automatyczna, była przygotowana do pracy.</p>
<p><a href="http://www.flickr.com/photos/vmario/2112846006/" title="Stripper by vmario, on Flickr"><img src="http://farm3.static.flickr.com/2151/2112846006_ff4b46bf6f_t.jpg" width="100" height="75" alt="Stripper" class="vmprawa" /></a></p>
<p>Aby zespawać dwa światłowody trzeba usunąć z nich warstwę ochronną &#8212; jest to jakieś tworzywo, które nie nadaje się do spawania (w przeciwieństwie do samego włókna, które w tym wypadku musi być wykonane ze szkła kwarcowego). Do wykonania tej czynności służy stripper.</p>
<p><span id="more-216"></span></p>
<p><a href="http://www.flickr.com/photos/vmario/2112067883/" title="Obcinarka do światłowodów by vmario, on Flickr"><img src="http://farm3.static.flickr.com/2256/2112067883_6efd48d945_t.jpg" width="100" height="75" alt="Obcinarka do światłowodów" class="vmlewa" /></a></p>
<p>Włókna muszą być równo przycięte, tak aby podczas justowania w spawarce stykały się całą płaszczyzną przekroju. Szkła kwarcowego nie da się ciąć tak, jak np. metalu, gdyż jest zbyt kruche. Należy zatem, podobnie jak szklarz, zarysować lekko włókno. Jeżeli w tej samej chwili rozciągniemy światłowód, powinien ładnie pęknąć. Pomaga nam w tym specjalna obcinarka.</p>
<p><a href="http://www.flickr.com/photos/vmario/2112067603/" title="Spawarka światłowodowa by vmario, on Flickr"><img src="http://farm3.static.flickr.com/2353/2112067603_751d2ec951_t.jpg" width="100" height="75" alt="Spawarka światłowodowa" class="vmprawa" /></a></p>
<p>Tak spreparowaną parę włókien umieszczamy w spawarce, justujemy, czyli wyrównujemy we wszystkich płaszczyznach i dosuwamy do siebie. Czynność tę należy wykonać z dokładnością rzędu mikrometra, a nawet lepszą &#8212; pomaga w tym mikroskop, przedstawiający obraz w dwóch płaszczyznach jednocześnie (z góry i z boku). Gdy światłowody są poprawnie ustawione, załączamy łuk elektryczny i, w razie potrzeby, korygujemy położenie włókien podczas samego procesu spawania.</p>
<p>Później należy zabezpieczyć spaw, gdyż, jak się naocznie przekonaliśmy, pozbawione warstwy ochronnej włókno jest bardzo kruche.</p>
<p>P.S. Półtora roku temu <a href="http://blog.vmario.org/2006/06/19/wycieczka-po-opto/">mieliśmy okazję</a> zobaczyć w akcji automatyczną spawarkę, która zamiast mikroskopu posiada kamery i monitor, a samo justowanie jest automatyczne.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2007/12/15/spawanie-swiatlowodow/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dwa przydatne kody na komórkę</title>
		<link>http://blog.vmario.org/2007/05/15/dwa-przydatne-kody-na-komorke/</link>
		<comments>http://blog.vmario.org/2007/05/15/dwa-przydatne-kody-na-komorke/#comments</comments>
		<pubDate>Tue, 15 May 2007 21:03:07 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<category><![CDATA[Lifehacking]]></category>

		<guid isPermaLink="false">http://vmario.ovh.org/blog/index.php/2007/05/15/dwa-przydatne-kody-na-komorke/</guid>
		<description><![CDATA[Jakoś tak przypomniały mi się dwa triki na telefon komórkowy, a konkretnie tzw. kody.

Pierwszy kod to [numer]#, gdzie [numer] to numer wpisu w książce telefonicznej karty SIM. Po jego wybraniu pokazuje się menu z numerami w kolejności, w jakiej zapisane są na karcie. Po naciśnięciu zielonej słuchawki następuje wybranie numeru (być może w niektórych aparatach [...]]]></description>
			<content:encoded><![CDATA[<p>Jakoś tak przypomniały mi się dwa triki na telefon komórkowy, a konkretnie tzw. kody.</p>
<p><a href="http://www.flickr.com/photos/90251649@N00/499928302/" title="Wyświetlacz telefonu po wpisaniu kodu 6#"><img src="http://farm1.static.flickr.com/231/499928302_51f5236b66_t.jpg" class="vmprawa" alt="Wyświetlacz telefonu po wpisaniu kodu 6#" width="100" height="75" /></a></p>
<p>Pierwszy kod to <code>[numer]#</code>, gdzie <code>[numer]</code> to numer wpisu w książce telefonicznej karty <abbr title="Subscriber Identity Module">SIM</abbr>. Po jego wybraniu pokazuje się menu z numerami w kolejności, w jakiej zapisane są na karcie. Po naciśnięciu zielonej słuchawki następuje wybranie numeru (być może w niektórych aparatach dzieje się to od razu po wpisaniu kodu). Po co to komu? Otóż jeżeli zapiszemy sobie najważniejsze osoby w pierwszych wpisach na karcie <abbr title="Subscriber Identity Module">SIM</abbr> (na ogół telefon pozwala określić numer rekordu), możemy do nich dzwonić po naciśnięciu trzech przycisków. Jest to mniej wygodne niż szybkie wybieranie, ale w moim przypadku się sprawdza.</p>
<p>Zaletą tego rozwiązania jest możliwość przypisania szybkiemu wybieraniu innej funkcji, np. skrótów do najczęściej używanych opcji menu. Ponadto mój telefon pozwala na posługiwanie się kodami w stylu <code>6#</code> także w terminarzu, który interpretuje je jak podany <i>explicite</i> numer telefonu. Zasadniczą wadą jest konieczność pokopiowania wpisów do odpowiednich rekordów, a ponieważ w pierwszych rekordach już na pewno coś jest, mamy chwilę zabawy.</p>
<p>Drugi kod jest powszechnie znany. To <code>*#06#</code>, odczytujący unikalny numer <abbr title="International Mobile Equipment Identificator">IMEI</abbr> aparatu, czasem pozwalający odczytać także wersję oprogramowania. <abbr title="International Mobile Equipment Identificator">IMEI</abbr> pozwala na zablokowanie konkretnego telefonu w przypadku kradzieży (<a href="http://www.adminer.pl/blokada/">szczegóły na temat blokowania skradzionego telefonu</a>). Oczywiście, numer należy sobie zapisać wcześniej&hellip;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2007/05/15/dwa-przydatne-kody-na-komorke/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Feralne kabelki</title>
		<link>http://blog.vmario.org/2007/05/05/feralne-kabelki/</link>
		<comments>http://blog.vmario.org/2007/05/05/feralne-kabelki/#comments</comments>
		<pubDate>Sat, 05 May 2007 08:42:57 +0000</pubDate>
		<dc:creator>vmario</dc:creator>
		
		<category><![CDATA[Elektronika]]></category>

		<guid isPermaLink="false">http://vmario.ovh.org/blog/index.php/2007/05/05/feralne-kabelki/</guid>
		<description><![CDATA[
Wczoraj postanowiłem wreszcie zabrać się za uruchomienie płytki testowej AVT3500 pod Linuksem, aby móc powoli przerabiać kurs AVR GCC z EdW. Nie mogłem znaleźć oryginalnego &#8222;programatora&#8221;, tj. kabla podłączanego na żywca do LPT, więc skorzystałem z programatora AVT2550/P, zgodnego z STK200. Płytka testowa nie ma typowego dwurzędowego gniazda ISP, znalazłem jednak skleconą kiedyś przejściówkę, więc [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/90251649@N00/484743406/" title="Fotka feralnej przejściówki"><img src="http://farm1.static.flickr.com/227/484743406_35d7a807db_t.jpg" class="vmlewa" alt="Fotka feralnej przejściówki" width="100" height="75" /></a></p>
<p>Wczoraj postanowiłem wreszcie zabrać się za uruchomienie płytki testowej AVT3500 pod Linuksem, aby móc powoli przerabiać kurs AVR <abbr title="GNU Compiler Collection">GCC</abbr> z <abbr title="Elektronika dla Wszystkich">EdW</abbr>. Nie mogłem znaleźć oryginalnego &bdquo;programatora&rdquo;, tj. kabla podłączanego na żywca do LPT, więc skorzystałem z programatora AVT2550/P, zgodnego z STK200. Płytka testowa nie ma typowego dwurzędowego gniazda <abbr title="In System Programmer">ISP</abbr>, znalazłem jednak skleconą kiedyś przejściówkę, więc od razu mogłem wszystko ze sobą połączyć. Problem w tym, że zaprogramowanie <abbr title="microcontroller">uC</abbr> za pomocą tej przejściówki nigdy mi się nie udało, a próbowałem chyba nawet na Windows z AVRStudio&hellip;</p>
<p>Kompilacja za pomocą <code>avr-gcc</code> przebiegła bez większych zgrzytów, jednak komputer w ogóle nie widział AVR-ka. Zarówno <code>uisp</code>, jak i <code>avrdude</code> zgłaszały błędy wyraźnie sugerujące, że są kłopoty z komunikacją. Przez kilka godzin ściągałem i instalowałem jakieś beznadziejne programy, zmieniałem opcje, czytałem fora, mierzyłem napięcia&hellip; W końcu wymieniłem nawet scalaka, bo miałem kilka w zapasie (wbił się w podstawkę tak, że chyba już go nigdy nie wyjmę &ndash; czemu nie dałem precyzyjnej?).</p>
<p>Wraz z upływem czasu coraz głośniej słyszałem: &bdquo;Czy dobrze zlutowałeś przejściówkę? Czy dobrze&hellip;&rdquo;. W akcie desperacji wyłączyłem komputer, sprawdziłem połączenia i, rzecz jasna, okazało się, że skrosowałem dwa kable, czy to przez pomyłkę, czy też w przebłysku głupoty (były to linie <abbr title="Master In Slave Out">MISO</abbr> i <abbr title="Master Out Slave In">MOSI</abbr>). W każdym razie o drugiej w nocy wreszcie ujrzałem</p>
<pre><code>vmario@pingwinek:~$ uisp -dprog=stk200 -dlpt=/dev/parport0
Atmel AVR AT90S2313 is found.</code></pre>
<p>Nigdy nie lekceważ kabelków.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.vmario.org/2007/05/05/feralne-kabelki/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
