<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEMGQnczeCp7ImA9WhRVEEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595</id><updated>2012-01-08T19:13:43.980+01:00</updated><category term="sonstiges" /><category term="Minimexle" /><category term="LED Matrix" /><category term="Beschleunigungssensor" /><category term="CTHN" /><category term="Kurztipp" /><category term="Altera" /><category term="Software" /><category term="Garbage Bot" /><category term="DE0-Nano" /><category term="mbed to brain machine" /><category term="XMega-Board" /><category term="LEDCube" /><category term="HackStick" /><category term="VLC fnordlicht &quot;Ambilight&quot;" /><category term="FPGA" /><category term="libWavePlay" /><title>klaute's blog</title><subtitle type="html">Programmierung, Hardware, Mikrocontroller (AVR und andere), Software, Linux, Elektronik</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://klautesblog.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/wrOF" /><feedburner:info uri="blogspot/wrof" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0MDQ348fip7ImA9WhdbFkQ.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-6177249770048574584</id><published>2011-10-15T19:24:00.000+02:00</published><updated>2011-10-15T19:24:32.076+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-15T19:24:32.076+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LEDCube" /><category scheme="http://www.blogger.com/atom/ns#" term="CTHN" /><title>Chaostreff Heilbronn - LEDCube</title><content type="html">Das erste Projekt im &lt;a href="http://cthn.de/page/hackerspace"&gt;Hackerspace&lt;/a&gt; (Incubator) des &lt;a href="http://cthn.de/"&gt;Chaostreff Heilbronn&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://farm7.static.flickr.com/6224/6220818877_5eba49aa75_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://farm7.static.flickr.com/6224/6220818877_5eba49aa75_z.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-dSzvLHKW9Lk/Tpm_80DtX_I/AAAAAAAAAFM/8FO6Q1taQzo/s1600/PICT0003.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-dSzvLHKW9Lk/Tpm_80DtX_I/AAAAAAAAAFM/8FO6Q1taQzo/s400/PICT0003.JPG" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
Mehr Informationen gibt es &lt;a href="http://cthn.de/projects/LEDCube"&gt;hier&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-6177249770048574584?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c6zdiqETaGTJ_dgKpUesSOjEP4Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c6zdiqETaGTJ_dgKpUesSOjEP4Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c6zdiqETaGTJ_dgKpUesSOjEP4Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c6zdiqETaGTJ_dgKpUesSOjEP4Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/QyV42Gmq2GQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/6177249770048574584/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/10/chaostreff-heilbronn-ledcube.html#comment-form" title="1 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/6177249770048574584?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/6177249770048574584?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/QyV42Gmq2GQ/chaostreff-heilbronn-ledcube.html" title="Chaostreff Heilbronn - LEDCube" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm7.static.flickr.com/6224/6220818877_5eba49aa75_t.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/10/chaostreff-heilbronn-ledcube.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HR3w4fip7ImA9WhdbFko.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-4217564854548920927</id><published>2011-10-12T20:38:00.003+02:00</published><updated>2011-10-15T12:50:36.236+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-15T12:50:36.236+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DE0-Nano" /><category scheme="http://www.blogger.com/atom/ns#" term="FPGA" /><category scheme="http://www.blogger.com/atom/ns#" term="Kurztipp" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><category scheme="http://www.blogger.com/atom/ns#" term="Altera" /><title>Altera Quartus 11.0 Tools, Ubuntu 11.4, USB-Blaster</title><content type="html">&lt;div style="text-align: justify;"&gt;
Wer mit Ubuntu 11.4 (x86) und der Software Quartus II Version 11.0 Build 157 04/27/2011 SJ Web Edition von Altera arbeitet, um z.B. sein DE0-Nano Board mit "Leben" zu befüllen wird schnell feststellen, dass diese Kombination leider ohne manuellen Eingriff, direkt nach der Installation der Altera Software, nicht funktioniert. Quartus II stürzt direkt nach dem Start mit einem Segfault (zumindest bei mir) ab. Und weder mit dem grafischen Programmer noch mit den Tools auf der Kommandozeile kann auf das DE0-Nano, welches sich am System als USB-Blaster ausgibt, zugegriffen werden. Da ich persönlich lieber auf der Konsole und mit Quartus II (aus vielerlei gründen) nur ungern arbeite, gehe ich hier nur auf die Konfiguration der Kommandozeilen Tools ein, um diese zur korrekten Arbeit zu bringen. Meine Altera Software habe ich mittels dem Altera-Installer unter &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/bin/altera/11.0&lt;/span&gt; installiert.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;1. Die &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/.bashrc&lt;/span&gt; anpassen&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Als erstes muss selbstverständlich der Pfad zu den Binaries der PATH-Variable hinzugefügt werden. Weiterhin benötigen diverse Quartus Tools die Umgebungsvariable QUARTUS_ROOTDIR um korrekt arbeiten zu können, daher habe ich auch diese in meine .bashrc eingefügt.&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;export PATH=$PATH":~/bin/altera/11.0/quartus/bin:~/bin/altera/11.0/nios2eds/bin:~/bin/altera/11.0/quartus/sopc_builder/bin"&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;export QUARTUS_ROOTDIR="~/bin/altera/11.0/quartus ~/bin/altera/11.0/nios2eds/sdk_shell"&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. UDEV Zugriffsrecht auf den USB-Blaster einrichten&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Ich habe die Datei "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/udev/rules.d/40-altera-usbblaster.rules&lt;/span&gt;" mit dem folgenden Inhalt angelegt:&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666", SYMLINK+="usbblaster", GROUP="plugdev"&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Startet man danach das System neu oder führt einen Reload von UDEV durch, kann auf den USB-Blaster zugegriffen werden. Die Voraussetzung dafür ist natürlich, dass dieser in der Liste der USB-Geräte auch angezeigt wird.&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;user@host:~$ lsusb -d 09fb:6001&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Bus 002 Device 013: ID 09fb:6001 Altera&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
UDEV kann mit den entsprechenden Rechten mittels &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;service udev reload&lt;/span&gt; dazu angewiesen werden die Konfiguration neu zu laden.&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;3. JTAG Daemon&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Dieser Daemon muss laufen, um korrekt auf die JTAG-Chain per USB-Blaster zugreifen zu können. Gestartet wird dieser mit &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jtagd&lt;/span&gt;. Natürlich kann man diesen Daemon auch permanent laufen lassen.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;4. Testen der JTAG-Verbindung&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Beim Aufruf von &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jtagconfig&lt;/span&gt; wird als Standard die Option &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--enum&lt;/span&gt; ausgeführt. Es werden alle diejenigen Devices angezeigt, die an der JTAG-Chain hinter dem USB-Blaster hängen.&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;user@host:~$ jtagconfig&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) USB-Blaster [2-1.2.2]&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; 020F30DD&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5. Quartus Programmer testen&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Der Quartus Programmer muss selbstverständlich auch auf den USB-Blaster zugreifen können. Das kann mit dem folgenden Aufruf getestet werden.&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;user@host:~$ quartus_pgm --list&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Info: *******************************************************************&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Info: Running Quartus II Programmer&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Version 11.0 Build 157 04/27/2011 SJ Web Edition&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Copyright (C) 1991-2011 Altera Corporation. All rights reserved.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Your use of Altera Corporation's design tools, logic functions&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: and other software and tools, and its AMPP partner logic&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: functions, and any output files from any of the foregoing&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: (including device programming or simulation files), and any&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: associated documentation or information are expressly subject&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: to the terms and conditions of the Altera Program License&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Subscription Agreement, Altera MegaCore Function License&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Agreement, or other applicable license agreement, including,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: without limitation, that your use is for the sole purpose of&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: programming logic devices manufactured by Altera and sold by&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Altera or its authorized distributors.&amp;nbsp; Please refer to the&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: applicable agreement for further details.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Processing started: Sat Oct&amp;nbsp; 8 18:10:02 2011&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Info: Command: quartus_pgm --list&lt;/span&gt;&lt;br /&gt;
&lt;div style="color: red;"&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1) USB-Blaster [2-1.2.2]&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Info: Quartus II Programmer was successful. 0 errors, 0 warnings&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Peak virtual memory: 82 megabytes&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Processing ended: Sat Oct&amp;nbsp; 8 18:10:02 2011&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Elapsed time: 00:00:00&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Info: Total CPU time (on all processors): 00:00:00&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Die Tools &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;quartus_pgm&lt;/span&gt; und &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;quartus_pgmw&lt;/span&gt; (die grafische Version) sollten nun den USB-Blaster korrekt erkennen und ansteuern können.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Da aber nun das übertragen der synthetisierten Logik nicht genug ist und ich den Build-Vorgang mit einem kurzen Makefile automatisiert habe, möchte ich dass natürlich nicht vorenthalten. Voraussetzung für den korrekten Betrieb sind die oben genannten Einstellungen, dass man sich beim Start im Verzeichnis des Quartus-Projektes befindet und das die Haupt-Datei des Projektes identisch mit dem Projektnamen ist (alles natürlich Case-Sensitive).&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#&lt;br /&gt;# Makefile to build FPGA/CPLD synthesis with altera tools.&lt;br /&gt;#&lt;br /&gt;# Licensed under GPL v3.0 (15.10.2011)&lt;br /&gt;# by Kai Lauterbach (klaute at gmail dot com)&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;TARGET=test&lt;br /&gt;&lt;br /&gt;MAPPER=quartus_map&lt;br /&gt;MAP_OPTIONS=--read_settings_files=on --write_settings_files=off $(TARGET) -c $(TARGET)&lt;br /&gt;&lt;br /&gt;FITTER=quartus_fit&lt;br /&gt;FIT_OPTIONS=--read_settings_files=off --write_settings_files=off $(TARGET) -c $(TARGET)&lt;br /&gt;&lt;br /&gt;ASSEMBLER=quartus_asm&lt;br /&gt;ASM_OPTIONS=--read_settings_files=off --write_settings_files=off $(TARGET) -c $(TARGET)&lt;br /&gt;&lt;br /&gt;STA=quartus_sta&lt;br /&gt;STA_OPTIONS=$(TARGET) -c $(TARGET)&lt;br /&gt;&lt;br /&gt;PROGRAMMER=quartus_pgm&lt;br /&gt;PGM_OPTIONS=-m jtag -c USB-Blaster -o "p;$(TARGET).sof"&lt;br /&gt;&lt;br /&gt;compile: clean map fit asm sta&lt;br /&gt;&lt;br /&gt;map:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(MAPPER) $(MAP_OPTIONS)&lt;br /&gt;&lt;br /&gt;fit:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(FITTER) $(FIT_OPTIONS)&lt;br /&gt;&lt;br /&gt;asm:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(ASSEMBLER) $(ASM_OPTIONS)&lt;br /&gt;&lt;br /&gt;sta:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(STA) $(STA_OPTIONS)&lt;br /&gt;&lt;br /&gt;program:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(PROGRAMMER) $(PGM_OPTIONS)&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm -rf db/ dse/ incremental_db/ sim.do $(TARGET)ig.archive.rpt $(TARGET).asm.rpt $(TARGET).bsf $(TARGET).cdf $(TARGET).done $(TARGET).dse.rpt $(TARGET).fit.rpt $(TARGET).fit.summary $(TARGET).flow.rpt $(TARGET).inc $(TARGET).map.rpt $(TARGET).map.smsg $(TARGET).map.summary $(TARGET).mif_update.rpt $(TARGET).pin $(TARGET).sof $(TARGET).sta.rpt $(TARGET).sta.summary $(TARGET).tis_db_list.ddb $(TARGET)_assignment_defaults.qdf wave.do $(TARGET).archive.rpt&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-4217564854548920927?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pa5N_PamdYXjt1SnSx_sOg2LeW8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pa5N_PamdYXjt1SnSx_sOg2LeW8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pa5N_PamdYXjt1SnSx_sOg2LeW8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pa5N_PamdYXjt1SnSx_sOg2LeW8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/f0ZcOqVLSWA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/4217564854548920927/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/10/altera-quartus-110-tools-unter-ubuntu.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4217564854548920927?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4217564854548920927?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/f0ZcOqVLSWA/altera-quartus-110-tools-unter-ubuntu.html" title="Altera Quartus 11.0 Tools, Ubuntu 11.4, USB-Blaster" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/10/altera-quartus-110-tools-unter-ubuntu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4eip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-8033144870479183887</id><published>2011-07-25T15:19:00.001+02:00</published><updated>2011-10-12T21:12:57.832+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.832+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XMega-Board" /><title>XMega evaluation board</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;a href="http://2.bp.blogspot.com/-IuJ_sUy829U/TiyMwx6R4iI/AAAAAAAAAE4/tMWYi8MNLPs/s1600/xmega+auf+tqfp64+adapter.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/-IuJ_sUy829U/TiyMwx6R4iI/AAAAAAAAAE4/tMWYi8MNLPs/s200/xmega+auf+tqfp64+adapter.png" width="200" /&gt;&lt;/a&gt;Ich beschäftige mich nun schon seit mehr als einem Jahr mit der XMega-Reihe von Atmel. Das Verwenden eines XMegas hat in vielen Bereichen deutliche Vorteile gegenüber eines kelineren Bruders aus der Mega-Reihe. Darunter fallen die höhere (maximale) Taktfrequenz von bis zu 32MHz, der Mehrkanal DMA-Controller, AES- und DES-Kryptografie per Hardware, höhere Kapazitäten für Flash/EEPROM/SRAM, höhere Auflösungen bei den ADC, digital zu analog Konverter (DAC) sind hinzugekommen und ein recht flexibles Event-System. Das einzige Manko ist, dass der Möglichkeit zur Programmierung per ISP-Schnittstelle weg gefallen ist. Es muss hier die neu hinzu gekommene PDI-Schnittstelle oder einfach JTAG Abhilfe schaffen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Da mir die Möglichkeit fehlt die Chips per PDI zu flashen, erledige ich dies mit einem AVR Dragon per JTAG und AVRDUDE, was keinerlei Probleme macht. Das einzige Problem, dass ich persönlich mit den XMegas habe ist die Bauform. Ein TQFP-Gehäuse ist nicht einfach nur mal so auf eine Lochrasterplatine aufgesteckt und kurzerhand verlötet. Glücklicherweise gibt es bei eBay jedoch Adapterplatinen für ein paar wenige Euro, die nur mit Stiftleisten versehen werden müssen und dann wie üblich weiterverwendet werden können. Das Bild oben zeigt so eine Adapterplatine, mit einem aufgelöteten ATXMega192A3.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: justify;"&gt;
Und da in meinem Fall die grundlegende Schaltung meistens identisch ist, habe ich diese einmalig in Eagle erstellt und darauf nun komplett auf einem 60x60mm großen Stück Lochrasterplatine aufgebaut. Das zweite Bild zeigt das ganze dann als fertig aufgebaut. Verfügbar sind die folgenden Schnittstellen an mehreren Steckerleisten, sowie zwei Status-LED und einen Reset-Taster. &lt;/div&gt;
&lt;div class="" style="clear: both; text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-B41XrkpFvfw/TiySUmdb5nI/AAAAAAAAAFA/aREm4gRFahY/s1600/PICT0031.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/-B41XrkpFvfw/TiySUmdb5nI/AAAAAAAAAFA/aREm4gRFahY/s200/PICT0031.JPG" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style="text-align: left;"&gt;JTAG (oben links)&lt;/li&gt;
&lt;li style="text-align: left;"&gt;1x I²C/TWI (oben rechts)&lt;/li&gt;
&lt;li style="text-align: left;"&gt;1x I²C/TWI mit weiteren IO-Leitungen (rechts mitte)&lt;/li&gt;
&lt;li style="text-align: left;"&gt;2x 20Pin IO-Steckerleiste (links unten, oben mitte)&lt;/li&gt;
&lt;li style="text-align: left;"&gt;2x UART (links mitte)&lt;/li&gt;
&lt;li style="text-align: left;"&gt;1x 14Pin Spannungsversorgung (unten rechts)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-QkvQyShievM/TiyTzSjwg3I/AAAAAAAAAFE/264DMbxP0MI/s1600/PICT0005.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/-QkvQyShievM/TiyTzSjwg3I/AAAAAAAAAFE/264DMbxP0MI/s200/PICT0005.JPG" width="200" /&gt;&lt;/a&gt;Die Spannungsversorgung habe ich hier bewusst extern belassen, so dass beide Platinen einfach ausgetauscht werden können (siehe rechtes Bild). Die Maximale Eingangsspannung liegt hier bei 25V und an den Ausgängen liegen die Eingangsspannung und die Spannungen 5V, 3,3V und 1,8V an. Der Maximalstrom liegt bei jedem der Regler bei ca. 1A. Eine LED zeigt an, das dass System in Betrieb ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-Wu-few0QqeU/Ti1g54HppbI/AAAAAAAAAFI/w_HK72luMvI/s1600/PICT0006.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-Wu-few0QqeU/Ti1g54HppbI/AAAAAAAAAFI/w_HK72luMvI/s200/PICT0006.JPG" width="200" /&gt;&lt;/a&gt;Als nächstes habe ich angedacht noch eine weitere Platine zu erstellen, welche die beiden ausgeführten UART-Schnittstellen, des Evaluation-Boards, zu USB und RS232 konvertieren. Die Einzelteile liegen schon bereit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-8033144870479183887?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EhvaB3HHyQDWwYIXOBtELE9wUi4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EhvaB3HHyQDWwYIXOBtELE9wUi4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EhvaB3HHyQDWwYIXOBtELE9wUi4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EhvaB3HHyQDWwYIXOBtELE9wUi4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/B8si-uv1xQg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/8033144870479183887/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/07/xmega-evaluation-board.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8033144870479183887?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8033144870479183887?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/B8si-uv1xQg/xmega-evaluation-board.html" title="XMega evaluation board" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-IuJ_sUy829U/TiyMwx6R4iI/AAAAAAAAAE4/tMWYi8MNLPs/s72-c/xmega+auf+tqfp64+adapter.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/07/xmega-evaluation-board.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4eip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-4518429981269791753</id><published>2011-07-01T16:32:00.005+02:00</published><updated>2011-10-12T21:12:57.832+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.832+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="libWavePlay" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><title>A small and proprietary AVR C-Library to play Wavefiles...</title><content type="html">&lt;div align="JUSTIFY"&gt;
&lt;div class="separator" style="clear: both; text-align: right;"&gt;
&lt;a href="http://4.bp.blogspot.com/-IJOeYSySsqc/Tg7_J7pxtpI/AAAAAAAAAE0/cGM30rbmNEk/s1600/PICT0007.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-IJOeYSySsqc/Tg7_J7pxtpI/AAAAAAAAAE0/cGM30rbmNEk/s200/PICT0007.JPG" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;
Projekte bei denen &lt;a href="https://ccrma.stanford.edu/courses/422/projects/WaveFormat/"&gt;Wavedateien&lt;/a&gt;
abgespielt werden gibt es viele. Bei den meisten ist die dazu
implementierte Funktionalität jedoch ein fester Bestandteil der
Firmware und dadurch nur oft schwer zu verstehen und oft auch nicht
gerade einfach in seine eigenes Projekt zu übernehmen. Zudem ist je
nach verwendeten Mikrocontroller die Ausgabemöglichkeit der
Audiodaten unterschiedlich, was aber unter Umständen nicht auf den
ersten Blick ersichtlich ist. Die erste Alpha-Version der hier
vorgestellten &lt;span lang="en-US"&gt;Library&lt;/span&gt;, welche auf &lt;a href="https://github.com/klaute/libWavePlay"&gt;GitHub&lt;/a&gt;
verfügbar ist, besitzt im Moment die im folgenden beschriebenen
Eigenschaften.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;b&gt;Eigenschaften der Library: &lt;/b&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li style="text-align: left;"&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0cm;"&gt;
Die &lt;span lang="en-US"&gt;Library&lt;/span&gt;
 läuft momentan nur auf &lt;span lang="en-US"&gt;AVR-Controllern&lt;/span&gt;
der Mega-Reihe (getestet mit ATMega328p). 
 &lt;/div&gt;
&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0cm;"&gt;
Es werden nur
 Wave-Daten unterstützt die im Flash oder EEPROM abgelegt sind (muss
 per Preprozessor-Einstellung festgelegt werden). 
 &lt;/div&gt;
&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0cm;"&gt;
Die Wave-Daten
 müssen im &lt;a href="http://de.wikipedia.org/wiki/Puls-Code-Modulation"&gt;PCM&lt;/a&gt;-Format
 (8Bit, Mono, 8kHz Sampling-Rate) und ohne den 44Byte Header im Flash
 oder EEPPROM abgelegt worden sein. 
 &lt;/div&gt;
&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0cm;"&gt;
Die Daten werden per
 &lt;a href="http://hackaday.com/2011/06/26/pulse-width-modulation-with-microcontrollers/"&gt;Pulse
 Width Modulation&lt;/a&gt; (8Bit) an den Pins PD5 und PD6 ausgegeben. Die
 Basisfrequenz liegt hier bei 62,5 kHz. 
 &lt;/div&gt;
&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0cm;"&gt;
Timer0 wird dazu
 verwendet das PWM-Signal (Fast PWM Modus) zu generieren. 
 &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style="text-align: left;"&gt;
Timer2 wird dazu verwendet die Wave-Daten
 Byte-weise, im Takt der &lt;span lang="en-US"&gt;Sampling-Rate&lt;/span&gt;, an
 die beiden Output Compare Register (A/B) des Timer0 zu übergeben.&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Funktionen der Library:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt; 
&lt;br /&gt;
&lt;div align="JUSTIFY"&gt;
Die Library besitzt zudem Funktionen mit denen es
möglich ist, die Hard- und Software zu initialisieren und den
Abspielvorgang zu starten, stoppen und pausieren. Wenn die
Preprozessor-Einstellung für Flash angegeben wurde, kann ein im
&lt;span lang="en-US"&gt;Repository&lt;/span&gt; liegendes Shellscript im &lt;a href="https://github.com/klaute/libWavePlay/tree/master/tools"&gt;&lt;span style="font-style: normal;"&gt;tools&lt;/span&gt;&lt;/a&gt;
Verzeichnis dazu verwendet die benötigte C-Datei für die Firmware
zu erzeugen (es wird &lt;a href="http://sox.sourceforge.net/"&gt;SoX&lt;/a&gt;
benötigt). Zu beachten ist dabei, dass aufgrund des in C intern
verwendeten Datentyps (16Bit &lt;span lang="en-US"&gt;signed&lt;/span&gt;
integer) für den &lt;a href="http://www.mikrocontroller.net/topic/60949"&gt;Index
von Arrays&lt;/a&gt;, die Maximale Anzahl von Samples in der Wave-Datei den
maximal möglichen Index von 32767 nicht überschreiten darf.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Ablauf der Ausgabe:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Der Vorgang zum abspielen gestaltet sich wie folgt. Der Timer0
(8Bit) wird so eingestellt, dass dieser mit einen Vorteiler von 1
(voller CPU-Takt) im nicht invertierenden Fast PWM-Modus läuft und
der TOP-Wert für den Zähler des Timers ist dabei der Wert 0xff. Der
Counter des Timers läuft also immer von 0 bis 255, was eine Frequenz von 62,5kHz, ergibt.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Ist bei einem Zählvorgang der TOP-Wert erreicht
bzw. überschritten, findet ein Überlauf statt, der veranlasst, dass
beiden Pins PD5/6 auf High gesetzt werden. Der Counter fängt wieder
bei 0 an hoch zu zählen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Auf Low werden die beiden Pins gesetzt wenn jeweils
ein Vergleichswert zum aktuellen Counter-Wert erreicht wird. Diese
beiden verwendeten Vergleichswerte sind im Fall des Timer0 die
Register OCR0A/B. Durch diesen Vergleichswert kann also die Zeit in
256 Schritten festgelegt werden, wie lange das PWM-Signal, innerhalb
einer Periode, auf High oder Low gesetzt ist. 
&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Der zweite Timer (Timer2) ist auch ein 8Bit Timer,
der jedoch nich im PWM-Modus läuft. Er wurde so eingestellt, dass er
mit einem Prescaler von 8 auf 2MHz läuft und bei einem
Vergleichswert von 250 (eingestellt über das Register OCR2A, was
exakte 8kHz ergeben und somit die Unterstützte Samplingrate der
Wave-Daten von 8kHz entspricht) einen Interrupt auslöst der eine
Interruptroutine aufruft. Gleichzeitig wird der Counter des Timer
wieder auf 0 gesetzt, der darauf wieder hoch zählt. In der eben
genannten Interrupt-Routine wird je nach Konfiguration der Lib, ein
Byte nach dem anderen, entweder aus den Wave-Daten aus dem Flash oder
EEPROM nachgeladen und in die beiden oben genannten
Vergleichsregister OCR0A/B geschrieben. Dies führt dazu, das der
Timer0 nachdem nächsten Überlauf, durch erreichen des
Counter-Wertes 0x00, das Tastverhältnis direkt ausgibt.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Dieser Wechsel des PWM-Verhältnisses, im Takt der
Sampling-Rate, ergibt eine Veränderung der mittleren
Ausgangsspannung des PWM-Signals und ist damit (wenn auch recht
kantigen) das wiederhergestellte Ausgangssignal aus dem die
PCM-Kodierte Wavedatei erzeugt wurde. Dies liegt daran, da bei der
Pulse Code Modulation, ein Audiosignal mit einer festen Sampling-Rate
(in unserem Fall 8kHz) abgetastet wird. Die Abtasten bedeutet
schlicht, dass in einem festgelegten Takt der momentan anliegende
Spannungswert an der Datenleitung (in unserem Fall 8Bit-Wert breit)
abgefragt wird. Es ergibt sich also eine folge von Werten, aus denen
das erfasste Signal wieder rekonstruiert werden kann.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Das ganze oben beschriebene Vorgang ist natürlich
nur recht kurz und simpel beschrieben. Er soll lediglich nur einen
Überblick über den Vorgang geben. Fehler und Ungenauigkeiten können
also enthalten sein und ich bin über jede Anregung oder Korrektur
dankbar.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;b&gt;Verwendete Hardware:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Als Hardwarebasis zum testen verwende ich ein
&lt;a href="http://www.mexle.net/en/minimexle"&gt;Minimexle&lt;/a&gt; der Version 3, bei dem
ich ein anderes Quarz (16MHz statt 18,432MHz) und einen anderen AVR
(ATMega328p statt einem ATMega88) verwende. Durch den AVR mit
größerem Flash-Speicher (32kB) sind die weiteren Möglichkeiten in
der Firmware wesentlich weniger eingeschränkt als beim Mega88. Zudem
besitzt das Minimexle ein Display mehrere Taster und einen Summer. So
kann hier die Funktionalität der Lib durch ein simples
Benutzerinterface angeboten und auch ohne angeschlossene
Kopfhörer etc. die Wave-Daten abgespielt werden können.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Und dadurch, dass beim Minimexle jeder der beiden verwendeten
PWM-Kanäle mit einem &lt;a href="http://de.wikipedia.org/wiki/Tiefpass#Tiefpass_1._Ordnung"&gt;RC-Tiefpass&lt;/a&gt;
(erster Ordnung) ausgestattet ist, bevor diese an 3,5"
Klinken-Buchsen ausgeführt werden, können einfache Lautsprecher,
wie man sie aus PC-Gehäusen als PC-Speaker kennt, oder sehr einfache
Kopfhörer sollten ohne Probleme an diese Buchse angeschlossen
werden.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;b&gt;Warnhinweis:&lt;/b&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Von der Verwendung von aktiven Kopfhörern, Stereoanlagen, Verstärkern
oder ähnlichem rate ich jedoch aufgrund der Signaleigenschaften des
PWM-Signals dringend ab. Es versteht sich von selbst, dass ich
keinerlei Verantwortung für Schäden jeder Art durch Verwendung dieser Software übernehme.&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Ausblick:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Für die Zukunft ist angedacht, den Header der
Wave-Dateien zur Konfiguration der Timer heranzuziehen, weitere
Sampling-Raten zu unterstützen und die Anzahl der verwendeten Timer
auf einen zu reduzieren. Zudem soll der zu verwendende Timer
auswählbar sein und falls die PWM-Pins, dieses Timers, anderweitig
verwendet wurden, ein Software PWM-Modus verfügbar sein der für
beliebige Pins, an einem beliebigen Port, betrieben werden kann,
usw...
&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
&lt;b&gt;Weitere Links:&lt;/b&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;div align="LEFT" style="margin-bottom: 0cm;"&gt;
Grundlegendes zur
 Tonerzeugung mit Hilfe von Mikrocontrollern. -
 &lt;a href="http://www.mikrocontroller.net/articles/Klangerzeugung"&gt;http://www.mikrocontroller.net/articles/Klangerzeugung&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div align="LEFT" style="margin-bottom: 0cm;"&gt;
Umwandlung von
 Wave-Dateien in C-Code - &lt;a href="http://www.mikrocontroller.net/topic/132749"&gt;http://www.mikrocontroller.net/topic/132749&lt;/a&gt;
  &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div align="LEFT"&gt;
Converting PCM to PWM audio. -
 &lt;a href="http://www.eetindia.co.in/STATIC/PDF/200809/EEIOL_2008SEP19_SIG_TA_02.pdf?SOURCES=DOWNLOAD"&gt;http://www.eetindia.co.in/STATIC/PDF/200809/EEIOL_2008SEP19_SIG_TA_02.pdf?SOURCES=DOWNLOAD&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="JUSTIFY"&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-4518429981269791753?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BVl4yOQ-xSug3GddygNWvN4CNdU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BVl4yOQ-xSug3GddygNWvN4CNdU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BVl4yOQ-xSug3GddygNWvN4CNdU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BVl4yOQ-xSug3GddygNWvN4CNdU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/Cp71Tqj2goA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/4518429981269791753/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/07/small-and-proprietary-avr-c-library-to.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4518429981269791753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4518429981269791753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/Cp71Tqj2goA/small-and-proprietary-avr-c-library-to.html" title="A small and proprietary AVR C-Library to play Wavefiles..." /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-IJOeYSySsqc/Tg7_J7pxtpI/AAAAAAAAAE0/cGM30rbmNEk/s72-c/PICT0007.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/07/small-and-proprietary-avr-c-library-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4eyp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-238699468718345470</id><published>2011-04-06T23:01:00.009+02:00</published><updated>2011-10-12T21:12:57.833+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.833+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mbed to brain machine" /><title>mbed to brain machine</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-g-HUWr229Os/TZy51d8UjqI/AAAAAAAAAEc/Q36aVr1NSA8/s1600/blog_top.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="145" src="http://4.bp.blogspot.com/-g-HUWr229Os/TZy51d8UjqI/AAAAAAAAAEc/Q36aVr1NSA8/s320/blog_top.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Motiviert durch ein Video zum &lt;a href="http://www.makershed.com/ProductDetails.asp?ProductCode=MSBM"&gt;&lt;span class="productnamecolorLARGE colors_productname"&gt;Brain Machine Kit&lt;/span&gt;&lt;/a&gt;, kam mir die Idee eine mbed to brain machine zu bauen. Eine Brain Machine soll, laut &lt;a href="http://makezine.com/images/10/SLMfirmware.pdf"&gt;Beschreibung&lt;/a&gt;, dass Gehirn des Trägers durch audiovisuelle Stimulation (mit Beta-, Alpha-, Theta- und Delta-Wellen) in verschiedene Bewusstseins-zustände versetzen. Die Hardware besteht im wesentlichen aus einer ausgedienten 3D-Brille, einem Spannungsregler, Transistoren, LED's, diversen Widerständen, einer 3,5mm stereo Klinkenbuchse und natürlich dem &lt;a href="http://mbed.org/"&gt;mbed NXP LPC1768&lt;/a&gt; Entwicklungsboard. Die Spannungsquelle ist in meinem Fall ein 9V Block. Von der Idee zur brain machine dauerte es in etwa 2 Stunden. Die Frequenzen der LED's und Töne müssen natürlich noch entsprechend justiert werden, aber auch jetzt ist der im Video beschreibene Effekt schon deutlich wahrzunehmen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/-aGqJDHVxSm0/TZzJP6IJQrI/AAAAAAAAAEk/09eLLtSYhpU/s1600/blog_1.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="116" src="http://3.bp.blogspot.com/-aGqJDHVxSm0/TZzJP6IJQrI/AAAAAAAAAEk/09eLLtSYhpU/s200/blog_1.PNG" width="200" /&gt;&lt;/a&gt;Wie auch bei dem oben genannten Kit werden zwei LED's mit Hilfe der Brille vor den Augen fixiert. Die mir zur Verfügung stehende Brille hat zwei spezielle Plastik-Folien als Gläser, diese können einfach mit einem Bohrer der etwas kleiner als der Durchmesser der LED's ist durchbohrt werden. An den LED's habe ich einfach je ein kurzes Stück zweiadriges Flachbandkabel verwendet. Die Stiftleisten am Ende erleichtern Später das zusammen bauen.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-aTusPOIEYMQ/TZzNxHuPf7I/AAAAAAAAAEo/MUYGiw0btG4/s1600/blog_2.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="252" src="http://3.bp.blogspot.com/-aTusPOIEYMQ/TZzNxHuPf7I/AAAAAAAAAEo/MUYGiw0btG4/s320/blog_2.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align="JUSTIFY"&gt;
Beim Aufbau der Lochraster Platine kommt es nur darauf an, dass das mbed Board aufzustecken ist, ohne dass unerwünschte Verbindungen zu anderen Bauteilen zustande kommen. Ich habe hier nur einen Teil der am mbed Board vorhandenen Pins für das Aufstecken auf Buchsenleisten (im Bild rechts grün markiert) vorgesehen. Auf die Steckerleiste (blaue Markierung) werden die beiden LED's aufgesteckt. Die Platine wird dann einfach mit Kabelbindern auf der Brille befestigt.&lt;/div&gt;
&lt;br /&gt;
Die Schaltung ist recht simpel. Die beiden Transistoren sind mit den Pins 21 und 22 und die beiden Leitungen des Klinkensteckers mit dem Pin 23 und 24 zunächst direkt verbunden. Bei Gelegenheit werde ich diese hier online stellen.&lt;br /&gt;
&lt;br /&gt;
Natürlich gibt es auch dieses mal wieder ein Video dazu. &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="292" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ydHCgRNW-EI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;










&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;










&lt;/param&gt;
&lt;param name="allowScriptAccess" value="always"&gt;










&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/ydHCgRNW-EI&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="480" height="292"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;span class="productnamecolorLARGE colors_productname"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span class="productnamecolorLARGE colors_productname"&gt;Edit (2011-04-09 14:36): Die Frequenzen sind nun abgestimmt und es wird nun eine Brainwave Folge, wie sie in diesem &lt;a href="http://makezine.com/images/10/SLMfirmware.pdf"&gt;Dokument&lt;/a&gt; abgebildet ist, abgespielt. Die Synchronisation der Signale werden ggf. noch verbessert und die Firmware, sowie ein Schaltplan, ist nun unter &lt;a href="http://mbed.org/users/klaute/"&gt;http://mbed.org/users/klaute/&lt;/a&gt; verfügbar.&lt;/span&gt;&lt;/div&gt;
&lt;span class="productnamecolorLARGE colors_productname"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-238699468718345470?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vyHmSMJ_xz81BQNyR2XAVMhq2mw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vyHmSMJ_xz81BQNyR2XAVMhq2mw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vyHmSMJ_xz81BQNyR2XAVMhq2mw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vyHmSMJ_xz81BQNyR2XAVMhq2mw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/_s4omZjWf4M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/238699468718345470/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/04/mbed-to-brain-machine.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/238699468718345470?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/238699468718345470?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/_s4omZjWf4M/mbed-to-brain-machine.html" title="mbed to brain machine" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-g-HUWr229Os/TZy51d8UjqI/AAAAAAAAAEc/Q36aVr1NSA8/s72-c/blog_top.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/04/mbed-to-brain-machine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4eyp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-3830699947619548374</id><published>2011-03-20T21:18:00.002+01:00</published><updated>2011-10-12T21:12:57.833+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.833+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HackStick" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><title>HackStick Update</title><content type="html">&lt;div style="text-align: justify;"&gt;
Heute geht es um ein Projekt das nun seit mehr als einem Jahr ohne nennenswerten Fortschritt in der Ecke lag, dem "HackStick". In meinem letzten Post habe ich darüber berichtet, dass ich den ursprünglich eingesetzten ATMega8 durch einen ATMega168 ersetzen würde. Das ist längst geschehen und nich mehr aktuell. Nachdem die Ideen für viele neue Features in der Firmware nur so sprudelten, musste unbedingt zunächst ein neuer Mikrocontroller her, um den gestiegenen Anforderungen gerecht zu werden.&lt;br /&gt;
&lt;br /&gt;
Der zuvor verwendete Mega168 war mit seinen 16kB Flash und den vorhandenen 1kB SRAM schon zu jeweils etwa 80% gefüllt. Was aber leider keine weiteren großen Schritte zulies. Abhilfe schafft "der Neue". Ein ATMega328P-PU. Dieser besitzt im Vergleich zu dem vorher verfügbaren Flash, RAM und EEPROM jeweils die doppelte Kapazität. Also 32kB Flash, 2kB SRAM und 1kB EEPROM. Die Bauform und Pinbelegung ist dabei zu der Mega8 Reihe identisch (P-DIP28).&lt;br /&gt;
&lt;br /&gt;
In der Firmware sind jedoch ein paar kleinere Änderungen notwendig gewesen um die USART-Schnittstelle verwenden zu können. Hilfrech ist hierbei die aktuelle &lt;a href="http://jump.to/fleury"&gt;UART Library von Peter Fleury&lt;/a&gt;. Unter Ubuntu 10.10, mit einem avr-gcc-4.3.5 und der avr-libc-1.6.8-2 musste jedoch das ein oder andere Register, sowie die Interrupt Vektoren, angepasst werden. Leider ist mit dieser Library das Senden von Daten per USASRT (out of the Box) mit dem Mega328p nicht per Interrupt möglich gewesen, was aber an dieser Stelle nicht weiter stört und mich daher auch nicht genötigt hat zu prüfen, warum dieses Feature nicht funktioniert. &lt;br /&gt;
&lt;br /&gt;
Ein weiteres Software-Update hat der &lt;a href="http://www.fischl.de/usbasp/"&gt;Bootloader&lt;/a&gt; erfahren, dass ohne Probleme verlief. Lediglich die Fuse-Bits mussten angepasst werden, da ich nicht bei jedem Flashen der Firmware das EEPROM neu beschreiben wollte. Lediglich die Konfigurations-Einstellungen des Bootloaders, sowie eine kleinere Anpassung im Code, mussten durchgeführt werden, um den Bootloader auch aus der eigentlichen Firmware heraus, software-seitig über den AVR internen Watchdog starten zu können. Die vorher vorhandene Möglichkeit den Bootloader zu starten, indem ein Jumper vor dem Einstecken gesetzt wird, bleibt dabei bestehen. &lt;br /&gt;
&lt;br /&gt;
Neben diesen beiden Updates von Firmware-Teilen und der generellen Umstrukturierung, haben sich jedoch noch weitere neue Features ergeben. Die Liste ist lang und daher soll die folgende Liste nur einen Sichpunktartigen Überblick bringen.&lt;/div&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Setzen, Aanzeigen und Senden aller USB-spezifischen Daten über das TTY. Mit USB-spezifischen Daten sind alle USB Descriptoren, Strings, Vendor-/Device-ID, USB Daten und Sequenzen von zu sendenden USB Daten gemeint.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Ein Interpreter mit dem die oben genannten USB Daten-Sequenzen interpretiert und gesendet werden können. Hier stehen, je nach Datenmenge und Headerinformationen, ca. 794 Byte zur verfügung.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Es kann festgelegt werden ob auf eingehende Daten reagiert werden soll. Die Reaktion darauf wäre das Starten der Interpretation der aktuellen USB Daten Sequenz.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Alle Daten können in das EEPROM gespeichert und daraus geladen werden.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Das Startverhalten der Firmware kann in einem im EEPROM abgelegten Konfigurations-Wort festgelegt werden. Es kann hier festgelegt werden, welche Daten beim Start geladen werden sollen, ob die Sequenz-Daten direkt nach dem Start interpretiert werden sollen und ob auf eingehende Daten reagiert werden soll.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Eine Online-Hilfe mit Beschreibung aller verfügbaren Kommandos.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Wie oben schon erwähnt kann der Bootloader aus der Firmware heraus gestartet werden. &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Da die Benutzerfreundlichkeit dieser Features, auf dem TTY, aber leider aufgrund dessen, dass nur unnötig weiterer Speicherplatz im Flash verschwendet werden würde, leidet, habe ich eine kleine GUI geschrieben, um speziell die Sequenzen von USB Daten komfortabler erzeugen und an den HackStick übertragen zu können. Geschrieben ist die Software in Java. Die mit der GUI erzeugten KeyCode-Sequenzen können z.B. bei der Verwendung eines im HackStick festgelegten Hid Keyboard Descriptors, als Tastatureingaben einer Tastatur an den Host gesendet werden. Die Daten werden bei der Erzeugung differentiell in der Sequenz abgelegt. Wer jedoch auf die GUI verzichten möchte kann die im Projekt enthaltene HackStick Klasse auch auf der Kommandozeile zum Übertragen von Dateien verwenden. Zu den Sequenzen muss hierbei gesagt werden, dass der Inhalt der Sequenz-Daten erst in Verbindung mit einem gültigen USB Hid Descriptor für den Host einen Sinn ergeben. So macht es keinen Sinn, KeyCodes an den Host zu senden, wenn der HackStick sich per Hid Maus Descriptor als Maus ausgibt.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Zum Abschluss gibt es, wie so häufig, ein kurzes Video.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;object style="height: 292px; width: 480px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uukmLo9tb5I?version=3"&gt;




&lt;param name="allowFullScreen" value="true"&gt;




&lt;param name="allowScriptAccess" value="always"&gt;




&lt;embed src="http://www.youtube.com/v/uukmLo9tb5I?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="480" height="292"&gt;&lt;/object&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;/div&gt;
Der Stick wurde hier so konfiguriert, dass er sich als Hid Keyboard ausgibt und im EEPROM wurden Daten abgelegt, die gesendet werden sobald der Status einer aktivierten NumLock-Taste vom Betriebssystem an die neu angeschlossene Tastatur übergeben wurde. Das ganze kann beliebig oft getriggert werden in dem diese Taste mehrfach betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Edit (2011-05-04 19:46): Bilder der ersten Platinen gibt es &lt;a href="http://www.flickr.com/photos/50037142@N07/5687481458/in/photostream/"&gt;hier&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Edit (2011-06-06 22:57): Seit heute gibt es ein &lt;a href="https://github.com/klaute/HackStick"&gt;GitHub Repository&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-3830699947619548374?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TPb-C5GMhA9tb6g5KEo-tWqG7RI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TPb-C5GMhA9tb6g5KEo-tWqG7RI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TPb-C5GMhA9tb6g5KEo-tWqG7RI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TPb-C5GMhA9tb6g5KEo-tWqG7RI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/IUM2z9VEpf0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/3830699947619548374/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2011/03/hackstick-update.html#comment-form" title="1 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3830699947619548374?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3830699947619548374?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/IUM2z9VEpf0/hackstick-update.html" title="HackStick Update" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2011/03/hackstick-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEABQn89eCp7ImA9WhdbGUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-8928205900841915411</id><published>2010-09-27T07:58:00.002+02:00</published><updated>2011-10-18T17:45:53.160+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T17:45:53.160+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>LEDMatrix - aktualisierte Firmware</title><content type="html">&lt;div style="text-align: justify;"&gt;
Es ist nun schon einige Zeit vergangen seitdem Mike und ich das Projekt abgeschlossen haben. Leider war der letzte Stand der Firmware noch nicht ganz zufriedenstellend.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Das Problem war zum einen, die Stabilität der USB-Verbindung des Microcontrollers zum Linux-Rechner. Genauer gesagt wurde die USB-Verbindung regelmäßig vom PC aus,resettet wenn zu schnell Daten an den AVR gesendet wurden.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Nach mehreren Tests konnte ich jedoch einen neuen Release der Firmware erstellen, welche zum einen die aktuelle Version des &lt;a href="http://www.obdev.at/products/vusb/index-de.html"&gt;V-USB&lt;/a&gt; Projektes beinhaltet und zum anderen einige (kleine aber wichtige) Änderungen die das Timing- und Kommunikations-Verhalten verändern.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Die Verbindung ist nun stabil und die USB-Verbindung wird nicht mehr resettet.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Das zweite, größere Problem war, dass der Microcontroller nur per dazwischen geschaltetem USB-Hub an dem Rechner erkannt wurde, der die Matrix steuern sollte. Jeder andere Linux-PC jedoch hatte mit dem direkten Anschließen des Controllers keine Probleme.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Nachdem wir das Problem mit einem weiteren PC, der auch einen Nvidia Chipsatz besitzt, verifizieren konnten, war das Problem also lokalisiert. Auch diverse Forenbeiträge im &lt;a href="http://forums.obdev.at/viewforum.php?f=8"&gt;OBDEV-Forum&lt;/a&gt; ergaben ähnliche Erfahrungen mit Nvidia. Genauer gesagt liegt das Problem beim Timing des Modules im V-USB Treiber für die Verwendung von 16 MHz Quarzen. Manche Chipsätze und deren Treiber kommen damit einfach nicht zurecht. Und da das Debugging in dem Fall (jedenfalls für uns) zu aufwendig werden würde, ersetzen wir demnächst das 16MHz Quarz durch eines mit 12MHz.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Dadurch sollten, laut den Foren, alle Probleme mit der Erkennung&amp;nbsp; auf Nvidia-Chipsätzen endgültig beseitigt worden sein.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Die neue Firmware kann wie immer &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/firmware_mikesledmatrix.htm"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Dem Archiv habe ich auch den aktuellen &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/LEDMatrix-Schaltung.pdf"&gt;Schaltplan&lt;/a&gt; als PDF beigefügt.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-8928205900841915411?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i8_eSNhq7co09RXMdgimhQVj5io/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i8_eSNhq7co09RXMdgimhQVj5io/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i8_eSNhq7co09RXMdgimhQVj5io/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i8_eSNhq7co09RXMdgimhQVj5io/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/YnevMXabpWs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/8928205900841915411/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/09/ledmatrix-aktualisierte-firmware.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8928205900841915411?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8928205900841915411?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/YnevMXabpWs/ledmatrix-aktualisierte-firmware.html" title="LEDMatrix - aktualisierte Firmware" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/09/ledmatrix-aktualisierte-firmware.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYEQn49eCp7ImA9WhZTFUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-5954591548413378882</id><published>2010-06-03T19:50:00.005+02:00</published><updated>2011-03-19T17:28:23.060+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-19T17:28:23.060+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sonstiges" /><title>Acer Aspire 1825ptz - Datenverlust bei Treiberupdate</title><content type="html">&lt;div style="text-align: justify;"&gt;﻿Heute geht es unüblicherweise um ein ganz anderes Thema. Habe ich mir doch von ein paar Tagen aufgrund dem Schwächeln der alten Hardware ein neues Notebook geleistet. Ein Acer Aspire 1825ptz mit 4G RAM, 320GB HDD und Windows 7 Home Premium 64bit usw. Nach ein paar wenigen Tagen und dem ernsthaften Versuch meine privaten Projekte auch effizient unter Windows fortsetzen zu können bin ich allerdings auf eine Sache gestoßen, die mich nun doch wieder auf den Boden der Tatsachen zurückgeholt hat.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;War ich doch tatsächlich leicht davon überzeugt das Gerät zunächst unter Windows zu betreiben zu können. Zumindest bis das Touchpanel akzeptabel unter Linux unterstützt wird und ich die Zeit dafür gefunden habe. Funktioniert hatte unter Windows auch alles soweit, bis auf eine Kleinigkeit die ich aber gerne verwendet hätte. Das Gerät besitzt einen eingebauten Bluetooth Adapter, wobei Windows aber für 3 der Komponenten des Adapters leider keinen passenden Treiber findet. War ich also der Meinung den Treiber von der &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Acer-Support-Seite für mein Gerät herunterzuladen und diesen auch zu installieren. Gesagt getan, auf der genannten Seite kommt man recht bequem und einfach zu seinem Produkt und den verfügbaren Treibern. Sogar deren Auswahl ist eindeutig (zumindest bei meinem Notebook) so dass man keine unnötigen Daten herunter lädt.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Leider war das Ganze ein großer Fehler!!!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Im Laufe der Installation bleibt der Fortschrittsbalken bei etwa 60-70%, mit der Meldung dass der vorherige Treiber deinstalliert wird (oder ähnlich...), stehen und die HDD-LED zeigt einen dauerhaften Festplattenzugriff an. Leider dauerte dieser Zugriff mehr als 10 Minuten, was mich dann doch irgendwie kritisch stimmte. Durch Zufall habe ich darauf gesehen wie das Dropbox-Icon im Tray angefangen hat eine Synchronisation an zu zeigen.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lange Rede kurzer Sinn, die Installationsroutine hat nicht den alten Treiber deinstalliert sondern sie war dabei ALLE Dateien auf dem System zu entfernen. Bootbar war das System darauf dann nicht mehr, der Windows Bootloader meinte etwas von 0x0000000f und ich müsse nun von einem externen Medium booten und die System-Reparieren Option ausführen.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Zum Glück hatte ich mir zuvor die Recovery-DVD's erstellt und konnte das System wiederherstellen. Die Daten waren leider alle weg und mussten aus Backups wieder hergestellt werden.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Wieder 5 Stunden meines Lebens die ich damit verschwendet habe mich mit unausgereifter proprietärer kommerzieller Software auseinander zu setzen, nur um während des "recover" dann feststellen zu müssen das meine Daten doch nicht mehr herzustellen sind. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Fazit:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Acer sollte da die Installationsdatei vielleicht doch nochmal prüfen, ich bin zumindest auf die Antwort des Supports gespannt...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Schmerzlich habe ich daraus wieder einmal gelernt, nie einem Software-Produkt zu trauen das aus dem Hause Microsoft kommt oder in irgendeiner Form darauf aufbaut oder davon abhängig ist. Es ist absolute Zeitverschwendung...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Edit (2010-06-22 12:11): Acer hat mein Ticket kommentarlos als "erfolgreich geschlossen" markiert. Ein neuer Treiber ist auf der Webseite offensichtlich noch online, dass wäre auch zuviel verlangt...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-5954591548413378882?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-GJ7QKMIHOQg6PTglnqJYOmMV3Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-GJ7QKMIHOQg6PTglnqJYOmMV3Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-GJ7QKMIHOQg6PTglnqJYOmMV3Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-GJ7QKMIHOQg6PTglnqJYOmMV3Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/rfLD-kUAeh4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/5954591548413378882/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/06/acer-aspire-1825ptz-datenverlust-bei.html#comment-form" title="2 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/5954591548413378882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/5954591548413378882?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/rfLD-kUAeh4/acer-aspire-1825ptz-datenverlust-bei.html" title="Acer Aspire 1825ptz - Datenverlust bei Treiberupdate" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/06/acer-aspire-1825ptz-datenverlust-bei.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fCp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-9126692336988371407</id><published>2010-05-27T14:20:00.004+02:00</published><updated>2011-10-12T21:12:57.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.834+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VLC fnordlicht &quot;Ambilight&quot;" /><title>fnordlicht Ambilight Update</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_HlHGSCTqeoc/S_8JBryAWkI/AAAAAAAAADQ/n2HohxTpry8/s1600/fnordlicht_diffuser.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="280" src="http://4.bp.blogspot.com/_HlHGSCTqeoc/S_8JBryAWkI/AAAAAAAAADQ/n2HohxTpry8/s320/fnordlicht_diffuser.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Nachdem ich das Projekt beim letzten Treffen des &lt;a href="http://cthn.de/Hauptseite"&gt;CTHN&lt;/a&gt; vorgestellt hatte und dort doch noch die eine oder andere Ungereimtheit aufgetaucht ist, habe ich &lt;a href="http://stud.hs-heilbronn.de/%7Eklauterb/vlc-fnordlicht.htm"&gt;hier&lt;/a&gt; einen neuen Patch online gestellt. Der Patch beinhaltet alle Änderungen die nötig sind um den fnordlicht-Support in den VLC-Code&amp;nbsp; ein zu spielen. Eines der aufgetretenen Ungereimtheiten war, dass die Farbe Rot (und darauf folgend Blau) viel zu intensiv ausgegeben wurde. Dies war jedoch über die Einstellungen im AtmoLight-Filter selbst leicht an zu passen. Die Probleme mit der Verbindung zu den fnordlichtern werden durch den neuen Patch entfernt. Es war z.B. zuvor nicht möglich mehrere Dateien hintereinander ab zu spielen ohne den VLC-Player neu starten zu müssen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Die im Video-Filter vorgenommenen Einstellungen können auch weiterhin nicht, ohne den Video-Stream neu zu starten, übernommen werden. Das scheint ein Grundlegendes "Problem" in den Videofiltern des VLC zu sein. Dank der Zusammenarbeit mit dem &lt;a href="http://www.vdr-wiki.de/wiki/index.php/AtmoWin"&gt;AtmoWin&lt;/a&gt; Entwickler André Weber ist nun auch die Unterstützung für Windows gegeben, wenn sie auch noch nicht komplett getestet werden konnte...&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Zu den genannten Änderungen besitzt der AtmoLight-Filter nun noch die folgenden Erweiterungen:&lt;/div&gt;
&lt;/div&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;&amp;nbsp;Unterstützung für das anzeigen einer Farbe wenn der Player pausiert wird oder wenn das aktuelle Video zu Ende ist.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;Reset der fnordlichter beim beenden von VLC.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;fnordlich-Protokoll: start_bootloader und boot_enter_application wurden für den Reset implementiert.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
Die nötigen Konfigurationseinstellungen für die fnordlichter werden im folgenden Video gezeigt.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tqiT1KFqvPg&amp;hl=en&amp;fs=1"&gt;


&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;


&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;


&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/tqiT1KFqvPg&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Mit diesen Einstellungen habe ich, was die Farbgenauigkeit und die Geschwindigkeit der Farbänderungen an geht, recht gute Ergebnisse  erzielt. &lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Zur Demonstration gibt es wieder  ein kleines Video. Meine 2 fnordlichter habe ich hinter meinen Fernseher geklebt  und zuvor jeweils mit einer Art Diffuser ausgestattet (siehe Bild), die das Licht der  LED's etwas besser vermischen. Den Ton habe ich aus Lizenz rechtlichen  Gründen entfernt. Zu sehen ist das Musikvideo Shoot to Thrill von AC/DC  (Iron Man 2).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lEWaw4cgWuw&amp;hl=en&amp;fs=1"&gt;


&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;


&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;


&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/lEWaw4cgWuw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
Viel Spaß beim zusehen!&lt;br /&gt;
&lt;br /&gt;
Edit (2010-06-04 14:20): Danke André für den &lt;a href="http://klautesblog.blogspot.com/2010/05/fnordlicht-ambilight-update.html#comments"&gt;Hinweis&lt;/a&gt;! Hier nochmal der &lt;a href="http://nightlies.videolan.org/build/win32/"&gt;Link&lt;/a&gt; zu den Nightly builds des VLC für diejenigen welche die Kommantare nicht lesen...&lt;br /&gt;
&lt;br /&gt;
Edit (2010-06-26 18:50): Der neue Release des VLC 1.1.0 kann &lt;a href="http://www.videolan.org/"&gt;hier&lt;/a&gt; herunter geladen werden. Dieser beinhaltet die beschriebenen Änderungen um fnordlichter als Ambilight verwenden zu können. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-9126692336988371407?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CC2ivsjRkyyhfCXrp17ehhb0wUs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CC2ivsjRkyyhfCXrp17ehhb0wUs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CC2ivsjRkyyhfCXrp17ehhb0wUs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CC2ivsjRkyyhfCXrp17ehhb0wUs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/nAFYDxPRsFY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/9126692336988371407/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/05/fnordlicht-ambilight-update.html#comment-form" title="3 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/9126692336988371407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/9126692336988371407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/nAFYDxPRsFY/fnordlicht-ambilight-update.html" title="fnordlicht Ambilight Update" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_HlHGSCTqeoc/S_8JBryAWkI/AAAAAAAAADQ/n2HohxTpry8/s72-c/fnordlicht_diffuser.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/05/fnordlicht-ambilight-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fCp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-3684375351763340710</id><published>2010-05-12T21:17:00.015+02:00</published><updated>2011-10-12T21:12:57.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.834+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VLC fnordlicht &quot;Ambilight&quot;" /><title>fnordlicht-"Ambilight" mit VLC</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_HlHGSCTqeoc/S-r3Ifg6zHI/AAAAAAAAADI/1YjOkrtsEyI/s1600/12052010258.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_HlHGSCTqeoc/S-r3Ifg6zHI/AAAAAAAAADI/1YjOkrtsEyI/s320/12052010258.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Seit ein paar Wochen beschäftige ich mich nun mit 2 &lt;a href="http://wiki.lochraster.org/wiki/Fnordlichtmini"&gt;Fnordlichtmini&lt;/a&gt;'s, die ich bei einem Workshop des &lt;a href="http://cthn.de/Hauptseite"&gt;Chaostreff Heilbronn&lt;/a&gt; zusammen gelötet hatte. Was ist ein Fnordlicht? Kurz - es leuchtet und kann mit einem entsprechenden Wandler per RS232 oder USB gesteuert werden. Es ist zudem möglich mehrere der Platinen über einen Bus zu verbinden. Diese Fnordlichter können dann einzeln&amp;nbsp; oder im Verbund über die selbe Schnittstelle gesteuert werden.&lt;br /&gt;
Eine der Ideen, die auf kamen, war es nun mehrere Fnordlichter als eine Art "Ambilight", wie bei Phillips Fernsehern, ein zu setzen. Bleibt also nur das Problem, entweder die Daten eines Software-Videoplayers oder ein Videosignal auf dem Weg zum TV ab zu greifen. Da mir im Moment die Zeit für die Elektronik fehlthabe ich mich für die Softwarelösung entschieden.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Nach ein wenig "googeln" bin ich dann über das atmo-Modul im &lt;a href="http://www.videolan.org/"&gt;VLC-Player &lt;/a&gt;gestolpert. Dieses Modul wurde für eine andere Hardware geschrieben, was aber das nicht weiter stört. Da die Entwickler von VLC recht hohe Ansprüche an den in ihrem Repository eingepflegten Code stellen, war es reine Fleißarbeit eine Klasse zur Kommunikation mit den Fnordlichtern zu erstellen. Zudem musste nicht das ganze fnordlicht-Protokol implementiert werden.&lt;br /&gt;
Es genügen:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;sync&amp;nbsp;&lt;/li&gt;
&lt;li&gt;stop&lt;/li&gt;
&lt;li&gt;fade_rgb&lt;/li&gt;
&lt;/ul&gt;
Detailierte Informationen zum Protokoll können &lt;a href="http://github.com/fd0/fnordlicht/raw/master/doc/PROTOCOL"&gt;hier&lt;/a&gt; nachgelesen werden. In der Konfiguration des atmo-Moduls können nach meinen Änderungen die folgenden Informationen festgelegt werden:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;die Anzahl der angeschlossenen Fnordlichter&lt;/li&gt;
&lt;li&gt;die Zuordnung der Fnordlicht-Adressen (Channel 0..3) zu den 1-4 Bereichen des aktuellen Frames.&lt;/li&gt;
&lt;/ul&gt;
Die 1-4 Bereiche des Frames repräsentieren "einfach" nur die Farbanteile im linken, rechten, oberen und unteren Bildbereich.&amp;nbsp; Es wird auch ein "Summenkanal", aller 1-4 Bereiche, zur Zuordnung angeboten. Der Kombination von Fnordlichtern und Bildbereichen ist also nur durch die Anzahl der vorhandenen Hardware (und der maximalen Anzahl von Geräten an einem Bus) eine Grenze gesetzt. &lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Hier ein Video das eine Fnordlicht-Kette von 2 Modulen in Aktion zeigt.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qX47Zwj_twY&amp;hl=de&amp;fs=1"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/qX47Zwj_twY&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
Ein erster Patch gegen die aktuelle VLC-Version aus dem &lt;a href="http://github.com/fd0/fnordlicht"&gt;Git-Repository&lt;/a&gt; kann &lt;a href="http://stud.hs-heilbronn.de/%7Eklauterb/vlc-fnordlicht.htm"&gt;hier&lt;/a&gt; herunter geladen werden.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
Edit (2010-05-15): &lt;a href="http://stud.hs-heilbronn.de/%7Eklauterb/fnordlicht2rs232.htm"&gt;Hier&lt;/a&gt; gibt es den Schaltplan für die Verbindung zwischen dem Pegelwandler und dem fnordlicht-Bus... &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-3684375351763340710?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fsMgl5p-EJ_29XN9JOiAAVorzfQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fsMgl5p-EJ_29XN9JOiAAVorzfQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fsMgl5p-EJ_29XN9JOiAAVorzfQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fsMgl5p-EJ_29XN9JOiAAVorzfQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/6laVtYBu6kE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/3684375351763340710/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/05/fnordlicht-ambilight-mit-vlc.html#comment-form" title="2 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3684375351763340710?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3684375351763340710?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/6laVtYBu6kE/fnordlicht-ambilight-mit-vlc.html" title="fnordlicht-&quot;Ambilight&quot; mit VLC" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_HlHGSCTqeoc/S-r3Ifg6zHI/AAAAAAAAADI/1YjOkrtsEyI/s72-c/12052010258.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/05/fnordlicht-ambilight-mit-vlc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fCp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-6435315684299071967</id><published>2010-04-07T22:45:00.005+02:00</published><updated>2011-10-12T21:12:57.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.834+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>LEDMatrix - Projektabschluss...</title><content type="html">&lt;div style="text-align: justify;"&gt;
So, zum Projektabschluss gibt es nun noch ein paar Videos zum Equalizer in Aktion. &lt;br /&gt;
Das Erste Video zeigt die, in den Rahmen des MP3-Player, eingebaute Matrix, welche über ein Notebook angesteuert wird. Auf dem Notebook läuft ein aktuelles Ubuntu Linux mit einer von Mike geschriebenen Testsoftware für den Equalizer.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4zsg2vHqy7w&amp;hl=de_DE&amp;fs=1&amp;"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/4zsg2vHqy7w&amp;hl=de_DE&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Das zweite Video zeigt den komplett fertigen Player. Es wird Musik abgespielt und die Matrix als Equalizer angesteuert.&lt;/div&gt;
&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VX7VrdVBiL0&amp;hl=de_DE&amp;fs=1&amp;"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/VX7VrdVBiL0&amp;hl=de_DE&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Wie immer kann an der einen oder anderen Stelle noch etwas optimiert und geändert werden. Im großen und ganzen jedoch bleibt es nun wie es ist.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Eine neue Sache ist jedoch aufgetaucht, die USB-Verbindung (per V-USB) macht ausschließlich auf dem verwendeten ASRock miniPC Probleme. So sind wesentlich geringere Übertragungsraten und doch sehr häufige Abbrüche der Verbindung zu verzeichnen, sofern das USB-Gerät überhaupt erkannt wird.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Da die Elektronik der Matrix ja aber dem &lt;a href="http://www.obdev.at/products/vusb/index-de.html"&gt;V-USB&lt;/a&gt; "standard" entspricht, der verwendete Linux-Kernel bzw. das Kernelmodul auf allen getesteten Systemen identisch&amp;nbsp; ist bzw. sind und weitere Geschwindigkeitsunterschiede der getesteten Rechner letztendlich keine Rolle spielen, scheint das Problem doch an einer anderen Stelle zu liegen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Sobald ich hierfür eine Lösung gefunden habe werde ich wie üblich davon berichten und ein neues Update der Software bereit stellen. &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/firmware_mikesledmatrix.htm"&gt;Hier&lt;/a&gt; gibt es jedoch wie immer die letzten Änderungen der Firmware...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-6435315684299071967?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aGuGRcmnJgoewd8j5_sn8TGF1tk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aGuGRcmnJgoewd8j5_sn8TGF1tk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aGuGRcmnJgoewd8j5_sn8TGF1tk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aGuGRcmnJgoewd8j5_sn8TGF1tk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/BHSD3dbsVpY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/6435315684299071967/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/04/ledmatrix-projektabschluss.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/6435315684299071967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/6435315684299071967?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/BHSD3dbsVpY/ledmatrix-projektabschluss.html" title="LEDMatrix - Projektabschluss..." /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/04/ledmatrix-projektabschluss.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fSp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-7161577920229070900</id><published>2010-03-28T23:23:00.007+02:00</published><updated>2011-10-12T21:12:57.835+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.835+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>LEDMatrix - Neue Videos</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_HlHGSCTqeoc/S6_Ampn2FxI/AAAAAAAAACw/_4r0X9NSjtk/s1600/m2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_HlHGSCTqeoc/S6_Ampn2FxI/AAAAAAAAACw/_4r0X9NSjtk/s320/m2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Ein paar Tage sind nun vergangen und nachdem die Matrix auf anhieb funktionierte, habe ich ein paar Optimierungen in der Firmware und bei den Tools mit der sie zu bedienen ist durchgeführt. Aber zunächst kurz zum ersten Test der beiden Komponenten, den LED's und der Steuerplatine. Die 64 Kabel der Reihen waren recht schnell an den 8 Steckern befestigt, was an der sehr guten Vorarbeit von Mike lag, der alle Kabel bereits sortiert hatte. So war nach dem alle Kabel eingesteckt und die Steuerplatine mit einem 9V-Block verbunden wurde, direkt die erste Startanimation zu sehen. Allerdings schien etwas nicht zu stimmen, im Ablauf dieser ersten Animation wurde ein Pixel nicht dort angezeigt wo er eigentlich sollte.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Auf so einen Fall bereits vorbereitet, starteten wir vom Notebook aus einen Testzyklus, mit dem jede einzelne LED auf Funktion getestet wird. Das dafür verwendete Perl-Script liegt dem Archiv bei schon länger bei. Es stellte sich schlussendlich heraus, dass uns in einer Reihe (aber damit für alle Ebenen) ein Kabeldreher untergekommen ist. Mehr Probleme gab es keine. Und das bei 441 LED's, 441 Querverbindungen unter den LED-Reihen der einzelnen Ebenen, den 8 Masseleitungen der und dann noch die ganzen Drähte für die Kathoden der LED's meiner Meinung nach keine schlechte Leistung! Insgesamt wurden etwa 100 Meter Kabel, 10 Meter Draht, einiges an Lötzinn verbraucht. Ganz zu schweigen von der von uns beiden hinein investierten Zeit, der Geduld und den Nerven.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Aber nur mit dem Zusammenbau war es nicht getan. Wie oben bereits erwähnt musste das eine oder andere optimiert werden. Die USB-Verbindung zum Beispiel war anfangs, bei höhreren Frameraten, recht instabil. Mit ein paar Änderungen in dem einen oder anderen Timer in der Firmware war dieses Problem aber auch schnell behoben.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Aus diesem Optimierungsprozess der Firmware ergab sich auch eine Erweiterung des USB-Clients. Dieser ist nun mit einer Art interaktiven "Shell" ausgestattet auf der nacheinander Befehle abgesetzt und Frames übertragen werden können, ohne dabei ständig eine neue Verbindung zum Gerät aufbauen zu müssen. Neben dieser großen Änderung gibt es noch 2 andere neue Scripte. Mit dem einen ist es Animationen oder einzelne Frames, aus Mike's shinyLED, in C-Funktionen umwandeln. Diese können dann mit in die Firmware hinein compilieret werden. Das andere kann die Animationen auf der Matrix von der Kommandozeile aus "abspielen".&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Wie ich in einem früheren Post schon beschrieben habe kann der Mikrocontroller auch Animationen intern speichern, die per USB aktiviert werden können. Das nächste Video zeigt einen Equalizer. Die einzelnen "Ringe" sind dabei einzelne im Microkontroller gespeicherte Teilframes, die einzeln oder gruppiert aktiviert und deaktivert werden können. Mit aktiviert und deaktiviert ist gemeint, dass diese Teilframes zu dem aktuell angezeigten Frame hinzugefügt oder davon abgezogen werden. Hierfür werden jeweils nur 2 Bytes per USB übertragen., wie für das gruppierte ansteuern. Gruppieren bedeutet, dass mehrere Ringe gleichzeitig aktiviert werden. Zu sehen ist dies in der Mitte des ersten Videos, an der Stelle wo sich die Matrix von innen nach außen füllt und von außen nach innen wieder leert. Am Anfang und am Ende werden die Ringe einzeln aufgerufen.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uHDpR7CoiCo&amp;hl=de_DE&amp;fs=1&amp;"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/uHDpR7CoiCo&amp;hl=de_DE&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Im nächsten Video wird per USB jede auf der Matrix sichtbare Veränderung übertragen. Hierzu wird das Script zum testen der Animationen verwendet. Trotz der mit 21x21 Pixel geringen Auflösung könnte ich mir, zu Demozwecken, doch das eine oder andere einfache Spiel darauf vorstellen...&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GhB4ZKv8YBI&amp;hl=de_DE&amp;fs=1&amp;"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/GhB4ZKv8YBI&amp;hl=de_DE&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Nach Ostern ist dann die Deadline für das Projekt und dann wird der Sprichwörtliche Hammer fallen gelassen. Es gibt zwar noch das eine oder andere das man machen könnte aber das steht erstmal auf der Wunschliste. Bis Ostern muss also noch Mikes MP3-Player die Matrix als Equalizer ansprechen können, was aber sogut wie fertig ist und dann muss das ganze wieder an seinen vorgesehenen Platz in der Halterung eingespannt werden. Eingespannt?! War da was? - Ja, das Blech wird in einen &lt;a href="http://www.mike-gareiss.de/Projekte/MyMediaPlayer/Bild5.html"&gt;Rahmen&lt;/a&gt; eingesetzt und erfährt damit eine Biegung. Hoffen wir mal das wir alles richtig ausgemessen und geplant haben und es keine größeren Schäden und vor allem Kurzschlüsse gibt... ;)&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Sobald das ganze das erste mal komplett da steht, werde ich wieder das eine oder andere Video und Foto online stellen.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Das neue Archiv mit allen Änderungen kann wieder &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/firmware_mikesledmatrix.htm"&gt;hier&lt;/a&gt; heruntergeladen werden. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-7161577920229070900?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cg9wayDGnel1zEXl4nI1fPK_mWk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cg9wayDGnel1zEXl4nI1fPK_mWk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cg9wayDGnel1zEXl4nI1fPK_mWk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cg9wayDGnel1zEXl4nI1fPK_mWk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/dKLNSBT8i4I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/7161577920229070900/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/03/ledmatrix-neue-videos.html#comment-form" title="2 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7161577920229070900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7161577920229070900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/dKLNSBT8i4I/ledmatrix-neue-videos.html" title="LEDMatrix - Neue Videos" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_HlHGSCTqeoc/S6_Ampn2FxI/AAAAAAAAACw/_4r0X9NSjtk/s72-c/m2.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/03/ledmatrix-neue-videos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fSp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-491851415754237296</id><published>2010-03-17T08:54:00.006+01:00</published><updated>2011-10-12T21:12:57.835+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.835+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>LEDMatrix - Fertig!</title><content type="html">Ohne Worte...&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TFTfoVSMOnQ&amp;hl=de_DE&amp;fs=1&amp;"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/TFTfoVSMOnQ&amp;hl=de_DE&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-491851415754237296?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TMU-rLsTQkHvaZXjmYDrZtCq5V4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TMU-rLsTQkHvaZXjmYDrZtCq5V4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TMU-rLsTQkHvaZXjmYDrZtCq5V4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TMU-rLsTQkHvaZXjmYDrZtCq5V4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/jW6L0txJA1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/491851415754237296/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/03/ledmatrix-fertig.html#comment-form" title="1 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/491851415754237296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/491851415754237296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/jW6L0txJA1U/ledmatrix-fertig.html" title="LEDMatrix - Fertig!" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/03/ledmatrix-fertig.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fSp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-4605343329783617467</id><published>2010-03-11T17:50:00.004+01:00</published><updated>2011-10-12T21:12:57.835+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.835+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>LEDMatrix - Update</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://3.bp.blogspot.com/_HlHGSCTqeoc/S5kJLFgrk2I/AAAAAAAAACo/s5oO_eoTaGc/s1600-h/11032010029.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5447395310343787362" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S5kJLFgrk2I/AAAAAAAAACo/s5oO_eoTaGc/s320/11032010029.jpg" style="cursor: pointer; float: right; height: 180px; margin: 0pt 0pt 10px 10px; width: 238px;" /&gt;&lt;/a&gt;Aus der letzten Arbeit an der Platine für die LEDMatrix sind zwei "neue" Dinge entstanden.&lt;br /&gt;
Zum einen die neue Firmware für den AVR-Controller und zum anderen eine angepasste Version des USBaspLoaders, um diesen auf dem ATMega32 lauffähig zu machen. Zudem besitzt die Platine nun einen Reset-Button und einen Jumper, siehe Bild.&lt;br /&gt;
&lt;br /&gt;
Der Reset-Button kann dazu verwendet werden, den Mikrocontroller neu zu starten (wozu auch sonst). Ist dabei jedoch der Jumper auf die im Bild gezeigte Stellung gesetzt, wird in den USBaspLoaders gesprungen, der sich im Bootloader befindet. Dadurch ist der AVR-Controller nun direkt per USB programmierbar.&lt;br /&gt;
Der USBaspLoader startet nur per Reset-Taster. Um wieder in die Firmware für die Matrix zu springen, muss der Jumper umgesteckt und erneut Reset gedrückt werden werden. Alternativ kann die Platine auch aus- und wieder eingesteckt werden.  Durch den Verlust der Versorgungsspannung wird kein Reset des Controllers registriert, so das der Bootloader dazu veranlasst wird, direkt in die Matrix-Firmware zu springen.&lt;br /&gt;
&lt;br /&gt;
Bei Gelegenheit werde ich den, im Vergleich zum LEDCube, geänderten Schaltplan des Mikrokontrollers fertig und online stellen.&lt;br /&gt;
&lt;br /&gt;
Das Update für den USBaspLoader kann &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/usbasploader.htm"&gt;hier&lt;/a&gt; heruntergeladen werden. Die neue Firmware der LEDMatrix kann wie üblich &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/firmware_mikesledmatrix.htm"&gt;hier&lt;/a&gt; geladen werden. Für Details siehe Changelog...&lt;br /&gt;
&lt;br /&gt;
In den nächsten Tagen werden LED's und die Platine vereint. Dabei wird sicher das eine oder andere Video und Bild entstehen. Es ist und bleibt also spannend... mal ganz abgesehen von der stetig wachsenden Verkabelung auf der Platine und unter den LED's ;)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-4605343329783617467?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kp1k2Yp4UI3fLa21biwXhATVYFc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kp1k2Yp4UI3fLa21biwXhATVYFc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kp1k2Yp4UI3fLa21biwXhATVYFc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kp1k2Yp4UI3fLa21biwXhATVYFc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/2Xj-OL_Hvo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/4605343329783617467/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/03/ledmatrix-update.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4605343329783617467?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4605343329783617467?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/2Xj-OL_Hvo0/ledmatrix-update.html" title="LEDMatrix - Update" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_HlHGSCTqeoc/S5kJLFgrk2I/AAAAAAAAACo/s5oO_eoTaGc/s72-c/11032010029.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/03/ledmatrix-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-2217532368847262917</id><published>2010-02-17T20:35:00.017+01:00</published><updated>2011-10-12T21:12:57.836+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.836+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>Erste Firmware für die LEDMatrix</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://2.bp.blogspot.com/_HlHGSCTqeoc/S4AK-hcR8UI/AAAAAAAAACg/SFoA0-SE8jg/s1600-h/100_1514.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440360419108712770" src="http://2.bp.blogspot.com/_HlHGSCTqeoc/S4AK-hcR8UI/AAAAAAAAACg/SFoA0-SE8jg/s320/100_1514.JPG" style="cursor: pointer; float: right; height: 196px; margin: 0pt 0pt 10px 10px; width: 260px;" /&gt;&lt;/a&gt;Die Arbeiten an der Steuerplatine für Mike's LEDMatrix sind, wie ich in meinem letzten Post zu diesem Projekt bereits berichtet hatte, abgeschlossen und so musste die Firmware des LEDCube in den letzten Tagen daran glauben.  Das Ziel war die Kommunikation mit dem Mikrocontroller per USB, zum Übertragen einzelner Frames, Ansteuern von Animationen/internen Funktionen und gemeinsames Dimmen aller LED's. Zudem sollte beim Start Mikes Start-Animation mit seinem Logo angezeigt werden.&lt;/div&gt;
&lt;br /&gt;
Soweit fertig ist aus dieser Liste alles bis auf das Dimmen der LED's. Dazu müsste jedoch noch das eine oder andere geändert werden, was aber erstmal noch Zeit hat bis die LED's fertig verlötet sind.&lt;br /&gt;
&lt;br /&gt;
Die erste alpha Version gibt es &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/firmware_mikesledmatrix.htm"&gt;hier&lt;/a&gt;. Im Moment ist das ganze allerdings noch etwas experimentell und muss noch ausgiebig getestet werden.&lt;br /&gt;
Enthalten ist in dem Archiv die angepasste Firmware, der USBClient zum Testen der Verbindung, Mike's QT Oberfläche shinyLED zum klicken von Animationen. Weiterhin noch die Sourcen des USBaspLoader welcher später als Bootloader eingesetzt werden soll und noch ein paar Scripte und Tools zum konvertieren und übertragen von Animationen.&lt;br /&gt;
&lt;br /&gt;
Das Bild oben zeigt übrigens die Matrix in  Aktion. Das ganze ist allerdings direkt an ein Netzteil angeschlossen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-2217532368847262917?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mgAbA24iJBv7vnwnN1xOvAV-PmU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mgAbA24iJBv7vnwnN1xOvAV-PmU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mgAbA24iJBv7vnwnN1xOvAV-PmU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mgAbA24iJBv7vnwnN1xOvAV-PmU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/rST87vg1zbM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/2217532368847262917/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/02/erste-firmware-fur-die-ledmatrix.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2217532368847262917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2217532368847262917?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/rST87vg1zbM/erste-firmware-fur-die-ledmatrix.html" title="Erste Firmware für die LEDMatrix" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_HlHGSCTqeoc/S4AK-hcR8UI/AAAAAAAAACg/SFoA0-SE8jg/s72-c/100_1514.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/02/erste-firmware-fur-die-ledmatrix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-1287786031561191720</id><published>2010-02-10T19:57:00.009+01:00</published><updated>2011-10-12T21:12:57.836+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.836+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sonstiges" /><category scheme="http://www.blogger.com/atom/ns#" term="HackStick" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><title>USBaspLoader und der GCC-AVR (4.3.3) in Verbindung mit Ubuntu 9.10 (amd64)</title><content type="html">&lt;div style="text-align: justify;"&gt;
Habe ich mich doch vor ein paar Monaten dazu entschlossen mein altes 8.10 Ubuntu (32Bit) durch die neue Ubuntu 9.10 (64 Bit) zu ersetzen. Bisher war ich auch weitgehend überzeugt von der Performance und der Verfügbarkeit der Softwarepakete. Sicher gibt es das eine oder andere Problem, wie zum Beispiel das kein Flash Plugin für den Firefox richtig läuft &lt;a href="http://www.khattam.info/2009/08/18/solved-flashplugin-controls-not-working-in-ubuntu-9-10-karmic-koala-alpha-4/"&gt;[solved] &lt;/a&gt;oder das manche Programme die libSDL verwenden sich nur mit &lt;span style="font-style: italic;"&gt;kill -9&lt;/span&gt; beenden lassen...&lt;br /&gt;
&lt;br /&gt;
Alles in allem aber zu verkraften, Programme die nicht funktionieren werden ggf. aus den Sourcen kompiliert und das Problem ist erledigt.&lt;br /&gt;
&lt;br /&gt;
Aber an manchen Stellen gibt es dann das eine oder andere Tool das einen Stunden seines Lebens kostet. So zum Beispiel der GCC (4.3.3) Compiler aus dem gcc-avr Paket.&lt;br /&gt;
Dieser beinhaltet laut diversen einschlägigen Foren eine bessere Optimierung des erzeugten Binary Codes. Optimiert wurde also auch die Option, welche beim übersetzen einer Firmware für Microkontroller normalerweise immer verwendet wird. Die Option &lt;span style="font-style: italic;"&gt;-Os.&lt;/span&gt; Diese wird an den gcc übergeben um die "kleinstmögliche" Firmware zu generieren. Leider geht  der löbliche Optimierungswahn der GCC Entwickler hier ganz klar am Ziel vorbei. Der optimierte Binary-Code ist wesentlich größer als der von älteren gcc-Versionen - tolle Sache...&lt;br /&gt;
&lt;br /&gt;
Mein ATMega168 für den HackStick besitzt 16KB Flash Speicher wovon 2KB für einen Bootloader reserviert werden können. In meinem Fall soll im Bootloader die Firmware des USBaspLoader-Projektes laufen um den HackStick direkt per USB flashen zu können.&lt;br /&gt;
Da ist es nicht gerade förderlich, dass der gcc nicht dazu überredet werden kann den, in diesem Fall um &lt;span style="font-weight: bold;"&gt;140 Byte(!!!)&lt;/span&gt; größeren Binary Code auf die ursprüngliche Größe von 2002 Byte zu verkleinern.&lt;br /&gt;
&lt;br /&gt;
Die &lt;a href="http://www.obdev.at/products/vusb/usbasploader.html"&gt;Firmware&lt;/a&gt; des Bootloaders ist durch das Überschreiten der 2048 verfügbaren Bytes  natürlich nicht übertragbar. Zum Glück besitzt man ja nicht nur einen Rechner und so konnte ich die Firmware auf einem anderen kompilieren und übertragen, ohne mir einen älteren GCC installieren zu müssen. Über kurz oder lang kommt man aber bei Ubuntu 9.10 (amd64) nicht drum herum.&lt;br /&gt;
&lt;br /&gt;
Schlussendlich ergab sich aus all dem ein &lt;a href="https://stud.hs-heilbronn.de/%7Eklauterb/usbasploader.htm"&gt;Patch&lt;/a&gt; gegen die mittlerweile doch in die Tage gekommenen Version der Firmware des USBaspLoader vom &lt;a href="http://www.obdev.at/downloads/vusb/USBaspLoader.2009-03-20.tar.gz"&gt;20.3.2009&lt;/a&gt;. Zum einen beinhaltet dieser Patch nun den neuesten Release von V-USB und kleinere Änderungen um den USBaspLoader auf einem ATMega168 lauffähig zu bekommen.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-1287786031561191720?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ixTRSIREAf-zEbDcTPadoFeK8bQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ixTRSIREAf-zEbDcTPadoFeK8bQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ixTRSIREAf-zEbDcTPadoFeK8bQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ixTRSIREAf-zEbDcTPadoFeK8bQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/CnxNJsZSC6U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/1287786031561191720/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/02/usbasploader-und-der-gcc-avr-433-in.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/1287786031561191720?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/1287786031561191720?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/CnxNJsZSC6U/usbasploader-und-der-gcc-avr-433-in.html" title="USBaspLoader und der GCC-AVR (4.3.3) in Verbindung mit Ubuntu 9.10 (amd64)" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/02/usbasploader-und-der-gcc-avr-433-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-2957455577133591130</id><published>2010-02-09T17:26:00.016+01:00</published><updated>2011-10-12T21:12:57.836+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.836+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>Mike's LED Matrix - 1000'de Lötstellen später...</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://4.bp.blogspot.com/_HlHGSCTqeoc/S3E86RaTC9I/AAAAAAAAACA/wxIGyiQPr-0/s1600-h/PICT0010.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5436193197016681426" src="http://4.bp.blogspot.com/_HlHGSCTqeoc/S3E86RaTC9I/AAAAAAAAACA/wxIGyiQPr-0/s320/PICT0010.JPG" style="cursor: pointer; float: right; height: 205px; margin: 0pt 0pt 10px 10px; width: 272px;" /&gt;&lt;/a&gt;Das Projekt schreitet voran und nach einer mehr als 13 stündigen Löt-Session sind nun zumindest die Masseleitungen der LED's (Mikes Aufgabe) und die Steuerplatine (meine Aufgabe) fertig. Rechts ein Bild der unverbundenen LED's.&lt;br /&gt;
Besonders aufgefallen ist bei den LED's, dass wohl nur 2 Stück von den 441 (500 wurden bestellt) defekt waren oder eher defekt gemacht wurden... ;)&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Sobald die Steuerplatine und die LED Matrix in ein paar Tagen verheiratet wurden, werden wir ein Video drehen das die ersten Animationen und Bilder der ersten Tests zeigt. Die originale Firmware des LED Cube's ist ohne Anpassungen auf unserer Platine bereits am laufen und muss nur noch auf unsere Anforderungen (USB Datenübertragung und Regelung der Leuchtintensität der LED's) angepasst werden.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
Hier im Voraus ein Bild der fertigen Steuerplatine.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_HlHGSCTqeoc/S3E7qybjxmI/AAAAAAAAAB4/h0XRujlUigE/s1600-h/DSC01551.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5436191831490807394" src="http://2.bp.blogspot.com/_HlHGSCTqeoc/S3E7qybjxmI/AAAAAAAAAB4/h0XRujlUigE/s320/DSC01551.JPG" style="cursor: pointer; height: 258px; margin: 0pt 0pt 10px 10px; width: 344px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;ul&gt;
&lt;li&gt;links oben der Spannungsregler mit Power-LED, an dem ein 9V Block angeschlossen ist&lt;/li&gt;
&lt;li&gt;links der AVR-Mikrokontroller (ATMega32)&lt;/li&gt;
&lt;li&gt;links unten der USB-Anschluss&lt;/li&gt;
&lt;li&gt;rechts vom Microkontroller sind die 8 N-MOSFET's zu sehen&lt;/li&gt;
&lt;li&gt;die 8 IC's (&lt;a href="http://www.datasheetcatalog.org/datasheet/philips/74HC_HCT573_CNV_2.pdf"&gt;D-type Latches&lt;/a&gt;) steuern die LED's und sind mit den Steckverbindern verbunden&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
Der 9V Block wird nur zum Testen der Schaltung verwendet. Später wird das Netzteil des Rechners, der die Daten per USB an den Microkontroller übergibt, diese Aufgabe übernehmen.&lt;br /&gt;
&lt;br /&gt;
Dieser Marathon wird Mike und mir sicher ewig ins Gehirn gebrannt bleiben und die Anzahl der zu verarbeitenden Bauteile wird sich in Zukunft auch sicher in kleineren Dimensionen bewegen.&lt;br /&gt;
&lt;br /&gt;
Mehr dazu in Kürze hier...&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-2957455577133591130?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N0Jfxky-DcJLXI3DLBXoIWvch5Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N0Jfxky-DcJLXI3DLBXoIWvch5Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N0Jfxky-DcJLXI3DLBXoIWvch5Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N0Jfxky-DcJLXI3DLBXoIWvch5Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/ubptevPBQNM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/2957455577133591130/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/02/mikes-led-matrix-1000de-lotstellen.html#comment-form" title="1 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2957455577133591130?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2957455577133591130?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/ubptevPBQNM/mikes-led-matrix-1000de-lotstellen.html" title="Mike's LED Matrix - 1000'de Lötstellen später..." /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_HlHGSCTqeoc/S3E86RaTC9I/AAAAAAAAACA/wxIGyiQPr-0/s72-c/PICT0010.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/02/mikes-led-matrix-1000de-lotstellen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fyp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-3468429161942789513</id><published>2010-02-04T19:04:00.028+01:00</published><updated>2011-10-12T21:12:57.837+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.837+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LED Matrix" /><title>Mike's LED Matrix</title><content type="html">&lt;div style="text-align: justify;"&gt;
Seit längerem haben &lt;a href="http://www.mike-gareiss.de/"&gt;Mike&lt;/a&gt; und ich das vorhaben, in die Frontblende dieses &lt;a href="http://www.mike-gareiss.de/Projekte/MyMediaPlayer/Bild5.html"&gt;MP3-Player's&lt;/a&gt; eine LED Matrix ein zu bauen. Diese Matrix soll dann per Microkontroller gesteuert werden, der wiederum seine anzuzeigenden Daten per USB von dem ThinClient aus dem MP3-Player erhält. Es geht bei diesem Projekt übrigens um 441 blaue, ultrahelle 3mm LED's die mit 441 Halterungen in die 5mm Löcher der Blende befestigt werden .&lt;br /&gt;
&lt;br /&gt;
Als Referenzprojekt verwenden wir die &lt;a href="http://www.mikrocontroller.net/articles/LED_cube"&gt;LED-Cube&lt;/a&gt; und den &lt;a href="http://www.das-labor.org/wiki/Borg3d_Bauanleitung"&gt;Borg3d&lt;/a&gt; Würfel.&lt;br /&gt;
&lt;br /&gt;
Da die Liste der Bauteile aber bei beiden Projekten teils unvollständig oder nicht zufriedenstellend war gibt es unsere Liste &lt;a href="https://secure.reichelt.de/?;ACTION=20;LA=5011;AWKID=211009;PROVID=2084"&gt;hier&lt;/a&gt; online bei Reichelt. Die LED's und die Halterungen wurden jeweils bei 2 anderen Shops online bestellt.&lt;br /&gt;
&lt;br /&gt;
Jetzt könnte man sich fragen wieso man als Referenz eine 3D Anordnung für eine 2D Matrix verwendet. Ganz einfach, bei einem 8x8x8 Würfel gibt es 512 LED's zum ansteuern. Unsere Matrix besitzt nur 21 x 21 = 441 LED's, was übrigens an der Optik in der Frontblende liegt. Es fällt also eine gesamte 8x8 Ebene aus der Würfeldarstellung weg. Zudem wird die 7te Ebene nicht vollständig ausgenutzt, was aber keinen Nachteil ergibt. Die  überschüssige 8te Ebene wird dann vor der Inbetriebnahme aus der Software entsprechend heraus gepatcht. Die Ebenen werden einfach Schachbrett-Artig nebeneinander angeordnet. Bei dem rechten und unteren Rand muss jedoch ein wenig getrickst werden.&lt;br /&gt;
&lt;br /&gt;
Als Firmware wird die des LED-Cube's verwendet, da diese gut strukturiert ist, und vor allem einfacher zu verstehen war da der Code extrem kurz, gut dokumentiert und anpassungsfähig ist.&lt;br /&gt;
&lt;br /&gt;
Nun zum ansteuern der Matrix. Sie wird per Multiplexing angesteuert, wie das ganze funktioniert ist sehr gut auf diesen beiden Videos dargestellt. &lt;a href="http://www.youtube.com/watch?v=lZyc6ulpkyM"&gt;[#1]&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=-1UPPHjR0vk"&gt;[#2]&lt;/a&gt;&lt;br /&gt;
Kurz: Damit wird ermöglicht jede einzelne LED auch einzeln leuchten zu lassen.&lt;br /&gt;
&lt;br /&gt;
Mike arbeitet bereits an einer auf QT basierenden Software mit der man die einzelnen Frames für die Matrix "klicken" kann.&lt;br /&gt;
Jetzt fehlt nur noch die Hardware. Bestellt ist alles, aber noch nicht ausgeliefert...&lt;br /&gt;
&lt;br /&gt;
Sobald das Projekt komplett aufgebaut und die Software fertig ist gibt es hier dazu mehr.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-3468429161942789513?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mK-QVENC_jRYrrm5AW0S-ii2EsA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mK-QVENC_jRYrrm5AW0S-ii2EsA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mK-QVENC_jRYrrm5AW0S-ii2EsA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mK-QVENC_jRYrrm5AW0S-ii2EsA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/Ax1TS9-vcxo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/3468429161942789513/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/02/mikes-led-matrix.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3468429161942789513?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/3468429161942789513?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/Ax1TS9-vcxo/mikes-led-matrix.html" title="Mike's LED Matrix" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/02/mikes-led-matrix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGSH47eyp7ImA9WhZTFUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-8406486949567733820</id><published>2010-01-27T21:44:00.009+01:00</published><updated>2011-03-19T17:27:09.003+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-19T17:27:09.003+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><title>Shakes &amp; Fidget Bot</title><content type="html">&lt;div style="text-align: justify;"&gt;
Schneller als gedacht wäre  der SFBot also wieder am laufen gewesen... ;)&lt;br /&gt;
&lt;br /&gt;
Dass alle Aktionen des Spielers seit dem Update per HTTP-GET an den Server gesendet wurden war sofort ersichtlich. Und die Session und das Passwort für den Login, sahen auf den ersten Blick einer MD5-Summe doch sehr ähnlich. Glücklicherweise sieht man  einer vermeintlichen MD5-Summe aber auch so gut an, dass die Entwickler des Spiels doch tatsächlich das vom Benutzer eingegebenen Passwort erst in UTF-8 umwandeln, bevor die MD5-Summe daraus gebildet wird...&lt;br /&gt;
&lt;br /&gt;
Der Dekompilier-Vorgang einer SWF-Datei dauert ja nur wenige Sekunden, mal davon abgesehen, dass der dabei herauskommende ActionScript-Code recht gut lesbar ist.&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar noch nie den Code einer Methode zur Bildung einer MD5-Summe gesehen, aber da bereits am Anfang der Aufruf stand, der den übergebenen String in UTF-8 wandelte, war das Problem sofort erkannt!&lt;br /&gt;
&lt;br /&gt;
Der Rest war reine Fleißarbeit...&lt;br /&gt;
&lt;br /&gt;
Das Video zeigt die grundlegenden Funktionen des Bot's.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cr_pODJf3Kk&amp;amp;hl=de_DE&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/cr_pODJf3Kk&amp;amp;hl=de_DE&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Für alle die jetzt noch fragen was der Bot denn nun alles kann:&lt;br /&gt;
Er erledigt Quest's, kämpft in Dungeons und der Arena, meldet sich zu Gilden-Kämpfen an und  wenn nichts weiter getan werden kann, schickt er den Held automatisch in die Stadtwache (arbeiten). Das ganze läuft auf jeder Kommandozeile. Benötigt wird nur ein Java Interpreter.&lt;br /&gt;
&lt;br /&gt;
Veröffentlichen werde ich den Quellcode des Bots allerdings aus vielerlei Gründen nicht!&lt;br /&gt;
Gegen horrende PayPal Spenden, um meine Arbeit zu unterstützen, habe ich jedoch nichts einzuwenden. ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-8406486949567733820?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mIg0issK1cnKquWzzMMrLjvhfyE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mIg0issK1cnKquWzzMMrLjvhfyE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mIg0issK1cnKquWzzMMrLjvhfyE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mIg0issK1cnKquWzzMMrLjvhfyE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/479gYzUirLU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/8406486949567733820/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/01/shakes-fidget-bot.html#comment-form" title="8 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8406486949567733820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/8406486949567733820?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/479gYzUirLU/shakes-fidget-bot.html" title="Shakes &amp; Fidget Bot" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>8</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/01/shakes-fidget-bot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEADRnY4fyp7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-7042056877712470002</id><published>2010-01-22T21:30:00.009+01:00</published><updated>2011-10-12T21:12:57.837+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T21:12:57.837+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HackStick" /><title>klaute's HackStick (v0b00000010)</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://3.bp.blogspot.com/_HlHGSCTqeoc/S1m0ezEgnAI/AAAAAAAAAAs/Np3-ZUpBsJc/s1600-h/DSC01531.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5429569266970041346" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S1m0ezEgnAI/AAAAAAAAAAs/Np3-ZUpBsJc/s320/DSC01531.JPG" style="cursor: pointer; float: right; height: 184px; margin: 0pt 0pt 10px 10px; width: 247px;" /&gt;&lt;/a&gt;Lange ist es her das ich über den Stick geschrieben habe, es hat sich auch nicht all zu viel getan.&lt;br /&gt;
&lt;br /&gt;
Die Firmware hat ein paar neue Features bekommen und wurde, gerade was die Performance und Speichernutzung angeht, optimiert.&lt;br /&gt;
&lt;br /&gt;
Eine wesentliche Änderung ist eine kleine Platine die auf den Stick gesteckt wird und die Pegelwandlung von den +5V des AVR's auf die bipolaren Spannungen einer RS232 Schnittstelle angleicht.&lt;br /&gt;
&lt;br /&gt;
Oder kurz und einfach gesagt, ich habe einen MAX232 angeschlossen ;-)&lt;br /&gt;
&lt;br /&gt;
Im Moment arbeite ich an dem Fuzzer und demnächst wird der ATMega8-16PU (8kB flash) durch einen ATMega168-20 ersetzt, wodurch sich der Flashspeicher verdoppelt und die Taktfrequenz von 16MHz auf 20MHz erhöht. Der neue Mikrocontroller sollte ein gutes Stück weniger mit der USB-Verbindung ausgelastet sein als vorher und zudem steht das doppelte an Flash zur Verfügung. Allerdings ist die Firmware mittlerweile ~8 kB groß, was mich auf die Idee zum wechseln gebracht hatte... ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-7042056877712470002?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KW3jjomfo7FHzTYWWYhNGMVEd9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KW3jjomfo7FHzTYWWYhNGMVEd9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KW3jjomfo7FHzTYWWYhNGMVEd9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KW3jjomfo7FHzTYWWYhNGMVEd9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/zTohC5JvefA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/7042056877712470002/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/01/klautes-hackstick-v0b00000010.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7042056877712470002?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7042056877712470002?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/zTohC5JvefA/klautes-hackstick-v0b00000010.html" title="klaute's HackStick (v0b00000010)" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_HlHGSCTqeoc/S1m0ezEgnAI/AAAAAAAAAAs/Np3-ZUpBsJc/s72-c/DSC01531.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/01/klautes-hackstick-v0b00000010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGSH47eyp7ImA9WhZTFUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-7413479388033106540</id><published>2010-01-22T13:14:00.004+01:00</published><updated>2011-03-19T17:27:09.003+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-19T17:27:09.003+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><title>Shakes &amp; Fidget Browsergame</title><content type="html">&lt;div style="text-align: justify;"&gt;Wer jetzt denkt ich stelle hier ein Browsergame vor, irrt sich. Ganz davor drücken möchte ich mich dennoch nicht. Shakes &amp;amp; Fidget ist eine Online Comic Bilderserie über zwei Figuren die sich humorvoll und planlos ihren Weg durch World of Warcraft kämpfen. Mehr dazu hier. - http://www.shakes-and-fidget.com&lt;br /&gt;&lt;br /&gt;Seit einer ganzen Weile gibt es zu dieser Web Comic-Reihe auch ein Browsergame. Da ich aber nicht die Zeit habe das Spiel zu spielen, geht es mir wie auch in vielen anderen Spielen, ich müsste Cheaten, oder mir zumindest einen Weg finden mit selbst den Zeitverlust zu mindern.&lt;br /&gt;&lt;br /&gt;Nach ein paar Stunden Entwicklungszeit könnte man ja fast einen Java-Client für die Konsole schreiben, der das Spiel automatisch und wesentlich effizienter spielt als man das als Mensch könnte. Wenn das nicht verboten wäre... ;-)&lt;br /&gt;&lt;br /&gt;Das Spiel basiert übrigens auf Flash und kommuniziert(e) plain text über eine unverschlüsselte Socketverbindung mit dem Server.&lt;br /&gt;&lt;br /&gt;Vor ein paar Tagen wurde jedoch ein Update des Flash-Clients online gestellt, in dem die  Verbindung zum Server auf HTTP umgestellt wurde. Verbessert wurde dadurch nichts merklich, nur das die Bilder noch langsamer geladen werden als vorher.&lt;br /&gt;&lt;br /&gt;Aber zum Glück habe ich diesen Bot nicht geschrieben sonst würde das Reverse Engineering schon wieder von vorne losgehen... :D&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-7413479388033106540?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hzo1BbUC1t65itdhcbERbLl5HTw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hzo1BbUC1t65itdhcbERbLl5HTw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hzo1BbUC1t65itdhcbERbLl5HTw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hzo1BbUC1t65itdhcbERbLl5HTw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/RULl9uce64I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/7413479388033106540/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2009/09/shakes-fidget-browsergame.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7413479388033106540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/7413479388033106540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/RULl9uce64I/shakes-fidget-browsergame.html" title="Shakes &amp; Fidget Browsergame" /><author><name>klaute</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2009/09/shakes-fidget-browsergame.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACR3o5eCp7ImA9WhdbGUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-2782293271689361233</id><published>2010-01-12T08:10:00.004+01:00</published><updated>2011-10-18T17:46:06.420+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T17:46:06.420+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Garbage Bot" /><title>GarbageBot v0.4</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://3.bp.blogspot.com/_HlHGSCTqeoc/S0zvxQyjTUI/AAAAAAAAAAk/y36Md9LBwd0/s1600-h/garbagebot0_4.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5425975280674229570" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S0zvxQyjTUI/AAAAAAAAAAk/y36Md9LBwd0/s320/garbagebot0_4.png" style="cursor: pointer; float: right; height: 214px; margin: 0pt 0pt 10px 10px; width: 246px;" /&gt;&lt;/a&gt;Wie auf dem Bild zu sehen ist besitzt der Roboter nun 2 weitere LED's, die über denen liegen, welche ich bereits in meinem letzten Blogeintrag über den Bot beschrieben hatte.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Diese beiden neuen LED's können gemeinsam vom AVR-Controller ein-/ausgeschaltet werden und dienen als zusätzliche Lichtquelle um die Reflexionen auf Hindernissen zu erhöhen.&lt;br /&gt;
&lt;br /&gt;
Sie werden jedoch nur bei Nacht oder dämmernden Lichtverhältnissen benötigt, da die Empfindlichkeit der ursprünglichen normalen, roten LED's leider nicht ausreichend hoch gewesen ist um auch bei Nacht sinnvolle Messintervalle realisieren zu können.&lt;br /&gt;
&lt;br /&gt;
Diese normalen LED's wurden jedoch mittlerweile durch ultra-helle rote ersetzt, welche im Vergleich zu den Vorgängern eine viel höhere Empfindlichkeit ausweisen.&lt;br /&gt;
&lt;br /&gt;
Die Firmware besitzt nun auch einen rudimentären Autopiloten und einen Programm-Modus in dem der GarbageBot über die IR Fernbedienung frei konfiguriert/gesteuert werden kann. Ist der Auto-Pilot aktiv, wird die Umgebung im Alleingang "erkundet". Da die Messungen der LED's jedoch noch nicht ganz fehlerfrei ist, sind Kollisionen quasi an der Tagesordnung...&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-2782293271689361233?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2OQZbL4O3WSwubo2zXeCIaqqkpM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2OQZbL4O3WSwubo2zXeCIaqqkpM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2OQZbL4O3WSwubo2zXeCIaqqkpM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2OQZbL4O3WSwubo2zXeCIaqqkpM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/dOeTwnlAC_c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/2782293271689361233/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2010/01/garbagebot-v04.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2782293271689361233?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/2782293271689361233?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/dOeTwnlAC_c/garbagebot-v04.html" title="GarbageBot v0.4" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_HlHGSCTqeoc/S0zvxQyjTUI/AAAAAAAAAAk/y36Md9LBwd0/s72-c/garbagebot0_4.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2010/01/garbagebot-v04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGQn09cCp7ImA9WhZTFkw.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-4909230981627174818</id><published>2009-11-27T01:05:00.000+01:00</published><updated>2011-03-20T10:07:03.368+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-20T10:07:03.368+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sonstiges" /><title>EZ430-Chronos/Tools die man bedingungslos besitzen muss...</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://wiki.msp430.com/images/8/89/EZ430-Chronos.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 256px; height: 256px;" src="http://wiki.msp430.com/images/8/89/EZ430-Chronos.png" alt="" border="0" /&gt;&lt;/a&gt;Wer wie ich schon immer eine program-&lt;br /&gt;mierbare Uhr besitzen wollte, am 12. Dezember 2009 ist es soweit.&lt;br /&gt;&lt;br /&gt;Texas&lt;br /&gt;Instruments präsentiert die &lt;a href="http://wiki.msp430.com/index.php/EZ430-Chronos?DCMP=Chronos&amp;amp;HQS=Other+OT+chronoswiki"&gt;EZ430-Chronos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hier noch ein paar Google &lt;a href="http://video.google.de/videosearch?rls=ig&amp;amp;hl=de&amp;amp;source=hp&amp;amp;q=ez430-chronos&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;ei=oJcOS-ymDpL6_Ab_xLmOBA&amp;amp;sa=X&amp;amp;oi=video_result_group&amp;amp;ct=title&amp;amp;resnum=5&amp;amp;ved=0CCMQqwQwBA#"&gt;Video&lt;/a&gt;-Ergebnisse.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-4909230981627174818?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TxuxEpa5ZCOpmwyXkA_zkgE0RhM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TxuxEpa5ZCOpmwyXkA_zkgE0RhM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TxuxEpa5ZCOpmwyXkA_zkgE0RhM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TxuxEpa5ZCOpmwyXkA_zkgE0RhM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/Nxo6J4fyABI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/4909230981627174818/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2009/11/ez430-chronostools-die-man.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4909230981627174818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4909230981627174818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/Nxo6J4fyABI/ez430-chronostools-die-man.html" title="EZ430-Chronos/Tools die man bedingungslos besitzen muss..." /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2009/11/ez430-chronostools-die-man.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcGSH46cSp7ImA9WhdbGUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-902129828635267265</id><published>2009-11-12T15:51:00.004+01:00</published><updated>2011-10-18T17:33:49.019+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T17:33:49.019+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Garbage Bot" /><title>GarbageBot v0.3</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://1.bp.blogspot.com/_HlHGSCTqeoc/SvwiY9NLA-I/AAAAAAAAAAU/4kYfu1KBDrA/s1600-h/hinten.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5403231465079768034" src="http://1.bp.blogspot.com/_HlHGSCTqeoc/SvwiY9NLA-I/AAAAAAAAAAU/4kYfu1KBDrA/s320/hinten.jpg" style="cursor: pointer; float: right; height: 232px; margin: 0pt 0pt 10px 10px; width: 271px;" /&gt;&lt;/a&gt;Kurzes Update zum GarbageBot... Die Firmware wurde überarbeitet und ist nun in der lage die neu angebrachten LED's als &lt;a href="http://www.reaktivlicht.de/atmel.html"&gt;Sensoren&lt;/a&gt; abzufragen. Unter dem Link wird gezeigt wie man mittels Mikrocontroller, LED's als lichtempfindlichen Sensor (wie z.B einen Fotowiderstand) verwenden kann. Diese Technik bzw. diese Eigenschaft von LED's wird oft in Reaktivlichtern beim Geocaching verwendet.&lt;br /&gt;
Das ganze ist in meinem Roboter zwar noch nicht ganz ausgereift, aber mit ein paar weiteren Stunden Arbeit wird der kleine Roboter sicher irgendwann vor einer Wand anhalten, oder sogar einer Lichtquelle folgen...&lt;br /&gt;
&lt;br /&gt;
Beim mechanischen Aufbau des GarbageBot hat sich auch etwas getan. Die Halterungen für die LED's sind dazu gekommen das Gestell ist insgesamt stabiler geworden. Die Hauptplatine ist nun abnehmbar, ohne den Lötkolben auspacken zu müssen. Was noch fehlt im Moment ist eine bessere "Bereifung" der Motorwellen und eine ISP-Schnittstelle für den µC.&lt;br /&gt;
&lt;br /&gt;
Hier noch ein 2tes Bild von vorne.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_HlHGSCTqeoc/SvwiYlvFkAI/AAAAAAAAAAM/0eCBsVIyZCI/s1600-h/vorne.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5403231458779566082" src="http://2.bp.blogspot.com/_HlHGSCTqeoc/SvwiYlvFkAI/AAAAAAAAAAM/0eCBsVIyZCI/s320/vorne.jpg" style="cursor: pointer; height: 301px; margin: 0pt 0pt 10px 10px; width: 346px;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Und ein Video im dunklen mit den neuen LED-Sensoren/Beleuchtung...&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/88_rYhNS0Oo&amp;amp;hl=de&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/88_rYhNS0Oo&amp;amp;hl=de&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;a class="jvjpbxmbmgbemyxpjbyk" href="http://www.youtube.com/v/88_rYhNS0Oo&amp;amp;hl=de&amp;amp;fs=1"&gt;&lt;/a&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-902129828635267265?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O764SeBSa6_4y3B65ZGML3RO9cU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O764SeBSa6_4y3B65ZGML3RO9cU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O764SeBSa6_4y3B65ZGML3RO9cU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O764SeBSa6_4y3B65ZGML3RO9cU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/u9W7bbx1ALM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/902129828635267265/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2009/11/garbagebot-v03.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/902129828635267265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/902129828635267265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/u9W7bbx1ALM/garbagebot-v03.html" title="GarbageBot v0.3" /><author><name>klaute</name><uri>http://www.blogger.com/profile/11595489979612985877</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://3.bp.blogspot.com/_HlHGSCTqeoc/S12xB8s4LMI/AAAAAAAAABY/QUBxkCUaKIY/S220/avatar.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_HlHGSCTqeoc/SvwiY9NLA-I/AAAAAAAAAAU/4kYfu1KBDrA/s72-c/hinten.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2009/11/garbagebot-v03.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04CRX45eSp7ImA9WhdbGUg.&quot;"><id>tag:blogger.com,1999:blog-9079135473553898595.post-4040274998506839426</id><published>2009-10-26T18:35:00.003+01:00</published><updated>2011-10-18T17:32:44.021+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T17:32:44.021+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Garbage Bot" /><title>Garbage Bot</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;a href="http://3.bp.blogspot.com/_6mizRInLaZo/SulZE55YsbI/AAAAAAAAABE/_T9gQVnT1-w/s1600-h/blog_1.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5397943569176113586" src="http://3.bp.blogspot.com/_6mizRInLaZo/SulZE55YsbI/AAAAAAAAABE/_T9gQVnT1-w/s320/blog_1.png" style="cursor: pointer; float: right; height: 277px; margin: 0pt 0pt 10px 10px; width: 261px;" /&gt;&lt;/a&gt;Dieses mal geht es um einen kleinen Roboter, der im Moment noch mehr einem ferngesteuertem Fahrzeug gleicht als einem autonomen Automaten. Es fehlen auch noch verschiedene Sensoren die eine autonome Fahrt durch das Wohnzimmer erst ermöglichen würden.&lt;br /&gt;
Der Grundstein dafür ist jedoch gesetzt. Der &lt;a href="http://www.atmel.com/dyn/resources/prod_documents/2486s.pdf"&gt;AVR-Controller&lt;/a&gt; erzeugt 2 Software-PWM-Signale um die Drehzahl der beiden Motoren unabhängig voneinander regeln zu können. RC5-Signale von handelsüblichen IR-Fernbedienungen werden empfangen, dekodiert und ausgewertet. Es ist hiermit möglich den Roboter mittels der Tasten 0-9 sowie die Ch+ und Ch- zu steuern.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Der Roboter besteht im Moment aus den folgenden Bauteilen:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;2 Stück Lochrasterplatine&lt;/li&gt;
&lt;li&gt;ca. 40 cm 1,5 mm² Kupferdraht für das Gestell&lt;/li&gt;
&lt;li&gt;Einfacher Kippschalter&lt;/li&gt;
&lt;li&gt;4-Adriges Flachbandkabel&lt;/li&gt;
&lt;li&gt;mehrere LED's&lt;/li&gt;
&lt;li&gt;Spannungsregler 7805&lt;/li&gt;
&lt;li&gt;3x 100 µF Kondensatoren&lt;/li&gt;
&lt;li&gt;1x 100 µF Elko&lt;/li&gt;
&lt;li&gt;1x 4,7 µF Elko&lt;/li&gt;
&lt;li&gt;3x 220 Ω Widerstände&lt;/li&gt;
&lt;li&gt;16 MHz Quarz&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.datasheetcatalog.org/datasheets/208/301092_DS.pdf"&gt;TSOP1738&lt;/a&gt; Photo Modul&lt;/li&gt;
&lt;li&gt;12V NiMH Akkupack&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Das folgende Video zeigt den Roboter in Aktion...&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;
&lt;a class="abp-objtab-08881470852252106 visible ontop" href="http://www.youtube.com/v/yadBLapkUZI&amp;amp;hl=de&amp;amp;fs=1&amp;amp;" style="left: 0px ! important; top: 15px ! important;" title="Klicken Sie hier, um dieses Objekt mit Adblock Plus zu blockieren"&gt;&lt;/a&gt;&lt;a class="abp-objtab-08881470852252106 visible ontop" href="http://www.youtube.com/v/yadBLapkUZI&amp;amp;hl=de&amp;amp;fs=1&amp;amp;" style="left: 0px ! important; top: 15px ! important;" title="Klicken Sie hier, um dieses Objekt mit Adblock Plus zu blockieren"&gt;&lt;/a&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yadBLapkUZI&amp;amp;hl=de&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/yadBLapkUZI&amp;amp;hl=de&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;a class="jvjpbxmbmgbemyxpjbyk" href="http://www.youtube.com/v/yadBLapkUZI&amp;amp;hl=de&amp;amp;fs=1&amp;amp;"&gt;&lt;/a&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9079135473553898595-4040274998506839426?l=klautesblog.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QHFgBzEhjboiq3tIqp08zW5sDTk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QHFgBzEhjboiq3tIqp08zW5sDTk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QHFgBzEhjboiq3tIqp08zW5sDTk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QHFgBzEhjboiq3tIqp08zW5sDTk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wrOF/~4/2Gc0elDVG7A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://klautesblog.blogspot.com/feeds/4040274998506839426/comments/default" title="Kommentare zum Post" /><link rel="replies" type="text/html" href="http://klautesblog.blogspot.com/2009/10/garbage-bot.html#comment-form" title="0 Kommentare" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4040274998506839426?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9079135473553898595/posts/default/4040274998506839426?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wrOF/~3/2Gc0elDVG7A/garbage-bot.html" title="Garbage Bot" /><author><name>klaute</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_6mizRInLaZo/SulZE55YsbI/AAAAAAAAABE/_T9gQVnT1-w/s72-c/blog_1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://klautesblog.blogspot.com/2009/10/garbage-bot.html</feedburner:origLink></entry></feed>

