<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Projects Log &#187; Project</title>
	<atom:link href="http://dev.pulsed.net/wp/?cat=4&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://dev.pulsed.net/wp</link>
	<description>projects, diy</description>
	<lastBuildDate>Mon, 25 Jul 2011 11:22:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Control your Windows computer using your Sony Playstation 3</title>
		<link>http://dev.pulsed.net/wp/?p=40</link>
		<comments>http://dev.pulsed.net/wp/?p=40#comments</comments>
		<pubDate>Mon, 25 May 2009 15:08:46 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[Project]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=40</guid>
		<description><![CDATA[
Ok, let me introduce my new project: It&#039;s called PS3ReCon (which stands for Playstation 3 Remote Control), it allows you to use your Sony Playstation 3 Bluetooth Remote to control your computer.
It&#039;s fully writen in c# and supports external plugins (.dll files)
Oh, and also, it&#039;s free !
http://ps3recon.pulsed.net/
]]></description>
			<content:encoded><![CDATA[<p><a href="http://ps3recon.pulsed.net/"><img src="http://ps3recon.pulsed.net/banner3.png" alt="PS3ReCon" /></a><br />
Ok, let me introduce my new project: It&#039;s called PS3ReCon (which stands for Playstation 3 Remote Control), it allows you to use your Sony Playstation 3 Bluetooth Remote to control your computer.<br />
It&#039;s fully writen in c# and supports external plugins (.dll files)<br />
Oh, and also, it&#039;s free !</p>
<p><a href="http://ps3recon.pulsed.net/">http://ps3recon.pulsed.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>640 Leds display [Project update]</title>
		<link>http://dev.pulsed.net/wp/?p=25</link>
		<comments>http://dev.pulsed.net/wp/?p=25#comments</comments>
		<pubDate>Sun, 08 Jul 2007 17:08:49 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[led]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=25</guid>
		<description><![CDATA[Finally i had enough free time to work on the PCB layer, here&#039;s the first version (unverified for now)

click to view the whole layout
Since I can&#039;t etch something >300mm, I have to split each board in two parts.
So we have the logic boards (74&#215;4094, and uln2803) on the top, and the &#034;matrices&#034; boards (with the [...]]]></description>
			<content:encoded><![CDATA[<p>Finally i had enough free time to work on the PCB layer, here&#039;s the first version (unverified for now)</p>
<p><center><br />
<a href="http://dev.pulsed.net/misc/typ_leddisplay_big.png"><img src="http://dev.pulsed.net/misc/typ_leddisplay_thumb.png" alt="PCB layout" /><br \/>click to view the whole layout</a></center></p>
<p>Since I can&#039;t etch something >300mm, I have to split each board in two parts.</p>
<p>So we have the logic boards (74&#215;4094, and uln2803) on the top, and the &#034;matrices&#034; boards (with the led matrices) on the bottom.</p>
<p>The power board (with the mosfets), and the controller board (with the ÂµC) are still in dev.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[New project] 640 leds display (work in progress)</title>
		<link>http://dev.pulsed.net/wp/?p=21</link>
		<comments>http://dev.pulsed.net/wp/?p=21#comments</comments>
		<pubDate>Sat, 30 Dec 2006 12:36:25 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[to come]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=21</guid>
		<description><![CDATA[Hi!
Once again i&#039;ve been very busy lately&#8230;
Here&#039;s a preview of my new project&#8230; meet the 640-led-display(-to-be)!



Ok for now only 2 matrices (=128 leds), but there are way to much wire on that breadboard&#8230; even with only two of them!

Project Pictures

Project parts (estimated):
a lot of resistors (about 85)
some capacitors
10x 74HCT4094 (shift register, with latch, and serial [...]]]></description>
			<content:encoded><![CDATA[<p>Hi!</p>
<p>Once again i&#039;ve been very busy lately&#8230;</p>
<p>Here&#039;s a preview of my new project&#8230; meet the 640-led-display(-to-be)!</p>
<p><object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/2bDUOPklGcw"></param>
<param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/2bDUOPklGcw" type="application/x-shockwave-flash" wmode="transparent" width="425"height="350"></embed></object></p>
<p>Ok for now only 2 matrices (=128 leds), but there are way to much wire on that breadboard&#8230; even with only two of them!<br />
<br \/><br \/><br />
<a href="http://dev.pulsed.net/rand/led/">Project Pictures</a><br />
<br \/><br \/><br \/><br />
<u>Project parts (estimated):</u></p>
<li>a lot of resistors (about 85)</li>
<li>some capacitors</li>
<li>10x 74HCT4094 (shift register, with latch, and serial output for cascading)</li>
<li>10x ULN2803</li>
<li>10x 8&#215;8 led matrices</li>
<li>8x p channel mosfet</li>
<li>1 or 2 atmega8 ÂµC</li>
<p><br \/><br \/><br \/><br />
<u>Todo list:</u></p>
<li>etching</li>
<li>send data over USB</li>
<li>&#8230;</li>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project One: a clock with 7 segment displays and an Atmel Atmega8 ÂµC</title>
		<link>http://dev.pulsed.net/wp/?p=20</link>
		<comments>http://dev.pulsed.net/wp/?p=20#comments</comments>
		<pubDate>Mon, 18 Sep 2006 10:39:12 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[led]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=20</guid>
		<description><![CDATA[This is my first project with Atmel&#039;s microcontrolers&#8230;
it&#039;s an idea i had to learn how to use digital I/Os, internal timer, interrupts,&#8230;
The hardware/software may not be very optimised, but the clock is quite accurate! :p

1. The timer
How does it work?
the timer is increased by one every P clock ticks (P is the prescaler, its value [...]]]></description>
			<content:encoded><![CDATA[<p>This is my first project with Atmel&#039;s microcontrolers&#8230;<br />
it&#039;s an idea i had to learn how to use digital I/Os, internal timer, interrupts,&#8230;</p>
<p>The hardware/software may not be very optimised, but the clock is quite accurate! :p<br />
<span id="more-20"></span><br />
<u>1. The timer</u></p>
<p>How does it work?</p>
<p>the timer is increased by one every <strong>P</strong> clock ticks (P is the prescaler, its value can be 1,8,64,256,1024), and it generate an interrupt each time it overflows (255 to 0)<br />
Now we have timer_interrupt_frequency = F_CPU/(P*256)<br />
thus with a 11,0592Mhz crystal, and P=64, the timer interrupt frequency is: 11059200/(64*256) = 675Hz (yeah exactly 675, not 675,00000000001 nor 674.9999999999999999999999, &#8230; 675!)</p>
<p>That means that 1 second = 675 interrupts<br />
we just need to increase the seconds every 675 interrupts, the minutes every 60 seconds, the hours every 60 minutes, &#8230;</p>
<p><u>2. the 7 segment displays</u></p>
<p>how to drive 7*4= 28 leds ?<br />
remember, we do not have 28 i/o pins! the solution? Charlieplexing!<br />
the 4 cathods (one per display) of each segments are linked together to 7i/o pins and the 4 common anodes are linked to 4 i/o pins<br />
and we make the whole thing go so fast that human eye sees the four displays on at the same time(remember pov &#034;article&#034;)</p>
<p><u>3. the electronical part</u><br />
<a href="http://dev.pulsed.net/misc/clock.png">schematic</a></p>
<p><u>4. the source code</u></p>
<div style="border: 1px dashed #708090; background-color: #add8e6">
	<code>#define F_CPU 11059200UL  // 11,0592mhz</code><br />
	<code></code><br />
	<code>#include &lt;avr/io.h&gt;</code><br />
	<code>#include &lt;avr/interrupt.h&gt;</code><br />
	<code>#include &lt;stdbool.h&gt;</code><br />
	<code></code><br />
	<code>#define STOP_TIMER    TCCR0 &amp;= 0b11111000</code><br />
	<code>#define START_TIMER   TCCR0 |= 0b00000011 // prescaler = c/64</code><br />
	<code></code><br />
	<code></code><br />
	<code>typedef volatile unsigned char BYTE;</code><br />
	<code>typedef volatile unsigned int WORD;</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>BYTE minutes=0;</code><br />
	<code>BYTE seconds=0;</code><br />
	<code>BYTE hours=0;</code><br />
	<code>WORD Interrupts=0;</code><br />
	<code></code><br />
	<code>bool s=false;</code><br />
	<code>bool h=false;</code><br />
	<code>bool m=false;</code><br />
	<code></code><br />
	<code></code><br />
	<code>unsigned char segs[]=</code><br />
	<code>{</code><br />
	<code>0b00111111,</code><br />
	<code>0b00000110,</code><br />
	<code>0b01011011,</code><br />
	<code>0b01001111,</code><br />
	<code>0b01100110,</code><br />
	<code>0b01101101,</code><br />
	<code>0b01111101,</code><br />
	<code>0b00000111,</code><br />
	<code>0b01111111,</code><br />
	<code>0b01101111</code><br />
	<code>};</code><br />
	<code></code><br />
	<code></code><br />
	<code>ISR(TIMER0_OVF_vect)</code><br />
	<code>{</code><br />
	<code></code><br />
	<code></code><br />
	<code>Interrupts++;</code><br />
	<code></code><br />
	<code>// at 11,0592mhz with a 'Clock/64' prescaler, 675 interrupts = 1 sec!</code><br />
	<code>if (Interrupts == 675)</code><br />
	<code>{</code><br />
	<code>if(++seconds&gt;=60)</code><br />
	<code>{</code><br />
	<code>seconds=0;</code><br />
	<code>if(++minutes&gt;=60)</code><br />
	<code>{</code><br />
	<code>minutes=0;</code><br />
	<code>if(++hours&gt;=24)</code><br />
	<code>{</code><br />
	<code>hours=0;</code><br />
	<code>}</code><br />
	<code>}</code><br />
	<code>}</code><br />
	<code>Interrupts = 0;</code><br />
	<code>}</code><br />
	<code></code><br />
	<code>}</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>void ConfigureDevice(void)</code><br />
	<code>{</code><br />
	<code>cli(); // mask interruptions</code><br />
	<code></code><br />
	<code></code><br />
	<code>_SFR_BYTE(DDRD)=0b11111111;</code><br />
	<code>_SFR_BYTE(DDRC)=0b00001111;</code><br />
	<code>_SFR_BYTE(DDRB)=0b00000000;</code><br />
	<code></code><br />
	<code>TCNT0 = 0x00;</code><br />
	<code>START_TIMER;</code><br />
	<code>TIMSK  |= _BV(TOIE0);</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>sei(); // unmask interruptions</code><br />
	<code>}</code><br />
	<code></code><br />
	<code>int main(void)</code><br />
	<code>{</code><br />
	<code>// format:   8 8 : 8 8</code><br />
	<code>// segment:  8 4   2 1</code><br />
	<code>// segment is used to select each 7segments display one after the other (with pov there's no need to have 4 seven bits ports)</code><br />
	<code>// 8=0b00001000;4=0b00000100;2=0b00000010;1=0b00000001</code><br />
	<code>// btw, it's possible to use only one pin from c port with the 8th from b port (2 bits = 4 combinations) but then we'll need some extra elecronic demux part</code><br />
	<code></code><br />
	<code>unsigned char segment=1;</code><br />
	<code>unsigned char portval=0;</code><br />
	<code>unsigned char temp=0;</code><br />
	<code>ConfigureDevice();</code><br />
	<code></code><br />
	<code>hours=0;</code><br />
	<code>minutes=0;</code><br />
	<code>seconds=0;</code><br />
	<code></code><br />
	<code>while(1)</code><br />
	<code>{</code><br />
	<code></code><br />
	<code>m=(PINB&amp;0b00000100)==0?0:m;</code><br />
	<code>h=(PINB&amp;0b00000010)==0?0:h;</code><br />
	<code></code><br />
	<code>if((PINB&amp;0b00000001)!=0 &amp;&amp; (PINB&amp;0b00000010)!=0 &amp;&amp;  !h)</code><br />
	<code>{</code><br />
	<code>h=true;</code><br />
	<code>seconds=0;</code><br />
	<code>Interrupts=0;</code><br />
	<code>if(++hours&gt;=24)</code><br />
	<code>{</code><br />
	<code>hours=0;</code><br />
	<code>}</code><br />
	<code>}</code><br />
	<code></code><br />
	<code></code><br />
	<code>temp=PINB&amp;0b00000100;</code><br />
	<code>if((PINB&amp;0b00000001)!=0 &amp;&amp; (PINB&amp;0b00000100)!=0 &amp;&amp;  !m)</code><br />
	<code>{</code><br />
	<code>m=true;</code><br />
	<code>seconds=0;</code><br />
	<code>Interrupts=0;</code><br />
	<code>if(++minutes&gt;=60)</code><br />
	<code>{</code><br />
	<code>minutes=0;</code><br />
	<code>}</code><br />
	<code>}</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>switch(segment)</code><br />
	<code>{</code><br />
	<code>//segs is inverted to use with common anode 7 segments displays (up to 300mA sinking current)</code><br />
	<code>case 1:/*xx:xV*/ portval=~segs[minutes%10];break;</code><br />
	<code>case 2:/*xx:Vx*/ portval=~segs[minutes/10];break;</code><br />
	<code>case 4:/*xV:xx*/ portval=~segs[hours%10];break;</code><br />
	<code>case 8:/*Vx:xx*/ portval=~segs[hours/10];break;</code><br />
	<code>}</code><br />
	<code>_SFR_BYTE(PORTC)=0;</code><br />
	<code>_SFR_BYTE(PORTD)=portval;</code><br />
	<code>_SFR_BYTE(PORTC)=segment;</code><br />
	<code>segment=(segment&lt;&lt;1)&gt;8?1:segment&lt;&lt;1;</code><br />
	<code>}</code><br />
	<code></code><br />
	<code>}</code>
</div>
<p>	<strong>Download this code:</strong> <a href="http://dev.pulsed.net/wp/code/avrclock.c">avrclock.c</a>
</ol>
<p><u>5. the final result</u><br />
<img src="http://dev.pulsed.net/misc/avrclock_done.jpg" alt="result" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=20</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Persistence Of Vision + Leds = Fun</title>
		<link>http://dev.pulsed.net/wp/?p=16</link>
		<comments>http://dev.pulsed.net/wp/?p=16#comments</comments>
		<pubDate>Fri, 21 Jul 2006 21:01:06 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[asm]]></category>
		<category><![CDATA[pic]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=16</guid>
		<description><![CDATA[Today I saw an article about POV by Erik Zoltan (link IBM via hacked gadgets)
     He&#039;s using a Parallax HomeWork Board (I don&#039;t know the price but i think it&#039;s quite expensive) thus I&#039;ve decided to do the same thing with low cost equipement (16F84)

1) the electronical part
why do I use [...]]]></description>
			<content:encoded><![CDATA[<p>Today I saw an article about <acronym title="Persistence Of Vision">POV</acronym> by Erik Zoltan (link <a href="http://www-128.ibm.com/developerworks/library/wi-robot11/" target="_blank">IBM</a> <em>via</em> <a href="http://hackedgadgets.com/2006/07/20/simple-ibm-pov/" target="_blank">hacked gadgets</a>)</p>
<p>     He&#039;s using a Parallax HomeWork Board (I don&#039;t know the price but i think it&#039;s quite expensive) thus I&#039;ve decided to do the same thing with low cost equipement (16F84)<br />
<span id="more-16"></span><br />
<strong>1) the electronical part</strong></p>
<p><strong><u>why do I use a 16F84:</u></strong></p>
<li>i have some</li>
<li>it&#039;s cheap</li>
<li>you do not need a lot to make it work (1 crystal, 2 capacitors)</li>
<li>port pins have &#034;Direct LED drive&#034; capability</li>
<li>not that hard to program</li>
<p><br \/><br />
<strong><u>The board:</u></strong></p>
<p><img src="http://dev.pulsed.net/misc/board.jpg" alt="board" /><br />
<em>as you can see, you do not need to have a lot of stuff on the board</em><br />
<br \/></p>
<p><strong>The pin diagram</strong><br />
<img src="http://dev.pulsed.net/misc/16f84.png" alt="16f84 pin diagram" /></p>
<p><strong>The schematic diagram</strong><br />
<img src="http://dev.pulsed.net/misc/sch.png" alt="The schematic diagram" /><br />
R=120 ohm<br />
C=15pF<br />
X=4Mhz</p>
<p><br \/></p>
<p><strong>2) The assembly code part</strong></p>
<div style="border: 1px dashed #708090; background-color: #add8e6">
	<code>STATUS      equ       03h       ; Status Register</code><br />
	<code>TRISA       equ       85h       ; TrisA  Register</code><br />
	<code>PORTA       equ       05h       ; A Port</code><br />
	<code>TRISB       equ       86h       ; TrisB  Register</code><br />
	<code>PORTB       equ       06h       ; B Port</code><br />
	<code>COUNT1      equ       0Ch       ; delay loop counter</code><br />
	<code></code><br />
	<code>P           equ       0Eh       ; pointer</code><br />
	<code>C           equ       0Fh       ; display counter</code><br />
	<code></code><br />
	<code>FSR         equ       04h       ; File Select Register</code><br />
	<code>INDF        equ       00h       ; Uses contents of FSR to address Data Memory</code><br />
	<code></code><br />
	<code></code><br />
	<code>bsf         STATUS,5            ; ==&gt; Bank 1</code><br />
	<code>movlw       00h                 ; B port</code><br />
	<code>movwf       TRISB               ; output</code><br />
	<code>bcf         STATUS,5            ; ==&gt; Bank 0</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>movlw       b'11000000'</code><br />
	<code>movwf       10h</code><br />
	<code>movlw       b'01111111'</code><br />
	<code>movwf       11h</code><br />
	<code>movlw       b'00010000'</code><br />
	<code>movwf       12h</code><br />
	<code>movlw       b'00001000'</code><br />
	<code>movwf       13h</code><br />
	<code>movlw       b'00010100'</code><br />
	<code>movwf       14h</code><br />
	<code>movlw       b'00100010'</code><br />
	<code>movwf       15h</code><br />
	<code>movlw       b'11000001'</code><br />
	<code>movwf       16h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       17h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       18h</code><br />
	<code>movlw       b'00111100'</code><br />
	<code>movwf       19h</code><br />
	<code>movlw       b'01001010'</code><br />
	<code>movwf       1ah</code><br />
	<code>movlw       b'01001010'</code><br />
	<code>movwf       1bh</code><br />
	<code>movlw       b'00101100'</code><br />
	<code>movwf       1ch</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       1dh</code><br />
	<code>movlw       b'00000010'</code><br />
	<code>movwf       1eh</code><br />
	<code>movlw       b'00011100'</code><br />
	<code>movwf       1fh</code><br />
	<code>movlw       b'01100000'</code><br />
	<code>movwf       20h</code><br />
	<code>movlw       b'00110000'</code><br />
	<code>movwf       21h</code><br />
	<code>movlw       b'00001110'</code><br />
	<code>movwf       22h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       23h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       24h</code><br />
	<code>movlw       b'01111101'</code><br />
	<code>movwf       25h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       26h</code><br />
	<code>movlw       b'01111110'</code><br />
	<code>movwf       27h</code><br />
	<code>movlw       b'00000100'</code><br />
	<code>movwf       28h</code><br />
	<code>movlw       b'00000100'</code><br />
	<code>movwf       29h</code><br />
	<code>movlw       b'01111000'</code><br />
	<code>movwf       2ah</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       2bh</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       2ch</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       2dh</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       2eh</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       2fh</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       30h</code><br />
	<code>movlw       b'01000000'</code><br />
	<code>movwf       31h</code><br />
	<code>movlw       b'01000100'</code><br />
	<code>movwf       32h</code><br />
	<code>movlw       b'01111100'</code><br />
	<code>movwf       33h</code><br />
	<code>movlw       b'01000000'</code><br />
	<code>movwf       34h</code><br />
	<code>movlw       b'01000000'</code><br />
	<code>movwf       35h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       36h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       37h</code><br />
	<code>movlw       b'01000100'</code><br />
	<code>movwf       38h</code><br />
	<code>movlw       b'01010100'</code><br />
	<code>movwf       39h</code><br />
	<code>movlw       b'01010100'</code><br />
	<code>movwf       3ah</code><br />
	<code>movlw       b'01101100'</code><br />
	<code>movwf       3bh</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       3ch</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       3dh</code><br />
	<code>movlw       b'01000100'</code><br />
	<code>movwf       3eh</code><br />
	<code>movlw       b'01010100'</code><br />
	<code>movwf       3fh</code><br />
	<code>movlw       b'01010100'</code><br />
	<code>movwf       40h</code><br />
	<code>movlw       b'01101100'</code><br />
	<code>movwf       41h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       42h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       43h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       44h</code><br />
	<code>movlw       b'01000100'</code><br />
	<code>movwf       45h</code><br />
	<code>movlw       b'00100100'</code><br />
	<code>movwf       46h</code><br />
	<code>movlw       b'00011100'</code><br />
	<code>movwf       47h</code><br />
	<code>movlw       b'00000100'</code><br />
	<code>movwf       48h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       49h</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       4ah</code><br />
	<code>movlw       b'00000000'</code><br />
	<code>movwf       4bh</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>Restart     movlw     10h       ; Load 0x10 in P (first led combination)</code><br />
	<code>movwf     P</code><br />
	<code>movlw     3Ch       ; load 0x3C in C (0x3C=60 led combination)</code><br />
	<code>movwf     C</code><br />
	<code></code><br />
	<code>Start       movf      P,0       ; W = P</code><br />
	<code>movwf     FSR       ; FSR = W</code><br />
	<code>movf      INDF,0    ; W = INDF (INDF is the value pointed by FSR)</code><br />
	<code>movwf     PORTB     ; Display W on the led row</code><br />
	<code>incf      P,1       ; P++</code><br />
	<code>call      Delay     ; wait a little bit</code><br />
	<code>decfsz    C,1       ; c--;if(C!=0){goto start} else {goto restart}</code><br />
	<code>goto      Start</code><br />
	<code>goto      Restart</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>Delay</code><br />
	<code>Loop1       decfsz    COUNT1,1  ; goto loop1 while COUNT1!=0</code><br />
	<code>goto      Loop1</code><br />
	<code>return</code><br />
	<code></code><br />
	<code></code><br />
	<code></code><br />
	<code>end</code>
</div>
<p>	<strong>Download this code:</strong> <a href="http://dev.pulsed.net/wp/code/pov.asm">pov.asm</a>
</ol>
<p>because i&#039;m very lazy, i do not have typed all that byte sequence myself&#8230;<br />
i wrote a tiny perl script who analyses a small picture (8px * 60px) and generate the byte sequence for me</p>
<p><em>picture:</em><br />
<img src="http://dev.pulsed.net/misc/bsgpic.png" alt="Kevin 1337" /></p>
<p><em>source code:</em></p>
<p class="warning">[The requested file <kbd>http://dev.pulsed.net/wp/code/pov%20bsg.pl</kbd> could not be found]</p>
<p><br \/></p>
<p><strong>3)And now the result:</strong><br />
Poor quality (extracted from a video i took with my cellphone&#8230;) [i do not have a digital camera] </p>
<p><img src="http://dev.pulsed.net/misc/pov1%20(1).jpg" alt="POV pic 1" /></p>
<p>this one is flipped (nice frame at return)<br />
<img src="http://dev.pulsed.net/misc/pov1%20(2).jpg" alt="POV pic 2" /></p>
<p><img src="http://dev.pulsed.net/misc/pov1%20(3).jpg" alt="POV pic 3" /></p>
<p><img src="http://dev.pulsed.net/misc/pov1%20(4).jpg" alt="POV pic 4" /></p>
<p>1337 ^^<br />
<img src="http://dev.pulsed.net/misc/pov1%20(5).jpg" alt="POV pic 5" /></p>
<p><img src="http://dev.pulsed.net/misc/pov1%20(6).jpg" alt="POV pic 6" /></p>
<p><br \/><br />
<em>the whole <a href="http://www.urbandictionary.com/define.php?term=1337" target="_blank">1337</a> thing is just a joke</em></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=16</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install smokeping under windows</title>
		<link>http://dev.pulsed.net/wp/?p=3</link>
		<comments>http://dev.pulsed.net/wp/?p=3#comments</comments>
		<pubDate>Sun, 18 Jun 2006 11:04:51 +0000</pubDate>
		<dc:creator>Kevin DEHLINGER</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://dev.pulsed.net/wp/?p=3</guid>
		<description><![CDATA[


this guide is deprecated and no longer supported, except for part 7,8, and 10
http://dev.pulsed.net/wp/?p=31
&#160;is the new way to go for Smokeping under Windows
1) smokewhat?
Smokeping(link) is a nice latency measurement tool, unfortunately it WAS only available for linux/unix&#8230;but after the jump, you&#039;ll find how to make it work under Microsoft Windows!
SmokePing is a deluxe latency measurement [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src='http://digg.com/api/diggthis.php?u=http%3A%2F%2Fdigg.com%2Fsoftware%2FHow_to_install_smokeping_under_windows' height='82' width='55' frameborder='0' scrolling='no' style='float: right; margin-left: 10px; margin-bottom: 5px; padding: 4px 0 2px 4px; background: #fff;'></iframe></p>
<div style='text-align: center;'>
<big style='color: red;'><br />
<big><span  style='font-family: Arial; font-weight: bold;'>this guide is deprecated and no longer supported, except for part 7,8, and 10</span><br />
<br style='font-family: Arial; font-weight: bold;'><a style='font-family: Arial; font-weight: bold; color: red;' href='http://dev.pulsed.net/wp/?p=31'>http://dev.pulsed.net/wp/?p=31<br />
</a><span style='font-family: Arial; font-weight: bold;'>&nbsp;is the new way to go for Smokeping under Windows</span></big></big></div>
<p align="left"><strong><u>1) smokewhat?</u></strong></p>
<p>Smokeping<a target="_blank" href="http://oss.oetiker.ch/smokeping/">(link)</a> is a nice latency measurement tool, unfortunately it WAS only available for linux/unix&#8230;but after the jump, you&#039;ll find how to make it work under Microsoft Windows!</p>
<blockquote><p>SmokePing is a deluxe latency measurement tool. It can measure, store and display latency, latency distribution and packet loss. SmokePing uses RRDtool to maintain a longterm data-store and to draw pretty graphs, giving up to the minute information on the state of each network connection.</p></blockquote>
<p><span id="more-3"></span></p>
<p align="left"><strong><u>2) What you need</u></strong></p>
<p>- <a target="_blank" href="http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl">Perl</a> (choose Perl 5.8.xxx MSI package for Windows)<br />
<em>Yeah Perl is cool and you can have a lot of fun using it</em></p>
<p>- <a target="_blank" href="http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.10-win32-perl58.zip"> RRDs module for Perl</a><br />
<em>This version works for sure, but feel free to download the latest </em></p>
<p>- <a target="_blank" href="http://dev.pulsed.net/misc/fping.zip">fping for windows</a> (thanks to <a target="_blank" href="http://www.bl.org/%7Emparson/">Michael Parson</a>)</p>
<p>- <a target="_blank" href="http://oss.oetiker.ch/smokeping/pub/smokeping-2.0.8.tar.gz"> Smokeping</a><br />
<em>This version works for sure, but feel free to download the latest </em></p>
<p>- a text editor<br />
There&#039;s a lot of text editors out there&#8230; <span lang="EN-US"> personally</span>, I like <a target="_blank" href="http://www.pspad.com/fr/download.php">pspad</a></p>
<p>- a web server<br />
Feel free to download, install, configure apache with cgi yourself, or use <a target="_blank" href="http://www.wampserver.com/download.php">WAMP</a> (the one I use), or whatever bundled apache/cgi/php/mysql version you want</p>
<p align="left"><strong><u>3) What you do not need</u></strong></p>
<p>- Money<br />
<em>all listed softwares are (at least) freeware</em></p>
<p>- A (linux/unix)-running computer<br />
<em>yeah dude, windows rulez da w0rld</em></p>
<p align="left"><strong><u>4) &#034;Installation&#034; </u></strong></p>
<p>- Install Activestate Perl<br />
- Install RRDtool for windows (unzip, and launch install.cmd)<br />
- Unzip smokeping to C:\smokeping-2.0.8<br />
- Unzip fping for windows (make sure cygwin1.dll is in the same folder) to C:\smokeping-2.0.8\fping<br />
- Install WAMP to C:\wamp</p>
<p align="left"><strong><u>5) Modifications</u></strong></p>
<p><u>a) rename</u><br />
- <font color="#3399ff">C:\smokeping-2.0.8\bin\smokeping.dist</font> into <font color="#ff0000">smokeping.pl</font><br />
- <font color="#3399ff">C:\smokeping-2.0.8\bin\tSmoke.dist</font> into <font color="#ff0000">tSmoke.pl</font></p>
<p><u>b) edit</u><br />
- <font color="#008080">C:\smokeping- 2.0.8\bin\smokeping.pl</font><br />
<em>add (after line 5):</em> <font color="#ff0000">use lib qw(C:\smokeping-2.0.8\lib); </font><br />
<em>change (line 9):</em> <font color="#3399ff">Smokeping::main(&#034;etc/config.dist&#034;);</font> into <font color="#ff0000">Smokeping::main(&#034;C:/smokeping-2.0.8/etc/config.dist&#034;);</font></p>
<p>- <font color="#008080">C:\smokeping-2.0.8\bin\tSmoke.pl</font><br />
<em>change (line 63):</em> <font color="#3399ff">my $cfgfile = &#034;etc/config.dist&#034;;</font> into <font color="#ff0000">my $cfgfile = &#034;C:\smokeping-2.0.8\etc\config.dist&#034;;</font></p>
<p>- <font color="#008080">C:\smokeping- 2.0.8\lib\Smokeping.pm</font><br />
<em>change (line 14):</em> <font color="#3399ff">use Sys::Syslog qw(:DEFAULT setlogsock);</font> into <font color="#ff0000">#use Sys::Syslog qw(:DEFAULT setlogsock);</font><br />
<em>change (line 21):</em> <font color="#3399ff">$ENV{LC_NUMERIC}=&#039;C';</font> into <font color="#ff0000">#$ENV{LC_NUMERIC}=&#039;C'; </font><br />
<em>change (line 22):</em> <font color="#3399ff">POSIX::setlocale(&#038;POSIX::LC_NUMERIC,&#034;");</font> into <font color="#ff0000">#POSIX::setlocale(&#038;POSIX::LC_NUMERIC,&#034;");</font><br />
<em>change (line 2984):</em> <font color="#3399ff">daemonize_me $cfg->{General}{piddir}.&#034;/smokeping.pid&#034;;</font> into <font color="#ff0000">#daemonize_me $cfg->{General}{piddir}.&#034;/smokeping.pid&#034;;</font></p>
<p>- <font color="#008080">C:\wamp\Apache2\conf\httpd.conf</font><br />
<em>change (line 515):</em> <font color="#3399ff">ScriptAlias /cgi-bin/ &#034;C:/wamp/Apache2/cgi-bin/&#034;</font> into <font color="#ff0000">ScriptAlias /cgi-bin/ &#034;c:/wamp/cgi/&#034;</font><br />
<em>change (line 521):</em>  <font color="#3399ff">&lt;Directory &#034;C:/wamp/Apache2/cgi-bin/&#034;&gt;</font> into <font color="#ff0000">&lt;Directory &#034;c:/wamp/cgi&#034;&gt;</font></p>
<p><u>c) move and rename</u><br />
- Create folder <font color="#008080">c:\wamp\cgi</font><br />
- <font color="#3399ff">C:\smokeping-2.0.8\htdocs\smokeping.cgi.dist</font> to <font color="#ff0000">c:\wamp\cgi\smokeping.pl</font></p>
<p><u>d) edit</u><br />
- <font color="#008080">c:\wamp\cgi\smokeping.pl</font><br />
<em>change (line 1):</em> <font color="#3399ff">#!/usr/sepp/bin/speedy -w</font> into <font color="#ff0000">#!C:/Perl/bin/perl.exe -w</font><br />
<em>change (line 5):</em> <font color="#3399ff">use lib qw(/home/oetiker/data/projects/AADJ-smokeping/dist/lib);</font> into <font color="#ff0000">use lib qw(C:\smokeping-2.0.8\lib); </font><br />
<em>change (line 10):</em> <font color="#3399ff">Smokeping::cgi(&#034;/home/oetiker/data/projects/AADJ-smokeping/dist/etc/config&#034;);</font> into <font color="#ff0000">Smokeping::cgi(&#034;C:/smokeping-2.0.8/etc/config.dist&#034;);<br />
</font></p>
<p align="left"><strong><u>6) Configuration</u></strong></p>
<p><u>- Create folders:</u><br />
<font color="#008080">C:\wamp\www\simg<br />
C:\smokeping- 2.0.8\var</font></p>
<p><u>- edit configuration file ( <font color="#008080">C:\smokeping- 2.0.8\etc\config.dist</font> ) no line number here use search function instead :p</u></p>
<p><font color="#3399ff">owner =<br />
contact =<br />
mailhost =<br />
#sendmail = /usr/lib/sendmail < == Comment this line<br />
imgcache = C:/wamp/www/simg<br />
imgurl = ../simg<br />
datadir = \smokeping-2.0.8/var # designate implicitly c:\smokeping-2.0.8\var<br />
piddir = C:/smokeping-2.0.8/var<br />
cgiurl = http://127.0.0.1/cgi-bin/smokeping.pl<br />
smokemail = C:/smokeping-2.0.8/etc/smokemail.dist<br />
tmail = C:/smokeping-2.0.8/etc/tmail.dist</font></p>
<p></font><font color="#3399ff"># syslogfacility = local0 < = Comment this line!!!!</font></p>
<p></font><font color="#3399ff">*** Alerts ***<br />
to =<br />
from =</font></p>
<p><font color="#3399ff">template = C:/smokeping-2.0.8/etc/basepage.html.dist</font></p>
<p><font color="#3399ff">+ FPing<br />
binary = C:/smokeping-2.0.8/fping/fping.exe</font></p>
<p><font color="#3399ff">title =<br />
remark =</font></p>
<p><font color="#3399ff"># google is for demonstrational purpose only; <strong>please refer to <a target="_blank" href="http://oss.oetiker.ch/smokeping/doc/smokeping_examples.en.html">smokeping help</a> to set your own targets</strong></font></p>
<p><font color="#3399ff">+ Google</font></p>
<p><font color="#3399ff">menu = Google<br />
title =Google Connectivity<br />
alerts = bigloss,someloss,startloss<br />
host = google.fr</font></p>
<p align="left" style="color: #000000"><u><strong>7) Test it!</strong></u></p>
<p style="color: #000000">- open a cmd.exe window, and type C:\smokeping-2.0.8\bin\smokeping.pl<br />
<img src="http://dev.pulsed.net/dotclear/images/test1.png" /><br />
Ok, no weird error messages (if not, please check 5-a, 5-b and 6 again)</p>
<p style="color: #000000">- let it run for 10-15 min and try to open <a target="_blank" href="http://127.0.0.1/cgi-bin/smokeping.pl"> http://127.0.0.1/cgi-bin/smokeping.pl</a><br />
<img src="http://dev.pulsed.net/dotclear/images/test2.png" /><br />
Ok, no error messages again (if not: for cgi error check 5-b, 5-c, 5-d and 6 again and 5-d and 6 for RRD errors)<br />
(note the 2 buggy images bottom left, we will fix this later)
</p>
<p style="color: #000000">Now close the cmd.exe windows (a little bit rebel)</p>
<p align="left" style="color: #000000"><u><strong>8) Autostart under NT AUTHORITY\SYSTEM</strong></u></p>
<p style="color: #000000">- open<strong> </strong>Control Panel > Scheduled tasks and then click add scheduled task<br />
<em>since I&#039;m french, my Windows version is french too</em><br />
<img src="http://dev.pulsed.net/dotclear/images/1.png" /><br />
add scheduled task</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/2.png" /><br />
Next</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/3.png" /><br />
C:\smokeping-2.0.8\bin\smokeping.pl</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/4.png" /><br />
<strong style="font-weight: 400" class="uiterm">When my computer starts</strong></p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/5.png" /><br />
system
</p>
<p style="color: #000000">After that, click &#034;Open advanced properties for this task when i click finish&#034;</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/6.png" /><br />
Check that &#034;run as&#034; is &#034;NT AUTHORITY\SYSTEM&#034;</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/7.png" /><br />
Uncheck everything in parameters, and click OK</p>
<p style="color: #000000"><img src="http://dev.pulsed.net/dotclear/images/8.png" /><br />
right click on the task, and Start, check if it doesn&#039;t stop immediatly.
</p>
<p align="left" style="color: #000000"><u><strong>9) The two buggy png pics</strong></u></p>
<p style="color: #000000"><img src="/dotclear/images/rrdtool.png" /><br />
<img src="/dotclear/images/smokeping.png" /><br />
Download them, and overwrite those in C:\wamp\www\simg
</p>
<p align="left" style="color: #000000"><u><strong>10) And you&#039;re done</strong></u></p>
<p style="color: #000000"><img src="/dotclear/images/end.png" /></p>
<p align="left" style="color: #ff0000"><em>I&#039;m not a native English speaker, so if you find some orthographical or grammatical mistakes, please report it! </em></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.pulsed.net/wp/?feed=rss2&amp;p=3</wfw:commentRss>
		<slash:comments>152</slash:comments>
		</item>
	</channel>
</rss>
