<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1311381797415896809</id><updated>2012-02-03T03:45:44.421+01:00</updated><category term='linux'/><category term='bikes'/><category term='hack'/><category term='agriculture'/><category term='cpld'/><category term='Z80'/><category term='simulator'/><category term='opensuse'/><category term='books'/><category term='SMD'/><category term='stuff'/><category term='cp/m'/><category term='robots'/><category term='kicad'/><category term='m68k'/><category term='gEDA'/><category term='electric bike'/><category term='electronics'/><category term='8085'/><category term='Solarlight'/><category term='Arduino'/><category term='food'/><category term='Porto'/><category term='computer'/><category term='SBC6120'/><category term='AVR'/><category term='coffee'/><category term='gnucross'/><category term='MSP430'/><category term='solar'/><category term='pachube'/><category term='motto'/><title type='text'>Coffee, bits and bikes</title><subtitle type='html'>My projects in the world of electronics, computers, bicycles and coffee drinking...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default?start-index=101&amp;max-results=100'/><author><name>J Silva</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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>115</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8449941619979500509</id><published>2012-01-28T22:28:00.004+01:00</published><updated>2012-01-28T22:53:24.155+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>OpenTherm v2 First Prototype</title><content type='html'>I finaly built a prototype of the opentherm interface (version 2) for &lt;a href="http://jaagpad.blogspot.com/"&gt;Alex&lt;/a&gt; to test, since he dosen't have all the tools to test it I'm hoping that at least the physical interface works, the other features are powered through the interface and using a supercapacitor to hold the power during radio transmission.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-iMKFeWdK1Q4/TyRsZ1c1AzI/AAAAAAAAARk/dCKRAsiW7bE/s1600/P1070075.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-iMKFeWdK1Q4/TyRsZ1c1AzI/AAAAAAAAARk/dCKRAsiW7bE/s320/P1070075.JPG" alt="" id="BLOGGER_PHOTO_ID_5702802219258413874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The board has a &lt;a href="http://jeelabs.org/"&gt;JeeNode&lt;/a&gt; interface so Alex doesn't have to change much, there are two extra jumpers, one connects the opentherm rectified voltage to the PWR input of the jeenode, and the other connects the 3.3V output of the jeenode to a supercap. It is still a bit oversized but... Well it is a prototype... The OpAmp is the LM358 (dual version of the quad LM324), works from 3V to 33V and it is relatively low power. The specification of Opentherm states a open voltage of 40V so I had to protect the OpAmp with a parallel Zener (seen in the picture).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-cy8e_1iB7O8/TyRsZsHWB1I/AAAAAAAAARY/8Uj9T-tJ67g/s1600/P1070078.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://3.bp.blogspot.com/-cy8e_1iB7O8/TyRsZsHWB1I/AAAAAAAAARY/8Uj9T-tJ67g/s320/P1070078.JPG" alt="" id="BLOGGER_PHOTO_ID_5702802216752383826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A lot has to be done on the jeenode side, but it is mostly software regarding the power saving modes and saving enough power before the short bursts of radio transmission. The schematics of this circuit is based on the &lt;a href="http://bitsnbikes.blogspot.com/2012/01/opentherm-interface-v2.html"&gt;published before&lt;/a&gt;, but I'll hold the final one until Alex gives me feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8449941619979500509?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8449941619979500509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8449941619979500509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8449941619979500509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8449941619979500509'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2012/01/opentherm-v2-first-prototype.html' title='OpenTherm v2 First Prototype'/><author><name>J Silva</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/-iMKFeWdK1Q4/TyRsZ1c1AzI/AAAAAAAAARk/dCKRAsiW7bE/s72-c/P1070075.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8428828084214640461</id><published>2012-01-16T17:07:00.000+01:00</published><updated>2012-01-20T10:01:53.208+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>OpenTherm Interface V2</title><content type='html'>As I mentioned &lt;a href="http://bitsnbikes.blogspot.com/2012/01/new-boards-arrived.html"&gt;when the boards arrived&lt;/a&gt;, I'm planning a new board/circuit but I just briefly mentioned it.&lt;br /&gt;Alex pointed out that in the OpenTherm specification it is stated that a master unit, i.e. your thermostat in the living room or a controller (in Alex's case), could be powered by the interface (use google to find the specification). &lt;br /&gt;&lt;br /&gt;In the OpenTherm specification the boiler is slave (although providing the current loop) and the master is the remote control unit. He asked me if it could be done, and looking at the &lt;a href="http://bitsnbikes.blogspot.com/2011/09/alex-opentherm-interface-for-jeenode.html"&gt;first schematic&lt;/a&gt; I drafted a battle plan:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;get rid of the dissipative receiver resistor;&lt;/li&gt;&lt;li&gt;get rid of the dissipative transmission resistor;&lt;/li&gt;&lt;li&gt;get rid of the optocouplers, (isolation is good and desired but CTR isn't very good for cheap opto's... hence more current).&lt;/li&gt;&lt;li&gt;with whatever power is available, use a LDO and power something.&lt;/li&gt;&lt;li&gt;Design a current loop transmitter (4-17mA)for testing that works at 40V.&lt;/li&gt;&lt;li&gt;Design a two level shunt regulator for transmitting from master to slave.&lt;/li&gt;&lt;li&gt;Design a minimal loss current loop receiver with output to 3.3V logic systems.&lt;/li&gt;&lt;/ol&gt;The mains issues were, the maximum loop voltage of 40V and the low voltage LDO and digital signals (3.3V)... and size since Alex want's a "shield" for his JeeNode. There aren't many IC's that work at 40V...&lt;br /&gt;&lt;br /&gt;I have planed a tribute post to Jim Williams and Bob Pease playing around analog computers, but time hasn't allowed it... so this short one goes to them and to Bob Widlar.&lt;br /&gt;&lt;br /&gt;First I had to design the current loop transmitter to test the system, the input had to be 40V so that under lower load the output voltage was close to that (part of the OpenTherm specification). I remembered the &lt;a href="http://www.national.com/mpf/LM/LM10.html#Overview"&gt;LM10&lt;/a&gt; (designed by Widlar) had an interesting feature in it's &lt;a href="http://www.national.com/profile/snip.cgi/openDS=LM10"&gt;datasheet&lt;/a&gt;, it is the only OpAmp I know that has been specified for shunt operation (Dear TI that page says "all national products now are belong to us" in front of the datasheet is .... lame).&lt;br /&gt;It also had a application schematic for a current controller, I modified that schematic to allow a push-button (4-20mA) switch (for those not able to find the LM10 check &lt;a href="http://www.blogger.com/www.linear.com/docs/4156"&gt;here&lt;/a&gt; for an alternative way to generate the current loop, replace DAC with voltage generator).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Ai7Ng3iluUI/TxNVtnowqfI/AAAAAAAAAP8/AJ5Y9WbRtlU/s1600/OpenThermIFT.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 205px;" src="http://4.bp.blogspot.com/-Ai7Ng3iluUI/TxNVtnowqfI/AAAAAAAAAP8/AJ5Y9WbRtlU/s320/OpenThermIFT.png" alt="" id="BLOGGER_PHOTO_ID_5697992195776227826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then was the master transmitter, basically a shunt regulator with two levels, inactive 7V and active 15V. I used two diodes in series as the reference to the minimum voltage for the regulator, there's a hell of thermal drift but I don't expect the temperature to move outside the range 16C-40C with a corresponding error of 120mV and respective change of about 600mV, therefore negligible. Also I added the push-button to change from one state to the other. I thought of using the same LM10 but unfortunately the LM10 is too slow even for the 2kHz output waveform (it is 1kHz manchester encoded), so the next big thing in single supply opamps capable of 30V operation is the quad LM324, I've used the double LM358. They have their problems in precision and audio circuits but they're good enough and fast enough for the job.&lt;br /&gt;&lt;br /&gt;Finally I designed the receiver, the current loop receiver was a nice exercise. I used a simple linear converter to adapt the current levels at the current sense resistor to voltages of less than 0,7V (4-9mA) for the low level and greater than 2,0V for the high level (20mA). One interesting point one is that even single supply amps can work with negative voltages as long as the output is within specification and the voltage at the pin is not negative.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-D2zX2XnpZTQ/TxNVtUWCLvI/AAAAAAAAAP0/nDEBlvyvrtI/s1600/opentherm2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 205px;" src="http://1.bp.blogspot.com/-D2zX2XnpZTQ/TxNVtUWCLvI/AAAAAAAAAP0/nDEBlvyvrtI/s320/opentherm2.png" alt="" id="BLOGGER_PHOTO_ID_5697992190597410546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that's it, I just need to wire a small pref board and send it to be tested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8428828084214640461?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8428828084214640461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8428828084214640461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8428828084214640461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8428828084214640461'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2012/01/opentherm-interface-v2.html' title='OpenTherm Interface V2'/><author><name>J Silva</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://4.bp.blogspot.com/-Ai7Ng3iluUI/TxNVtnowqfI/AAAAAAAAAP8/AJ5Y9WbRtlU/s72-c/OpenThermIFT.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2353562870160832459</id><published>2012-01-12T19:32:00.007+01:00</published><updated>2012-01-15T22:17:25.719+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='solar'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>New Boards arrived!</title><content type='html'>This time is the PCB of the &lt;a href="http://www.opentherm.eu/"&gt;Opentherm&lt;/a&gt; Interface (v1.0) for &lt;a href="http://jaagpad.blogspot.com/2011/11/opentherm-interface-ready.html"&gt;Alex&lt;/a&gt; and his &lt;a href="http://jeelabs.net/projects/hardware/wiki/JeeNode"&gt;JeeNode&lt;/a&gt; and my &lt;a href="http://bitsnbikes.blogspot.com/2011/09/firefly-jam-jar.html"&gt;Jam Jar Firefly&lt;/a&gt; simulator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-mKlRjSYIgNk/TxM9awuU4WI/AAAAAAAAAPc/HUyS-4TciR4/s1600/P1070046.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-mKlRjSYIgNk/TxM9awuU4WI/AAAAAAAAAPc/HUyS-4TciR4/s320/P1070046.JPG" alt="" id="BLOGGER_PHOTO_ID_5697965483518910818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The round ones are the JamJarFirely and the rectangular is the JeeNode interface. We've sent them to be produced by &lt;a href="http://dorkbotpdx.org/wiki/pcb_order"&gt;Lean&lt;/a&gt;, there were some delays but eventually we got them.&lt;br /&gt;&lt;br /&gt;Alex mentioned that the Opentherm interface mentions having a loop powered Master and Alex wanted to try and do it with JeeNode. I thought about a version two.&lt;br /&gt;I think that I have the hardware ready but surely a lot has to be done in the jeenode side in terms of software, there are only about 25mW available permanently (about 5V@5mA).&lt;br /&gt;This is my first attempt, I've still just tested it on the breadboard but I think it will work. Here is my initial schematic, the LED on the input is a receive indicator and correct polarity indicator (lights dimly when correctly connected and blinks when receiving).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-KIlRCrKS8JY/TxM9_y19RVI/AAAAAAAAAPo/BgfxndlbBWk/s1600/opentherm2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 205px;" src="http://2.bp.blogspot.com/-KIlRCrKS8JY/TxM9_y19RVI/AAAAAAAAAPo/BgfxndlbBWk/s320/opentherm2.png" alt="" id="BLOGGER_PHOTO_ID_5697966119742948690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The rest of the circuit is a programmable shunt regulator with two voltages (the transmitter 7V and 16V since the loop is a current source) and a current to voltage converter (receiver).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2353562870160832459?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2353562870160832459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2353562870160832459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2353562870160832459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2353562870160832459'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2012/01/new-boards-arrived.html' title='New Boards arrived!'/><author><name>J Silva</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://1.bp.blogspot.com/-mKlRjSYIgNk/TxM9awuU4WI/AAAAAAAAAPc/HUyS-4TciR4/s72-c/P1070046.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8200500830349176815</id><published>2011-12-05T17:05:00.009+01:00</published><updated>2012-01-28T22:28:43.029+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>Change bicycle crank</title><content type='html'>Last winter during the two month long ice age I fell of the bike. I got stuck with the front wheel on a hiden tram track (under the snow I missed it). The fall was quite hard and one of the pedal crank arms on the &lt;a href="http://www.kronan.com/sv/cykel"&gt;Kronan&lt;/a&gt; got bent.&lt;br /&gt;Since during the summer I've been taking Luísa on the &lt;a href="http://uk.batavus.com/collection/City+bikes/Personal+Bike/Personal+Bike+Delivery.aspx"&gt;Batavus&lt;/a&gt; and the Kronan was "ridable" I let it linger for a long time...  and after much procastination and "planning" I decided to order online and replace the cranks myself.&lt;br /&gt;&lt;br /&gt;There are several tutorials on the net (one &lt;a href="http://www.parktool.com/blog/repair-help/crank-installation-and-removal-square-spindle-type"&gt;here&lt;/a&gt;), and what is definetely needed in a crank removal tool and special recessed nut wrench, all the other tools are common workshop tools.&lt;br /&gt;First remove the plastic cap hidding the bolt, then use the special recessed bolt wrench and remove this bolt.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-F9u6PdNO1nA/TyRctKXv6vI/AAAAAAAAAQQ/D3tknlNgYzw/s1600/P1060503.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://2.bp.blogspot.com/-F9u6PdNO1nA/TyRctKXv6vI/AAAAAAAAAQQ/D3tknlNgYzw/s320/P1060503.JPG" alt="" id="BLOGGER_PHOTO_ID_5702784959105723122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The insert the crank removal tool in the crank nut and turn the extractor bolt, this will slowly move the crank arm out of the axel.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-1LMI_As3frw/TyRc9io544I/AAAAAAAAAQc/kyosh-8If5w/s1600/P1060507.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-1LMI_As3frw/TyRc9io544I/AAAAAAAAAQc/kyosh-8If5w/s320/P1060507.JPG" alt="" id="BLOGGER_PHOTO_ID_5702785240498037634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then just remove the crank arm and remove the pedal (just the crank arm was bent, the pedal was unharmed).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-XMNtqLmGUxA/TyRdcOp6EJI/AAAAAAAAAQo/m42rWiluzkg/s1600/P1060510.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-XMNtqLmGUxA/TyRdcOp6EJI/AAAAAAAAAQo/m42rWiluzkg/s320/P1060510.JPG" alt="" id="BLOGGER_PHOTO_ID_5702785767709479058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Remove the pedal with a wrench.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-K1Pd-CfTJLs/TyRge3jvDcI/AAAAAAAAAQ0/2Tn9XhXwu7A/s1600/P1060511.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-K1Pd-CfTJLs/TyRge3jvDcI/AAAAAAAAAQ0/2Tn9XhXwu7A/s320/P1060511.JPG" alt="" id="BLOGGER_PHOTO_ID_5702789111584067010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Put in the new crank arm, screw in the fixing bolt and the old pedal, repeat for the other side and voila!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-LjV0TUo0w8k/TyRgfAqgxGI/AAAAAAAAARA/mj-Xu3TOreg/s1600/P1060513.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://3.bp.blogspot.com/-LjV0TUo0w8k/TyRgfAqgxGI/AAAAAAAAARA/mj-Xu3TOreg/s320/P1060513.JPG" alt="" id="BLOGGER_PHOTO_ID_5702789114028409954" border="0" /&gt;&lt;/a&gt;And now I'm ready for the harsh weather with the Kronan again...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-E2OhLqSkwik/TyRgfrCwEwI/AAAAAAAAARQ/aN1Hv9Y6blw/s1600/P1060852.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-E2OhLqSkwik/TyRgfrCwEwI/AAAAAAAAARQ/aN1Hv9Y6blw/s320/P1060852.JPG" alt="" id="BLOGGER_PHOTO_ID_5702789125404365570" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8200500830349176815?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8200500830349176815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8200500830349176815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8200500830349176815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8200500830349176815'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/12/change-bicycle-crank.html' title='Change bicycle crank'/><author><name>J Silva</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://2.bp.blogspot.com/-F9u6PdNO1nA/TyRctKXv6vI/AAAAAAAAAQQ/D3tknlNgYzw/s72-c/P1060503.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-135643453495820363</id><published>2011-12-01T22:01:00.004+01:00</published><updated>2011-12-04T22:44:07.286+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>Luísa is two!</title><content type='html'>Luísa is two today...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-2wlhPwdHHE4/TtvpMRczrYI/AAAAAAAAAPM/XuzbYY8R5Ws/s1600/P1060417.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-2wlhPwdHHE4/TtvpMRczrYI/AAAAAAAAAPM/XuzbYY8R5Ws/s320/P1060417.JPG" alt="" id="BLOGGER_PHOTO_ID_5682391751909944706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We picked her up early from the daycare... she was not "thrilled" when we woke her up in the middle of her afternoon nap...&lt;br /&gt;Well, we managed her to wave (reluctantly) after a few seconds... (Only after she insisted on getting on the bike :-)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-a01a82c6563d06df" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v17.nonxt3.googlevideo.com/videoplayback?id%3Da01a82c6563d06df%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330424315%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D2324E4B2BB1BA50F15F7C82556B0872146E8C492.1CE781B9DE4D654B9471045AD7993A7B05E33732%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Da01a82c6563d06df%26offsetms%3D5000%26itag%3Dw160%26sigh%3DiVNu23UvRZVSqRr8WC3FGtsyKtA&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v17.nonxt3.googlevideo.com/videoplayback?id%3Da01a82c6563d06df%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330424315%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D2324E4B2BB1BA50F15F7C82556B0872146E8C492.1CE781B9DE4D654B9471045AD7993A7B05E33732%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Da01a82c6563d06df%26offsetms%3D5000%26itag%3Dw160%26sigh%3DiVNu23UvRZVSqRr8WC3FGtsyKtA&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&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/1311381797415896809-135643453495820363?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/135643453495820363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=135643453495820363' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/135643453495820363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/135643453495820363'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/12/luisa-is-two.html' title='Luísa is two!'/><author><name>J Silva</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://2.bp.blogspot.com/-2wlhPwdHHE4/TtvpMRczrYI/AAAAAAAAAPM/XuzbYY8R5Ws/s72-c/P1060417.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-440382584346609504</id><published>2011-11-11T23:11:00.001+01:00</published><updated>2011-11-11T23:11:01.221+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='MSP430'/><title type='text'>TI Launchpad</title><content type='html'>Recently I've been trying to do &lt;a href="http://bitsnbikes.blogspot.com/2011/09/bird-o-matic.html"&gt;battery powered devices&lt;/a&gt; and I came to the conclusion that there is more to it than you first think.&lt;br /&gt;My experience with the Bird-O-Matic is that it each battery lasted only 25% of what I had planed. There were some options that might have influenced it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I didn't made an OFF timer, once the PIR detects an warm object it turns ON the MP3 player and the Amplifier for some time (7-10 seconds), placing a forced OFF timer of 20-30 seconds would prevent constant re-triggering every time someone passes by.&lt;/li&gt;&lt;li&gt;Was the use of a CMOS 555 better than a micro-controller? Today's controllers consume almost nothing in standby or power down mode, and a wake up on pin changed could be used with the PIR.&lt;/li&gt;&lt;li&gt;The external MP3 player consumes a lot of power and takes 1-2 seconds to start up. It was the simpler and fastest solution, but not the best for power saving.&lt;/li&gt;&lt;/ul&gt;Recently I read about the MSP430 ultra low power capabilities and I wanted to try them out. The Texas Instruments Lauchpad let's you do just that at a very low price (about 10EUR) and a big Windows installation (&lt;a href="http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29"&gt;see here&lt;/a&gt;). I admit I'm always very reluctant to install windows software but unfortunately &lt;a href="http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29#Linux_Support"&gt;these links&lt;/a&gt; for installing in Linux didn't work out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Vfi8ChNze-Q/Tr2JW17r9nI/AAAAAAAAAOY/1nvOaM-Qq7c/s1600/P1050966.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-Vfi8ChNze-Q/Tr2JW17r9nI/AAAAAAAAAOY/1nvOaM-Qq7c/s320/P1050966.JPG" alt="" id="BLOGGER_PHOTO_ID_5673842131084244594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It is a bit sad, but I'm no sysadmin and no I don't know perl and I don't want to lose time learning perl, to correct a script, to install a msp430-gcc, to program devices... I understand the technical difficulties behind maintaining and supplying a gcc distribution (specially if also sell a payed tool), but nowadays it is becoming a "must". Sounds like when AMD started giving away PALASM... suddenly every PLD manufacturer started doing it or... went out of business..&lt;br /&gt;After installing the correct tool (the free version is not the latest version), I followed the start up guide and sure enough I made my first C program.&lt;br /&gt;The tool is simple and powerful (based on &lt;a href="http://en.wikipedia.org/wiki/Eclipse_%28software%29"&gt;eclipse&lt;/a&gt;), in Windows everything works mostly out of the box.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-BrxvEe7MS5I/Tr2JXDdYm0I/AAAAAAAAAOk/Pht0-qjMvjQ/s1600/P1050967.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-BrxvEe7MS5I/Tr2JXDdYm0I/AAAAAAAAAOk/Pht0-qjMvjQ/s320/P1050967.JPG" alt="" id="BLOGGER_PHOTO_ID_5673842134715243330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The board is "divided" into a emulation tool and the experimenter board where devices of 14 and 16pins can be connected. There's also the option of soldering (an included) SMD low-power crystal oscillator. Instructions are also provided on how to measure the power of the experimenter processor, although it is tempting do not cut the board through the dashed lines.. it will not work as a MSP-ISP... that's another tool. (but I guess removing the jumpers and direct connection is ok :-).&lt;br /&gt;The processor although a 16bit simple RISC architecture does appear to be quite capable, I just tried out a couple of examples in C. This though is not what I want to try out... I want to see if the operating current is as low as "advertised", but that will have to be for a another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-440382584346609504?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/440382584346609504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=440382584346609504' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/440382584346609504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/440382584346609504'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/09/ti-launchpad.html' title='TI Launchpad'/><author><name>J Silva</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://2.bp.blogspot.com/-Vfi8ChNze-Q/Tr2JW17r9nI/AAAAAAAAAOY/1nvOaM-Qq7c/s72-c/P1050966.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4819437260287185694</id><published>2011-11-11T17:09:00.011+01:00</published><updated>2011-11-11T21:16:06.527+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Christmas Ball (the 11.11.11 post)</title><content type='html'>It is a bit late to announce but we won a prize!!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-NTEarTgNcH4/Tr2AwOgsJmI/AAAAAAAAAN8/Q0YqdZ-2ERc/s1600/P1050861.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-NTEarTgNcH4/Tr2AwOgsJmI/AAAAAAAAAN8/Q0YqdZ-2ERc/s320/P1050861.jpg" alt="" id="BLOGGER_PHOTO_ID_5673832671573976674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.huyser.com/"&gt;Huyser bookstore in Delft&lt;/a&gt; ran a competition to promote the book from Arne and Carlos "&lt;a href="http://www.amazon.com/Christmas-Balls-Knit-Ornaments--Tree-Centerpieces/dp/1570764875/ref=sr_1_1?ie=UTF8&amp;amp;qid=1321031340&amp;amp;sr=8-1"&gt;55 Christmas Balls to Knit&lt;/a&gt;", see the promotional video &lt;a href="http://www.youtube.com/watch?v=FoDghBI3F34&amp;amp;noredirect=1"&gt;here&lt;/a&gt;. Just before the deadline (1.11.11) our son Daniel was born, but we managed to find time to finish the Ball and submit it.&lt;br /&gt;Naturally &lt;a href="http://anacrafts.blogspot.com/"&gt;Ana chose a pattern and knitted the ball&lt;/a&gt;, I took care of the electronics. We were so late entering the competition that we only have "night shots" before submitting the ball...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-5kEgQV6ub9U/Tr2Avz5im8I/AAAAAAAAAN0/TVs8KNjfdS0/s1600/P1050860.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-5kEgQV6ub9U/Tr2Avz5im8I/AAAAAAAAAN0/TVs8KNjfdS0/s320/P1050860.jpg" alt="" id="BLOGGER_PHOTO_ID_5673832664430451650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It is a simple ATTiny15L powered with 3x AAA alkaline batteries.&lt;br /&gt;There are 4 LEDs connected to the ATTiny, each in one of the reindeer's nose.&lt;br /&gt;I've made a 32bit pseudo random number generator with a LFSR. The ball to lit is randomly picked (1..4) and also the fade-in time (1-2sec), fade-out time (1-2 sec) and off-time (2..4 x 2.5sec i.e. number of watchdog cycles).&lt;br /&gt;The average measured power consumption is 1.5mA so one can expect about 1000 hours of operation from 3 standard cells.&lt;br /&gt;(click on the circuit for a better view)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-3b7FlUpA4cI/Tr1_8AwJbGI/AAAAAAAAANo/NMwjQJWtKUs/s1600/firefly-page1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-3b7FlUpA4cI/Tr1_8AwJbGI/AAAAAAAAANo/NMwjQJWtKUs/s320/firefly-page1.png" alt="" id="BLOGGER_PHOTO_ID_5673831774527515746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The schematic is not exactly this one, this is for another project that hopefully will come out before Christmas, just remove the solar charger, the voltage measuring and that's it!&lt;br /&gt;We got the third prize, &lt;a href="http://www.huyser.com/?id=132"&gt;100EUR in books&lt;/a&gt;!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4819437260287185694?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4819437260287185694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4819437260287185694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4819437260287185694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4819437260287185694'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/11/christmas-ball-111111-post.html' title='Christmas Ball (the 11.11.11 post)'/><author><name>J Silva</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://4.bp.blogspot.com/-NTEarTgNcH4/Tr2AwOgsJmI/AAAAAAAAAN8/Q0YqdZ-2ERc/s72-c/P1050861.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2152085320259320735</id><published>2011-10-07T22:43:00.007+02:00</published><updated>2011-11-11T18:05:54.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Balcony Crop 2011</title><content type='html'>Winter is coming and I almost forgot...&lt;br /&gt;&lt;a href="http://bitsnbikes.blogspot.com/2011/04/new-crops-2011.html"&gt;This year crops&lt;/a&gt; were not better than &lt;a href="http://bitsnbikes.blogspot.com/2010/09/2010-balcony-carrots-grand-cru.html"&gt;last year&lt;/a&gt;, and considerably less than the &lt;a href="http://bitsnbikes.blogspot.com/2009/08/harvesting-carrots.html"&gt;first year&lt;/a&gt;, the ground in the vases is getting "worn out" and too compact so vegetables that grow in the ground (carrots and turnips) don't grow that much.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-ZeXJ3HvMyFo/Tr1UpUxPIlI/AAAAAAAAANE/QeYiCjgjo3M/s1600/P1050359.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-ZeXJ3HvMyFo/Tr1UpUxPIlI/AAAAAAAAANE/QeYiCjgjo3M/s320/P1050359.jpg" alt="" id="BLOGGER_PHOTO_ID_5673784174483284562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Still we managed one (yes, only one) bowl of steamed vegetables (150g). This year Luísa helped picking up the carrots.&lt;br /&gt;The "top of the crop" goes to the turnip followed by the micro-carrot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-KVBuR7kmORw/Tr1Upkj_AqI/AAAAAAAAANQ/xV1xcnQWl5c/s1600/P1050363.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-KVBuR7kmORw/Tr1Upkj_AqI/AAAAAAAAANQ/xV1xcnQWl5c/s320/P1050363.jpg" alt="" id="BLOGGER_PHOTO_ID_5673784178722669218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Unfortunately, the beetroot did not survive the very dry and hot spring followed by a damp and lousy summer...&lt;br /&gt;I'm now awaiting for everything in the vases to dye out and then I reinforce the soil or change it all together...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2152085320259320735?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2152085320259320735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2152085320259320735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2152085320259320735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2152085320259320735'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/10/balcony-crop-2011.html' title='Balcony Crop 2011'/><author><name>J Silva</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://4.bp.blogspot.com/-ZeXJ3HvMyFo/Tr1UpUxPIlI/AAAAAAAAANE/QeYiCjgjo3M/s72-c/P1050359.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7024450179875730267</id><published>2011-09-28T23:33:00.008+02:00</published><updated>2011-12-04T21:39:57.371+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>FireFly Jam Jar</title><content type='html'>I wanted to build a night-lamp for Luísa, something a bit less "spooky" than a &lt;a href="http://www.ikea.com/nl/nl/catalog/products/70150982/"&gt;blue IKEA Spöka&lt;/a&gt; that she has. I also wanted to be able to charge just by placing it in the sun (even there isn't much of that up here)...&lt;br /&gt;I went back to my stack of old ATTiny15L and designed a circuit with four LEDs connected in a particular way that only used 3 pins to lit each of them. The other two measure external light (light on when it is dark) and battery (low bat... do nothing be very very still).&lt;br /&gt;I got some jam jars and some Yellow/Amber LEDs and started programming, for the battery I selected a 3.6V 50mAh NiCad (i.e. junk hanging around) and the battery charger was a two transistor current limiter but after some tries I settled with a simple schottky diode from the panel to the battery.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-R1U9LwHS16w/TtvZxcWmoLI/AAAAAAAAAPA/TSTLnM54UlQ/s1600/firefly-page1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 207px;" src="http://1.bp.blogspot.com/-R1U9LwHS16w/TtvZxcWmoLI/AAAAAAAAAPA/TSTLnM54UlQ/s320/firefly-page1.png" alt="" id="BLOGGER_PHOTO_ID_5682374798305829042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The idea of the project is that when night falls (or lights out) the light goes on for about an hour hopping from one light to the other with different ratios of fade-in and fade-out. This hopefully will induce a sleepy feeling (like candles... by the way.. simulating four candles is also possible)&lt;br /&gt;The schematic is the same as for the &lt;a href="http://bitsnbikes.blogspot.com/2011/11/christmas-ball-111111-post.html"&gt;reindeer ball project&lt;/a&gt;, but this time I went "all the way" to a PCB FAB. I still have to wait for it to come but it looks nice in the preview.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-P4lUB30KfVk/TtvXUgYRE7I/AAAAAAAAAO0/JC1Olt63XQ8/s1600/firefly.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://1.bp.blogspot.com/-P4lUB30KfVk/TtvXUgYRE7I/AAAAAAAAAO0/JC1Olt63XQ8/s320/firefly.png" alt="" id="BLOGGER_PHOTO_ID_5682372102147085234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is my first "non-rectangular" board and actually my first milled board. We'll see how this project will look like in the end...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7024450179875730267?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7024450179875730267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7024450179875730267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7024450179875730267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7024450179875730267'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/09/firefly-jam-jar.html' title='FireFly Jam Jar'/><author><name>J Silva</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://1.bp.blogspot.com/-R1U9LwHS16w/TtvZxcWmoLI/AAAAAAAAAPA/TSTLnM54UlQ/s72-c/firefly-page1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-848939285342073926</id><published>2011-09-28T23:19:00.010+02:00</published><updated>2011-10-07T22:28:58.341+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Alex OpenTherm interface for JeeNode</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rJD0jMCS3iE/To9eJwYDtEI/AAAAAAAAAME/40F5lJhkO4Y/s1600/P1050406.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-rJD0jMCS3iE/To9eJwYDtEI/AAAAAAAAAME/40F5lJhkO4Y/s320/P1050406.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5660846778325644354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jaagpad.blogspot.com/"&gt;Alex&lt;/a&gt; requested a "quick and dirty prototype" for his &lt;a href="http://www.opentherm.eu/"&gt;Opentherm&lt;/a&gt; &lt;a href="http://jeelabs.org/"&gt;JeeNode&lt;/a&gt; interface. He has more details on the "substance" &lt;a href="http://jaagpad.blogspot.com/2011/09/opentherm-circuit-diagram.html"&gt;here&lt;/a&gt; and &lt;a href="http://jaagpad.blogspot.com/2011/09/pcb.html"&gt;here&lt;/a&gt;. I just made the boards, it is all his design (boards plural, the first one was wrongly mirrored, b.t.w. it is the wrong one you see on the pictures).&lt;br /&gt;I followed the usual toner transfer method, and just works, &lt;a href="http://producten.hema.nl/"&gt;HEMA photo paper&lt;/a&gt; is the best! The second board is not so pretty.... but at least it is correct (no photos of this one though).&lt;br /&gt;The schematics are on Alex's site but here's my second try at the schematics also:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6P_dFE3IZAM/To9fFyPda7I/AAAAAAAAAMU/Grcone_IL78/s1600/opentherm-page1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-6P_dFE3IZAM/To9fFyPda7I/AAAAAAAAAMU/Grcone_IL78/s320/opentherm-page1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5660847809618602930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here a detail of the board where you can see some "over etching":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-iYdRA2mNdEI/To9eKBmIPaI/AAAAAAAAAMM/_PUqDtHUWfE/s1600/P1050409.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-iYdRA2mNdEI/To9eKBmIPaI/AAAAAAAAAMM/_PUqDtHUWfE/s320/P1050409.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5660846782948064674" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-848939285342073926?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/848939285342073926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=848939285342073926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/848939285342073926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/848939285342073926'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/09/alex-opentherm-interface-for-jeenode.html' title='Alex OpenTherm interface for JeeNode'/><author><name>J Silva</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://4.bp.blogspot.com/-rJD0jMCS3iE/To9eJwYDtEI/AAAAAAAAAME/40F5lJhkO4Y/s72-c/P1050406.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6790066193978980044</id><published>2011-09-28T23:16:00.012+02:00</published><updated>2011-10-07T22:00:22.808+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Bird-O-Matic</title><content type='html'>&lt;div&gt;Pedro asked me, some time ago, to do a collaboration project with a good friend of his.&lt;br /&gt;The idea for the installation art project was the story &lt;a href="http://en.wikipedia.org/wiki/The_Nightingale_%28fairy_tale%29"&gt;"The Nightingale"&lt;/a&gt; from &lt;a href="http://en.wikipedia.org/wiki/Hans_Christian_Andersen"&gt;H.C. Andersen&lt;/a&gt;, the idea was to build/make a talking bird of sorts. Our initial plans had to change somewhat substantially... here's what we did:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-VRFhYP9r2v4/To9X2CQzZ5I/AAAAAAAAALs/p7KaeP3-Tjw/s1600/P1050398.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://1.bp.blogspot.com/-VRFhYP9r2v4/To9X2CQzZ5I/AAAAAAAAALs/p7KaeP3-Tjw/s320/P1050398.JPG" alt="" id="BLOGGER_PHOTO_ID_5660839842459903890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;My part, was to design and build the electronics that would "make the bird sing", we already had the bird's voice in a mp3 track (a danish Nightingale!!), we just needed something to play it. The original idea was to have a bird (just like in the story), but one of the places was an open air installation, so a bird cage seemed a better option.&lt;/div&gt;&lt;br /&gt;The first constrain was time, we had only two months for doing the first "bird-o-matic". We gathered a &lt;a href="http://www.solarbotics.com/products/35050/resources/"&gt;PIR Sensor&lt;/a&gt;, a &lt;a href="http://www.solarbotics.com/products/50750/"&gt;MP3 Player&lt;/a&gt;, and a &lt;a href="http://www.solarbotics.com/products/lm386/"&gt;LM386 amplifier IC&lt;/a&gt; from &lt;a href="http://www.blogger.com/www.solarbotics.com"&gt;Solarbotics&lt;/a&gt;.&lt;br /&gt;We wanted a reasonable sound volume so we chose a 9V battery to power the circuit, this is challenge because these batteries do not have a big capacity (max about 1000mAh) and we still wanted to play for some time without replacing the battery. This also excluded from the start using an Arduino as they consume a lot of current even if you manage to put it in standby.&lt;br /&gt;I decided to use a simple monostable (LMC555) triggered by the PIR sensor that would activate the MP3 player and amplifier for a reasonable time (enough to play the nightingale sound). I used low-power MOSFETs for the power switching and one as inverter.&lt;br /&gt;The first build used a LM78L05 but these have a very high quiescent current (~4mA), 10x more than the PIR sensor alone(~350uA)! The second choice was the LM2950 with only 40uA without load (increases to about the double with load) The LMC555 also has a lower quiescent current when operated at 5V (100uA) when compared to 9V (~160uA), and orders of magnitude lower than his "high power" counterpart the LM555.&lt;br /&gt;Still the total current in standby was lower that 600uA, this would give 2000 hours in standby!&lt;br /&gt;Playing... well "you can't make an omelet without breaking some eggs", the MP3 player consumed about 80mA and the LM386 another 80mA, giving a total play time of about 6 hours, still quite good if you think that the track was only 20 seconds... that is about 1100 times... it also exceeds the LM2950 maximum current by 50% but it works until it is too hot then the thermal shutdown "kills the bird" (battery saving on the cheap).&lt;br /&gt;Here is the schematic:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-2oJecbPTk-k/To9ZZSn_K-I/AAAAAAAAAL8/mXNsII76E4w/s1600/Nightingale-page1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-2oJecbPTk-k/To9ZZSn_K-I/AAAAAAAAAL8/mXNsII76E4w/s320/Nightingale-page1.png" alt="" id="BLOGGER_PHOTO_ID_5660841547659160546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is a close up of the inside of the bird cage:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-EgS7W5ixP-8/To9X19l0YUI/AAAAAAAAALk/XCw_Gs_Lyig/s1600/P1050401.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://1.bp.blogspot.com/-EgS7W5ixP-8/To9X19l0YUI/AAAAAAAAALk/XCw_Gs_Lyig/s320/P1050401.JPG" alt="" id="BLOGGER_PHOTO_ID_5660839841205870914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here a photo of the first prototype:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-nt-O5qK97qs/To9Y4AG-aOI/AAAAAAAAAL0/w7cPc7D3Sso/s1600/P1040386.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-nt-O5qK97qs/To9Y4AG-aOI/AAAAAAAAAL0/w7cPc7D3Sso/s320/P1040386.JPG" alt="" id="BLOGGER_PHOTO_ID_5660840975753177314" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6790066193978980044?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6790066193978980044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6790066193978980044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6790066193978980044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6790066193978980044'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/09/bird-o-matic.html' title='Bird-O-Matic'/><author><name>J Silva</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://1.bp.blogspot.com/-VRFhYP9r2v4/To9X2CQzZ5I/AAAAAAAAALs/p7KaeP3-Tjw/s72-c/P1050398.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6963945424566088100</id><published>2011-09-16T19:29:00.003+02:00</published><updated>2011-09-16T19:41:53.409+02:00</updated><title type='text'>New Boards arrived!</title><content type='html'>A month or so ago I bought a development kit of &lt;a href="http://www.silego.com/index.php?page=greenpak"&gt;GreenPak from Silego&lt;/a&gt;. The parts appear to be very powerful for simple control tasks, I have a small Switch Mode Power Supply project but I wanted to try it out on a breadboard before committing to a full PCB.&lt;br /&gt;The parts are tiny tiny and an adapter to DIP 8 was needed. I sent my mini design to &lt;a href="http://dorkbotpdx.org/wiki/pcb_order"&gt;lean&lt;/a&gt; and my boards are here! Here's the result!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-UXyOYoYzHuM/TnOJcqtCOLI/AAAAAAAAALU/lJF-EayD2q0/s1600/P1050316.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-UXyOYoYzHuM/TnOJcqtCOLI/AAAAAAAAALU/lJF-EayD2q0/s320/P1050316.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5653013082872625330" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6963945424566088100?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6963945424566088100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6963945424566088100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6963945424566088100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6963945424566088100'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/09/new-boards-arrived.html' title='New Boards arrived!'/><author><name>J Silva</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://2.bp.blogspot.com/-UXyOYoYzHuM/TnOJcqtCOLI/AAAAAAAAALU/lJF-EayD2q0/s72-c/P1050316.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-9138567454019385411</id><published>2011-08-01T22:09:00.005+02:00</published><updated>2011-09-03T21:30:29.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motto'/><category scheme='http://www.blogger.com/atom/ns#' term='stuff'/><title type='text'>We're back!</title><content type='html'>Sorry all, we've been on Holidays and now we're back.&lt;br /&gt;&lt;br /&gt;I have a couple of projects going on but one is "secret" and the other is... trash... I'm trying to make &lt;span style="font-style: italic;"&gt;art&lt;/span&gt; out of &lt;span style="font-style:  italic;"&gt;trash &lt;/span&gt; (or making less valuable trash out of more valuable trash).&lt;br /&gt;The &lt;span style="font-style: italic;"&gt;secret&lt;/span&gt; is something for my loved one (that's why it is secret), the &lt;span style="font-style: italic;"&gt;trash&lt;/span&gt; one is a mini-wind generator, another of the projects involves LEDs, batteries, Solar cells and a jam jar and some other bits and pieces... Something like this.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.instructables.com/image/F4KR1V7VS4EUR4U6HE/Home-made-Sun-Jar.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 560px; height: 420px;" src="http://www.instructables.com/image/F4KR1V7VS4EUR4U6HE/Home-made-Sun-Jar.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've noticed that postings are running low, at one per month.. I'll try to increase that this month to two... as any statistician would tell you, "it's a 100% increase"!! (and this one doesn't count, I promise!)&lt;br /&gt;&lt;br /&gt;Some other projects in my head are around analog electronics, I've studying a lot of transistor circuits (band-gaps, differential pairs, current sources) and special op-amp circuits (integrators, analog computers). I'll try to post something on the matter later.&lt;br /&gt;&lt;br /&gt;I've been unable to stick with the "cult of done" motto, 15 days is almost nothing in my development cycles. I have a lot of "diaper change" in between and it's hard to get some spare time during the week.&lt;br /&gt;&lt;br /&gt;Meanwhile I also lost my beloved Rotring Quattro... two months after &lt;a href="http://bitsnbikes.blogspot.com/2011/04/pen-life-rotring-quattro.html"&gt;the blog post&lt;/a&gt;! Now I can't get used to the new one... it was &lt;span style="font-style: italic;"&gt;my&lt;/span&gt; precious... I got a "&lt;span style="font-style: italic;"&gt;cheap&lt;/span&gt;" &lt;span style="font-style: italic;"&gt;(read not cheap)&lt;/span&gt; &lt;a href="http://www.google.com/search?q=Parker+Executive+Matte+Black&amp;amp;hl=en&amp;amp;tbs=shop%3A1&amp;amp;aq=f"&gt;Parker Multi-pen Executive&lt;/a&gt; for replacement... The &lt;a href="http://www.google.com/search?q=Lamy+4pen&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a#q=Lamy+4pen&amp;amp;hl=en&amp;amp;client=firefox-a&amp;amp;hs=8af&amp;amp;rls=org.mozilla:en-US:official&amp;amp;prmd=ivns&amp;amp;source=lnms&amp;amp;tbm=shop&amp;amp;ei=kg83TpzVA8Ki-gaTkPD-DA&amp;amp;sa=X&amp;amp;oi=mode_link&amp;amp;ct=mode&amp;amp;cd=5&amp;amp;ved=0CBoQ_AUoBA&amp;amp;bav=on.2,or.r_gc.r_pw.&amp;amp;fp=e951f071ae6d2807&amp;amp;biw=1024&amp;amp;bih=634"&gt;Lamy 4pen&lt;/a&gt; only comes with a 0.7mm pencil and I can't write with those, they're just too thick, kind of grocer's pencil...&lt;br /&gt;&lt;br /&gt;Well back to work and I'll write soon..&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-9138567454019385411?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/9138567454019385411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=9138567454019385411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9138567454019385411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9138567454019385411'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/08/were-back.html' title='We&apos;re back!'/><author><name>J Silva</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></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6353426411296975564</id><published>2011-07-02T23:06:00.003+02:00</published><updated>2011-07-02T23:36:22.868+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 with a teletype</title><content type='html'>Recently I bought a Teletype (a Texas Silent 700 model 703), it is special as it uses thermal paper and it is surprisingly silent :-).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-NrRDmkrutfo/Tg-NYzrTrbI/AAAAAAAAALI/n1syp76528A/s1600/P1050131_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-NrRDmkrutfo/Tg-NYzrTrbI/AAAAAAAAALI/n1syp76528A/s320/P1050131_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5624869916937268658" border="0" /&gt;&lt;/a&gt;I installed the light guides on the SBC6120 indicators, so now they are much more visible.&lt;br /&gt;&lt;br /&gt;I had to replace an internal dip-switch and find a power supply for it, unfortunately I could not find a suitable power connector, for now it is connected with a pair of crocodile clips. The power input is AC-Earth-AC and a suitable voltage is from 20V to 26V, the current is about 1.5A.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-CuqoPPdwLEw/Tg-NYbbhnyI/AAAAAAAAAK4/U6MyxhtkUIA/s1600/P1050123_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-CuqoPPdwLEw/Tg-NYbbhnyI/AAAAAAAAAK4/U6MyxhtkUIA/s320/P1050123_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5624869910428622626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The serial connection is at 300Baud surprisingly slow... 30 cps... This was how computers were operated before there were VDU (or CRTs as you prefer), it is very interesting. Next I'll try to install the Adventure game... The serial cable that came with the machine had to be tweaked in order to make it work with the SBC6120.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-lC1AW8o2Ty8/Tg-NYhBj-WI/AAAAAAAAALA/GG77ROfb688/s1600/P1050128_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/-lC1AW8o2Ty8/Tg-NYhBj-WI/AAAAAAAAALA/GG77ROfb688/s320/P1050128_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5624869911930337634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is a clip of theSBC6120 booting connected to the TI Silent.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-b24694b6ecb20bbb" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v12.nonxt8.googlevideo.com/videoplayback?id%3Db24694b6ecb20bbb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330424315%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1BA90761F559FF7193C93160AC291590DC5A4C35.144B310E9C82A03093EF5625B516960D409605B0%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db24694b6ecb20bbb%26offsetms%3D5000%26itag%3Dw160%26sigh%3DVr_MOYqovmLMJ5MMdxspfIg_b-I&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v12.nonxt8.googlevideo.com/videoplayback?id%3Db24694b6ecb20bbb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330424315%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1BA90761F559FF7193C93160AC291590DC5A4C35.144B310E9C82A03093EF5625B516960D409605B0%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Db24694b6ecb20bbb%26offsetms%3D5000%26itag%3Dw160%26sigh%3DVr_MOYqovmLMJ5MMdxspfIg_b-I&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&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/1311381797415896809-6353426411296975564?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6353426411296975564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6353426411296975564' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6353426411296975564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6353426411296975564'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/07/sbc6120-with-teletype.html' title='SBC6120 with a teletype'/><author><name>J Silva</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://4.bp.blogspot.com/-NrRDmkrutfo/Tg-NYzrTrbI/AAAAAAAAALI/n1syp76528A/s72-c/P1050131_1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-352785193582246531</id><published>2011-05-09T21:57:00.010+02:00</published><updated>2011-05-29T15:44:07.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 - Project Done!</title><content type='html'>It is done! My SBC6120 finally has a case that I am proud of. It still needs some finishing touches (namely some light pipes for the LEDS on the board to the front panel), but that's about it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-5NqyslCUXuw/TeJErNEYTTI/AAAAAAAAAJ8/ypLuHyXyJ18/s1600/P1040437_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-5NqyslCUXuw/TeJErNEYTTI/AAAAAAAAAJ8/ypLuHyXyJ18/s320/P1040437_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123594690153778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since I haven't used it for quite some time I forgot some of the "intricate" details of working with it:&lt;br /&gt;- I lost an incredible amount of time in a hardware bug that did not exist, simply because I forgot that the communication interface is 9600-7E1 and NO handshakes (hardware or XON-XOFF)... Minicom in linux installs default with hardware handshake, you see the boot message but you cannot write anything...&lt;br /&gt;- and &lt;a href="http://en.wikipedia.org/wiki/OS/8"&gt;OS/8&lt;/a&gt; only works with CAPITALS... (This is not a MAC OS8!, Mac friends look elsewhere).&lt;br /&gt;To fit everything inside the Hammond box, I built a base in 1.5mm plastic and glued nylon screws upside down, these would fix the SBC on the lower part of the case, I've &lt;a href="http://bitsnbikes.blogspot.com/2011/04/sbc6120-power-supply-board.html"&gt;built a power supply board&lt;/a&gt; to convert 12V in the 5V needed for the SBC, finally I designed custom front and back panels.&lt;br /&gt;I've built four prototypes of the front panel (in paper) and glued them to 2mm thick foam to get a look and feel of the panels before committing to fabrication. I used the services of &lt;a href="http://www.schaeffer-ag.de/"&gt;Schaeffer AG&lt;/a&gt; for milling the front and rear panel, their (freely distributed) CAD program is actually very nice and it is available for linux! (I had some problems with sending the design but the drawing was actually all done in linux). It isn't cheap, but sure is top-quality.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-qkQjXKFr12M/TeJE7nO0BOI/AAAAAAAAAKs/28Ac8_rWKtY/s1600/P1040452_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-qkQjXKFr12M/TeJE7nO0BOI/AAAAAAAAAKs/28Ac8_rWKtY/s320/P1040452_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123876591142114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The reset button does not protrude to the external of the box as intended, but having a "insert pencil here to reset" hole is not so bad (might even be a feature :-). Here you can also see why there's a need for a light pipe.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-KhR6D9o2RBc/TeJE7OFs8MI/AAAAAAAAAKk/tz9ewIDjMNM/s1600/P1040448_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-KhR6D9o2RBc/TeJE7OFs8MI/AAAAAAAAAKk/tz9ewIDjMNM/s320/P1040448_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123869842043074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-fbBUXVDjMX4/TeJEsBsRMzI/AAAAAAAAAKc/FSbrao1_nG8/s1600/P1040445_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-fbBUXVDjMX4/TeJEsBsRMzI/AAAAAAAAAKc/FSbrao1_nG8/s320/P1040445_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123608816104242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The slots in the back are enough for cooling the SBC6120 and the 3.5'' IDE drive, it takes about six hours to serially download two disk images, the boards and case never exceeded ambient temp by more than 20C.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-yF5Sz2NmHTA/TeJErWRvFKI/AAAAAAAAAKE/HnSL81ZY-II/s1600/P1040439_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-yF5Sz2NmHTA/TeJErWRvFKI/AAAAAAAAAKE/HnSL81ZY-II/s320/P1040439_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123597162091682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The whole case is quite small (for a PDP-8), here's a top view, a fair view of what's inside is in &lt;a href="http://bitsnbikes.blogspot.com/2010/06/sbc6120-casing-ii-and-power-supply.html"&gt;an older post&lt;/a&gt; and &lt;a href="http://bitsnbikes.blogspot.com/2011/04/sbc6120-power-supply-board.html"&gt;here&lt;/a&gt;. The paper sheet below is A4 size.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-9VspnZnEWYs/TeJErgceEUI/AAAAAAAAAKM/jy3BE_FfnBs/s1600/P1040440_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-9VspnZnEWYs/TeJErgceEUI/AAAAAAAAAKM/jy3BE_FfnBs/s320/P1040440_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123599891468610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The final photo just like in Sparetimegizmos is my the SBC6120 with an HP-16C side-by-side, just like the &lt;a href="http://www.sparetimegizmos.com/Hardware/images/SBC6120%20%28VCFe%20Model%29.jpg"&gt;"inspirational photo"&lt;/a&gt; from their site. Yes, the calculator is more expensive than the computer :-).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-bb9Aw5lvZRM/TeJEryx7S8I/AAAAAAAAAKU/-V-DN_UdJMo/s1600/P1040443_1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-bb9Aw5lvZRM/TeJEryx7S8I/AAAAAAAAAKU/-V-DN_UdJMo/s320/P1040443_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5612123604813302722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next... Install some adventure games... like &lt;a href="http://www.rickmurphy.net/adventure.html"&gt;this one&lt;/a&gt;... :-)&lt;br /&gt;&lt;joke&gt;what's the use of a computer other than entertainment.... &lt;/joke&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-352785193582246531?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/352785193582246531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=352785193582246531' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/352785193582246531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/352785193582246531'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/05/sbc6120-project-done.html' title='SBC6120 - Project Done!'/><author><name>J Silva</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://1.bp.blogspot.com/-5NqyslCUXuw/TeJErNEYTTI/AAAAAAAAAJ8/ypLuHyXyJ18/s72-c/P1040437_1.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7161948100089170269</id><published>2011-04-10T18:13:00.005+02:00</published><updated>2011-04-10T20:21:09.262+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motto'/><title type='text'>The Calculator is dead, long live the Calculator...</title><content type='html'>My &lt;a href="http://bitsnbikes.blogspot.com/2011/04/sbc6120-power-supply-board.html"&gt;eyesight problem&lt;/a&gt; triggered a new blog motto... I must stay away from the computer when I'm "dedicated" to my home projects (or at least reduce the time to a minimum).&lt;br /&gt;Here it comes "Never again use a Spreadsheet for designing power electronics"! I must admit that &lt;span style="font-weight:bold;"&gt;for work&lt;/span&gt; it is the best thing available,test scenarios, test components, circuit configurations everything numerical at a touch of a "button". But I don't need that, this is supposed to be for &lt;span style="font-weight:bold;"&gt;fun&lt;/span&gt;. I don't need speed of calculus, I want to keep learning the "Art". From now on calculations will be displayed scanned from the squared paper (I still have to find a scanner though)... And these two will have a bit more work...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-7Nl4rfMYDYE/TaHsXWp8epI/AAAAAAAAAJ0/EYjrf5ZHNUM/s1600/P1040257.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-7Nl4rfMYDYE/TaHsXWp8epI/AAAAAAAAAJ0/EYjrf5ZHNUM/s320/P1040257.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5594012098133523090" /&gt;&lt;/a&gt;&lt;br /&gt;Thinking back, how many times did I use a graphics calculator for a graphics problem? I don't remember, but not many...&lt;br /&gt;I did love my HP48 in the last two years of university (before that I had a TI 57 II), I had to work for a while to pay for it and my father helped out with 50%.&lt;br /&gt;Once at an exam, the teacher that saw my Texas classified it as "a Grocer's calculator", that was really embarrassing and this was in 1997!(most of my colleagues had either an 48S, the 48SX or the Casio Computer 850??)... &lt;br /&gt;The HP32S was bought recently in Epay, to get something a bit more "portable" and keep "playing" outside...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7161948100089170269?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7161948100089170269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7161948100089170269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7161948100089170269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7161948100089170269'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/04/calculator-is-dead-long-live-calculator.html' title='The Calculator is dead, long live the Calculator...'/><author><name>J Silva</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://1.bp.blogspot.com/-7Nl4rfMYDYE/TaHsXWp8epI/AAAAAAAAAJ0/EYjrf5ZHNUM/s72-c/P1040257.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3572875872834815006</id><published>2011-04-09T21:10:00.009+02:00</published><updated>2011-04-10T21:07:10.828+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stuff'/><title type='text'>Pen Life - Rotring Quattro</title><content type='html'>When these pens came out I could not afford them, they costed about 50EUR (in today's money something like 80EUR) and they looked great... Geeky and Engineer like. As soon as I started working and received my first engineering salary I bought one. Recently I found one (new old stock) in Epay... here are the two, side by side, check the differences...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Deakjj0YImI/TaGZj4mHVXI/AAAAAAAAAI8/c7SLlkaFmMc/s1600/P1040216.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/-Deakjj0YImI/TaGZj4mHVXI/AAAAAAAAAI8/c7SLlkaFmMc/s320/P1040216.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5593921053937587570" /&gt;&lt;/a&gt;&lt;br /&gt;There's another difference that I didn't even remember... when I bought it the finishing was black matte and kind of "rough" or "sand" paint, with 15 years of use that is all gone.&lt;br /&gt;One not so good side of the pen was that the main writing refill would not last long enough (during meetings I tended to write a lot, not anymore though) and the marker pen was "inconsistent" when you wanted it to write. (here's a product review for a product that does not exist)...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3572875872834815006?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3572875872834815006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3572875872834815006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3572875872834815006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3572875872834815006'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/04/pen-life-rotring-quattro.html' title='Pen Life - Rotring Quattro'/><author><name>J Silva</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://2.bp.blogspot.com/-Deakjj0YImI/TaGZj4mHVXI/AAAAAAAAAI8/c7SLlkaFmMc/s72-c/P1040216.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3158631526027243776</id><published>2011-04-09T19:10:00.005+02:00</published><updated>2011-04-10T14:28:33.173+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>New Crops 2011</title><content type='html'>Spring is up, time for some new balcony crops! This year, broccoli, turnips and carrots.. They're already sprouting (due to the fantastic weather we've been having in The Hague...&lt;br /&gt;These are my carrots for this year (the clay ball is 1cm diameter).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-giRLL0qk0l0/TaGcaVAgYtI/AAAAAAAAAJE/E3IG8WvarpE/s1600/P1040231.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-giRLL0qk0l0/TaGcaVAgYtI/AAAAAAAAAJE/E3IG8WvarpE/s320/P1040231.JPG" alt="" id="BLOGGER_PHOTO_ID_5593924188300665554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Just noticed that I need to clean the lens, probably the "little camera devil" touched it...&lt;br /&gt;This is a beetroot that survived the winter.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-MbjeF1KVKhQ/TaGcalIhjJI/AAAAAAAAAJM/MMd8F79Wm_c/s1600/P1040232.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-MbjeF1KVKhQ/TaGcalIhjJI/AAAAAAAAAJM/MMd8F79Wm_c/s320/P1040232.JPG" alt="" id="BLOGGER_PHOTO_ID_5593924192629263506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hopefully it will grow to "edible" size in these next few months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3158631526027243776?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3158631526027243776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3158631526027243776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3158631526027243776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3158631526027243776'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/04/new-crops-2011.html' title='New Crops 2011'/><author><name>J Silva</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://1.bp.blogspot.com/-giRLL0qk0l0/TaGcaVAgYtI/AAAAAAAAAJE/E3IG8WvarpE/s72-c/P1040231.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6824602309853838933</id><published>2011-04-09T19:09:00.008+02:00</published><updated>2011-04-10T14:46:40.727+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 - Power Supply Board</title><content type='html'>It had been planed for &lt;a href="http://bitsnbikes.blogspot.com/2010/06/sbc6120-casing-ii-and-power-supply.html"&gt;ages&lt;/a&gt;, but I never had the time or a technical "consideration" delayed me. I finally decided to &lt;font style="font-weight: bold;"&gt;just do it&lt;/font&gt; (after reading the &lt;a href="http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html"&gt;"cult of done" manifesto&lt;/a&gt;), the board with the Laser Toner Transfer and HEMA inkjet photopaper, this was probably the biggest board and with the least detail I've ever done (160x120mm).&lt;br /&gt;&lt;br /&gt;The board needed only to fix the connectors, the power switch and a switching power supply. I didn't have much space available on the top side, so I went through my "pile of components" and found a couple of single IC switching power supplies (the National LM2575-5V), I also had a SMD version of it (or so I thought) and some SMD Schottky diodes. The board is also used to mechanically fix the 3.5 inch Harddrive.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GbPjVnBX0HM/TaGjbbEkL6I/AAAAAAAAAJc/mppDWdRLtic/s1600/P1040235.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-GbPjVnBX0HM/TaGjbbEkL6I/AAAAAAAAAJc/mppDWdRLtic/s320/P1040235.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5593931903689568162" /&gt;&lt;/a&gt;&lt;br /&gt;The schematic was simple, just the switch, the connectors and the switcher, I added a turn on delay to let everything power up slowly (see the LM2575 datasheet).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Y4lzyBKufgA/TaGjbyElpKI/AAAAAAAAAJs/4xWcBhIpwfM/s1600/P1040254.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/-Y4lzyBKufgA/TaGjbyElpKI/AAAAAAAAAJs/4xWcBhIpwfM/s320/P1040254.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5593931909863679138" /&gt;&lt;/a&gt;&lt;br /&gt;The power switch (and the lever) are from C&amp;K, but I had to buy an "old lever" as the new levers are much wider than what I could "afford" in terms of space on the front panel (there's no bezel for this older one though).&lt;br /&gt;For the PCB I had some problems, but mostly mechanical. You can only see them when I show the pictures of the completed unit. I had to fit a 10mm inductor in a 10mm space and a 3.5 inch harddrive in 3.5inch (minus 1mm space, there's a screw on the harddrive I had to remove, otherwise the top would not close.&lt;br /&gt;&lt;br /&gt;This is probably the only reason why I'll do boards at home, it must be &lt;span style="font-weight: bold;"&gt;a big board &lt;/span&gt;(&amp;gt;160mmx100mm), &lt;span style="font-weight: bold;"&gt;few tracks&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;single side&lt;/span&gt;, if it misses &lt;span style="font-weight: bold;"&gt;one&lt;/span&gt; of the tests, I'll go for a Fab. board.&lt;br /&gt;After assembly... it didn't work... A quick trouble shooting revealed the cause... poor eyesight.&lt;br /&gt;I had a LM2595S not the original LM2795 with which I drew the schematic and PCB. The pinout is &lt;span style="font-weight: bold;"&gt;very different&lt;/span&gt;. Then I found out I had &lt;span style="font-weight: bold;"&gt;no&lt;/span&gt; LM2975 SMD version. I had to improvise, a through hole package with bent leads and plenty of flux later...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-LK_O6l6onQI/TaGjbiXN1WI/AAAAAAAAAJk/-bxwWUwPkXE/s1600/P1040236.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-LK_O6l6onQI/TaGjbiXN1WI/AAAAAAAAAJk/-bxwWUwPkXE/s320/P1040236.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5593931905646843234" /&gt;&lt;/a&gt;&lt;br /&gt;After that mishap, I mounted everything back up and it worked. I formatted the drive and downloaded a disk image and now my SBC6120 boots!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-LvrGuGyouLo/TaGjbDqR2hI/AAAAAAAAAJU/8uYm86JsFLw/s1600/P1040234.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-LvrGuGyouLo/TaGjbDqR2hI/AAAAAAAAAJU/8uYm86JsFLw/s320/P1040234.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5593931897405299218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was done in two weeks! I'll try to keep this "cult of done" thing going on (but some of the tasks need to be broken in more than a couple of weekends).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6824602309853838933?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6824602309853838933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6824602309853838933' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6824602309853838933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6824602309853838933'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/04/sbc6120-power-supply-board.html' title='SBC6120 - Power Supply Board'/><author><name>J Silva</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://1.bp.blogspot.com/-GbPjVnBX0HM/TaGjbbEkL6I/AAAAAAAAAJc/mppDWdRLtic/s72-c/P1040235.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4973881602546294343</id><published>2011-03-05T20:44:00.005+01:00</published><updated>2011-03-13T19:25:48.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Tot Ziens Stuut en Bruin</title><content type='html'>Last 26th of February one of the most iconic Electronics shops in the Hague closed its doors after 63 years... &lt;a href="http://www.stuutenbruin.nl/"&gt;Stuut en Bruin&lt;/a&gt; you'll be missed. After two months open in 2011 (and some nice IC sales), they finally gave in to modern trends and closed the shop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-7vixoHOBRMs/TX0JDHT-oaI/AAAAAAAAAIM/u8TQoz7rask/s1600/2011-02-26_12-18-13.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/-7vixoHOBRMs/TX0JDHT-oaI/AAAAAAAAAIM/u8TQoz7rask/s320/2011-02-26_12-18-13.jpg" alt="" id="BLOGGER_PHOTO_ID_5583629062116385186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The picture above was take on the last Saturday, where the sign "there's still 1 day" was on the window.&lt;br /&gt;&lt;br /&gt;Here is the google.maps picture&lt;br /&gt;&lt;iframe marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=prinsengracht,+den+haag&amp;amp;aq=&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=31.23349,56.513672&amp;amp;ie=UTF8&amp;amp;hq=prinsengracht,&amp;amp;hnear=The+Hague,+Den+Haag,+South+Holland,+The+Netherlands&amp;amp;ll=52.075009,4.307381&amp;amp;spn=0.036124,0.062569&amp;amp;layer=c&amp;amp;cbll=52.07441,4.306338&amp;amp;panoid=6q05aF46kn7IvcT4nLPK3Q&amp;amp;cbp=12,163.27,,0,3.34&amp;amp;output=svembed" frameborder="0" height="350" scrolling="no" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=prinsengracht,+den+haag&amp;amp;aq=&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=31.23349,56.513672&amp;amp;ie=UTF8&amp;amp;hq=prinsengracht,&amp;amp;hnear=The+Hague,+Den+Haag,+South+Holland,+The+Netherlands&amp;amp;ll=52.075009,4.307381&amp;amp;spn=0.036124,0.062569&amp;amp;layer=c&amp;amp;cbll=52.07441,4.306338&amp;amp;panoid=6q05aF46kn7IvcT4nLPK3Q&amp;amp;cbp=12,163.27,,0,3.34" style="color: rgb(0, 0, 255); text-align: left;"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;We are now left with two other shops that are more focused towards other fields (&lt;a href="http://www.radio-ster.nl/"&gt;satelite and consumer electronics&lt;/a&gt; and &lt;a href="http://www.radiotwenthe.nl/"&gt;electronic/electric spares&lt;/a&gt;).&lt;br /&gt;It is sad... but life goes on...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4973881602546294343?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4973881602546294343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4973881602546294343' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4973881602546294343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4973881602546294343'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/03/tot-ziens-stuut-en-bruin.html' title='Tot Ziens Stuut en Bruin'/><author><name>J Silva</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://2.bp.blogspot.com/-7vixoHOBRMs/TX0JDHT-oaI/AAAAAAAAAIM/u8TQoz7rask/s72-c/2011-02-26_12-18-13.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3404371131052702629</id><published>2011-02-05T20:46:00.005+01:00</published><updated>2011-03-13T19:34:32.519+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Chillies in the Wok</title><content type='html'>Finally it was time to eat my first chilli of the year! I let my jalapeno/piri-piri hybrid ripe until it was almost all red and then... to the pan with it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-3TgCIZogmCA/TX0MycN-ScI/AAAAAAAAAIc/LLO52kiaStg/s1600/2011-01-30_14-07-06.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-3TgCIZogmCA/TX0MycN-ScI/AAAAAAAAAIc/LLO52kiaStg/s320/2011-01-30_14-07-06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5583633173717076418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It was not very big nor powerful, but a decent chilli!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-2HcVVbrz9Zo/TX0My8Uq9KI/AAAAAAAAAIk/DiX1-LqBRIo/s1600/2011-01-30_14-08-03.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-2HcVVbrz9Zo/TX0My8Uq9KI/AAAAAAAAAIk/DiX1-LqBRIo/s320/2011-01-30_14-08-03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5583633182335104162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sliced and Wok with it...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-r4gL89DfHJg/TX0MzLuhmpI/AAAAAAAAAIs/TteZMzIXq50/s1600/2011-01-30_14-26-17.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-r4gL89DfHJg/TX0MzLuhmpI/AAAAAAAAAIs/TteZMzIXq50/s320/2011-01-30_14-26-17.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5583633186470075026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the dish next to the little Chilies vase...&lt;br /&gt;Shrimps, Chillies, Peas and Udon noodles in the Wok are always a winning combination... Om nom nom!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3404371131052702629?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3404371131052702629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3404371131052702629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3404371131052702629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3404371131052702629'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/02/chillies-in-wok.html' title='Chillies in the Wok'/><author><name>J Silva</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/-3TgCIZogmCA/TX0MycN-ScI/AAAAAAAAAIc/LLO52kiaStg/s72-c/2011-01-30_14-07-06.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6155951677086058085</id><published>2011-02-05T20:42:00.005+01:00</published><updated>2011-03-13T21:04:11.249+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>SolarLight (9) - Powersaving Software</title><content type='html'>"It ain't over till it's over"... After a week of very cloudy days and mostly no charge, I found out that I needed to save more power and provide some late "adjustments".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-P_0z-NFWNqo/TX0SSL0geHI/AAAAAAAAAI0/O0nMpdFvu0w/s1600/2011-02-17_17-11-09.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/-P_0z-NFWNqo/TX0SSL0geHI/AAAAAAAAAI0/O0nMpdFvu0w/s320/2011-02-17_17-11-09.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5583639216629250162" /&gt;&lt;/a&gt;&lt;br /&gt;The findings and solutions were:&lt;br /&gt;- having a status output every watchdog reset was too much, too often (once every 8 seconds). A more reasonable status output is twice every minute. Displaying the status spent about 0.5% of the total battery capacity, but after an almost full discharge the lamp would only operate for another 2 or 3 days without recharging (i.e. a week of cloudy days was "deadly").&lt;br /&gt;- even during the status display the CPU could be put to sleep during the status output (without using a timer but the watchdog).&lt;br /&gt;- the detection of an external supply had to be changed from above 4.2V to above 4.0V, my external adapter would "kneel" to this voltage when the batteries were depleted.&lt;br /&gt;- the output power levels function of the battery voltage also had to be adapted, even at the lowest level (around 200mA output) the battery voltage "kneels" quite deeply. So in order to take the most of the batteries I reduced the power output once the batteries are in the lowest charge (below 1.1V per element).&lt;br /&gt;- another finding (with no solution as of yet) was that with AVRDUDE I cannot program the oscillator calibration value in FLASH (or EEPROM) automatically (as in AVR Studio). I'm not very "experienced" in script programming or makefiles with scripts but it must be possible. I need to program the flash with the code, then read the oscillator value and finally overwrite the flash (or write in a EEPROM) position where the code is getting this value. Since my program depends on this value for the switching power supply, I cannot be too away from the standard frequency of 1.6MHz.&lt;br /&gt;Meanwhile I also updated my system to OpenSUSE 11.3 (yes, I know the new one is out... but I prefer "stability" over "bleeding edge").&lt;br /&gt;The new code is pasted &lt;a href="http://pastebin.com/gcAy0kwe"&gt;here&lt;/a&gt;&lt;br /&gt;Ta Da for now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6155951677086058085?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6155951677086058085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6155951677086058085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6155951677086058085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6155951677086058085'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/02/solarlight-9-powersaving-software.html' title='SolarLight (9) - Powersaving Software'/><author><name>J Silva</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://4.bp.blogspot.com/-P_0z-NFWNqo/TX0SSL0geHI/AAAAAAAAAI0/O0nMpdFvu0w/s72-c/2011-02-17_17-11-09.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1004142954686292772</id><published>2011-01-15T19:35:00.009+01:00</published><updated>2011-01-25T21:45:09.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>SolarLight (8) - Plastic Fixing Rig et altri.</title><content type='html'>In the new year I decided to further develop my SolarLight, I had to build a rigid rig to hold the light over my peppers vase. After some thought I decided to use plastic (polystyrol) to keep it lightweight. I used standard PVC glue (used for water/sewage pipes or spudguns) and Polystyrene.&lt;br /&gt;To cut the boards I used standard hand tools (hand saw, metal file and sandpaper), thinking back I would be better off if I had used a table saw... With a good saw and speed setting I think I could do it all in one. I don't have a table saw, nor the space for it, maybe I'll use the Dremel mini-saw adaptor (&lt;a href="http://www.dremeleurope.com/dremelocs-nl/Product.jsp;jsessionid=01EDEE8AD594EDE49B29E86EB9EE5E06.s032?&amp;amp;ccat_id=528&amp;amp;prod_id=236"&gt;Dremel 670&lt;/a&gt;) or one of the &lt;a href="http://www.proxxontools.com/store/pc/viewPrd.asp?idcategory=29&amp;amp;idproduct=60"&gt;Proxxon mini/micro table saws&lt;/a&gt;.&lt;br /&gt;The glueing of the parts was fast and clean, if you do something like this remember to do it out in the open or in a well ventilated place, toxic fumes come out while the parts are being chemically soldered. I found most of the plastic sheets and profiles &lt;a href="http://www.houtloods.nl/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TTyX9OGVrNI/AAAAAAAAAIA/yqVdL8QPRTU/s1600/P1030890.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TTyX9OGVrNI/AAAAAAAAAIA/yqVdL8QPRTU/s320/P1030890.JPG" alt="" id="BLOGGER_PHOTO_ID_5565490317535587538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I started out by trying one of the few available 2D-CAD packages for linux, I used &lt;a href="http://www.qcad.org/qcad_downloads.html"&gt;QCAD&lt;/a&gt; community edition that had a pre-compiled for my OpenSuse11.3 in the contrib repository. Learning a new tool has always it's steep learning curves, but I got what I wanted. I will try to use it for my future mechanical drawings of cases and front panels.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TTyX8OACxXI/AAAAAAAAAHw/UTRPN9upbKI/s1600/cuts1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TTyX8OACxXI/AAAAAAAAAHw/UTRPN9upbKI/s320/cuts1.png" alt="" id="BLOGGER_PHOTO_ID_5565490300329313650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TTyX7pDfUII/AAAAAAAAAHo/g3QIZk0KV6k/s1600/snapshot6.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TTyX7pDfUII/AAAAAAAAAHo/g3QIZk0KV6k/s320/snapshot6.png" alt="" id="BLOGGER_PHOTO_ID_5565490290411655298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After the assembly I noticed that I forgot some openings for the LED connector and fixing, so it is just hanging for now. I also changed the battery pack I had for a 3x AA NiMH 2300mAh batteries. This was a &lt;span style="font-weight: bold;"&gt;mistake&lt;/span&gt;, the &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=869-1017-ND"&gt;solar cell &lt;/a&gt;was selected based on a battery capacity of around 700mAh (an old NiCd pack I had laying around) and size of the board. Although with the batteries charged I got a good hour and a half of light, the next recharge period was a full week... from &lt;a href="http://talkingelectronics.com/projects/ChargingNiMH/ChargingNiMH.html"&gt;this page I would need 40 hours&lt;/a&gt; of sunlight to fully charge the battery as the solar panel output current is below the C/40 ratio... Taking into account that the &lt;a href="http://uk.weather.com/climate/sunRiseSunSet-Amsterdam-NLXX0002?month=12"&gt;average daily sunlight time of about 8h&lt;/a&gt;,(and in my south facing flat it's reduced to 4-5), that in Holland the sky is mostly cloudy for days in a row, that the solar cell outputs roughly 15mA with direct sunlight, I could expect to have a fully charged battery (with the NiMH pack) every two weeks.. With the NiCd I could expect once two sunny days (more or less what I was looking for). So I have to go back to smaller batteries, probably another junk 3x AAA NiCd pack I have around.&lt;br /&gt;I also roughly measured the efficiency of power supply and made some tests. The maximum output current I managed was 700mA, more than that and the battery voltage would hit the under voltage protection I had built in, this is about 50% of the LEDs Power. I also had to add a heatsink to the LED as its temperature was rapidly increasing beyond the "can you touch it" capability (a rule of thumb I learned...). So I used a stable DC power supply and varied the input voltage, input current, output voltage and output current at about 25% LED power level (3.2V@300mA). The results are a bit disappointing, the efficiency is about 50% from the calculated 70%. I don't think the losses are semiconductor related but mostly the passive components (inductor resistance and capacitor inductance and resistance). The good point is that output voltage is mostly independent of input voltage...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TTyX8iaK52I/AAAAAAAAAH4/RehFTeARHfg/s1600/efficency.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TTyX8iaK52I/AAAAAAAAAH4/RehFTeARHfg/s320/efficency.png" alt="" id="BLOGGER_PHOTO_ID_5565490305807607650" border="0" /&gt;&lt;/a&gt;I also did some improvements on the code and ordered some new SMD components, I'm planing on building a SMD version and extend the project to a bike light (with the electronics inside the lamp's casing), we'll see how that goes, later I'll publish the updated software.&lt;br /&gt;I included a graceful degradation system to reduce the output power as the battery depletes its charge, the processor now sleeps between ADC conversions both to save power and reduce noise (I cannot disable the Timer as the PWM must run), I changed the charging process but not counting the hours of charge but only by checking the battery voltage as this allows an external charger (not sun) and finally I converted the code to be compile in linux (avr-gcc/gas).&lt;br /&gt;It's a long post and I have some more post hanging in for further editing.. I'll try to keep up with one a week and I'm already falling behind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1004142954686292772?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1004142954686292772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1004142954686292772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1004142954686292772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1004142954686292772'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2011/01/solarlight-8-plastic-fixing-rig-et.html' title='SolarLight (8) - Plastic Fixing Rig et altri.'/><author><name>J Silva</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://4.bp.blogspot.com/_dS8vH8QMm5Y/TTyX9OGVrNI/AAAAAAAAAIA/yqVdL8QPRTU/s72-c/P1030890.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8418744739836028389</id><published>2010-12-31T00:00:00.002+01:00</published><updated>2010-12-31T19:33:16.447+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>New Year's resolutions...</title><content type='html'>This year is coming to an end and this will be my last post (this year). I didn't post as many times as I wanted (I planned once a week, I'm close to once every two weeks), but that's the way life goes.&lt;br /&gt;Most projects are "work in progress", so these are in plan for next year:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;in the &lt;a href="http://bitsnbikes.blogspot.com/search/label/m68k"&gt;mini68k&lt;/a&gt; I wanted to finish a working gdb-stub before advancing to the CP/M-68K code. I finally managed to make it work, but there were some bumps in the way. The way ahead is not without it's perils, to use gdb and CP/M at the same time I might need an extra serial port for which I have no breadboard space. I'll need to draw the schematics, possibly make a PCB,  make the SDCard interface work and then port CP/M to it;&lt;/li&gt;&lt;li&gt;in the &lt;a href="http://bitsnbikes.blogspot.com/search/label/8085"&gt;mini85&lt;/a&gt; I wandered off in some hardware questions (casing, with a floppy or without, processor speed, with DMA, cheap DMA, video, expansion, connectors, front panel, size of RAM, SD Card, SD Card removable, Flash or Eprom, serial ports, parallel port...). I'll need to settle down on the hardware, draw schematics, make PCB, fit in a case and close it;&lt;/li&gt;&lt;li&gt;in the &lt;a href="http://bitsnbikes.blogspot.com/search/label/Solarlight"&gt;Solarlight&lt;/a&gt; project I still want to fit it neatly on top of my Pepper pot and to tune some more code, also add a larger heatsink for the LED. I also plan to do a new SMD PCB and bake the components in a SMD oven. Further, I'd like to build a bike light with the same circuit but no solar charger. I'll need to get the final schematic, draw the SMD PCB for solarlight and bikelight and make the code linux-buildable and downloadable;&lt;/li&gt;&lt;li&gt;in the &lt;a href="http://bitsnbikes.blogspot.com/search/label/SBC6120"&gt;SBC6120&lt;/a&gt; project I'll need to decide on how to fit everything inside the box and fix the harddisk to the PCB, also design the front panel, back panel and connectors.&lt;/li&gt;&lt;li&gt;in the &lt;a href="http://bitsnbikes.blogspot.com/search/label/pachube"&gt;home monitoring&lt;/a&gt; project I'll need to rewrite the code for the new light sensor and adjust the pachube data to it.&lt;/li&gt;&lt;/ol&gt;I don't think I'll run out of electronics projects for next year, but if just in case I do, I have to change a pedal crank on my Kronan (got bent on a recent fall on the snow) and I'm waiting for some studded tires :-) , read some more books and try to reduce a bit the coffee intake...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8418744739836028389?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8418744739836028389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8418744739836028389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8418744739836028389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8418744739836028389'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/12/new-years-resolutions.html' title='New Year&apos;s resolutions...'/><author><name>J Silva</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></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4083681780969599343</id><published>2010-12-30T23:30:00.014+01:00</published><updated>2010-12-31T18:16:46.228+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>gdb-stub for m68k quirks and tricks</title><content type='html'>After some investigation I finally realized how most of the gdb-stub works and how you can make it work, I also found out what doesn't work and that there are some things I still don't fully understand.&lt;br /&gt;After having a stub that I could download to the target's ROM (in this case an EPROM Emulator) and would properly communicate to the gdb running on the host, I built a C runtime assembly file (crt0.s) and linker command to place the program in the available RAM. Since I had done a similar work for the stub running in ROM, it was only a question of changing some parameters and some basic code at the start up routine.&lt;br /&gt;The test program was very simple, I didn't want to test any advance feature just a simple program flow with loops.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TR4JV7nGdYI/AAAAAAAAAHg/89eS78SojM0/s1600/snapshot5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TR4JV7nGdYI/AAAAAAAAAHg/89eS78SojM0/s400/snapshot5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5556889262605366658" /&gt;&lt;/a&gt;&lt;br /&gt;When I added a coded breakpoint in the code, all would work consistently, I could &lt;span style="font-style: italic;"&gt;continue&lt;/span&gt; without a worry, control flow would be transferred back to the stub when the breakpoint was hit.&lt;br /&gt;But as soon as I added a gdb break point what I expected to happen was, gdb(host) would read the contents of the instruction at the breakpoint and substitute it by a breakpoint opcode (TRAP). From reading the gdb-stub code and most internet references, a breakpoint should be a TRAP #1 instruction, I had setup the gdb-stub to intercept TRAP #1 instructions and report them as breakpoint to gdb(host), but every time I place a breakpoint I would get a privilege violation at the address following the one of the breakpoint.&lt;br /&gt;The problem was that gdb(host) instead of adding a TRAP #1 (0x4e41) would add a TRAP #F (0x4e4f) (!!!), see it in the below:&lt;br /&gt;I set a break point at line 20 of the code, gdb(host) tries a Z0 command but the stub doesn't implement it, gdb(host) acknowledges it, then it reads the code at the breakpoint position (m4074,2 with reply 2039), then writes a trap instruction at this address (M4074,2:4e4f).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TR4FxlLCxSI/AAAAAAAAAHA/b6Cg9h1P6uI/s1600/snapshot4.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 600px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TR4FxlLCxSI/AAAAAAAAAHA/b6Cg9h1P6uI/s200/snapshot4.png" alt="" id="BLOGGER_PHOTO_ID_5556885339571930402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You'll need to click on it to see it ok, sorry couldn't solve this one in the old fashion way..&lt;br /&gt;When after several tries I decided to check "everything" that came in and out of the stub, I check that the instruction is in fact a TRAP #F and not a TRAP #1 as I was made to think, naturally I had not set the gdb-stub to catch these exceptions, then the stub would return to the address following the trap which is not an instruction, hence the privilege violation.&lt;br /&gt;This problem above is probably solve in some gdb configuration line, but I didn't found it yet.. If I do I'll post it back here.&lt;br /&gt;The second problem is only detected when you get these breakpoints to work. After the breakpoint the PC is pointing to breakpoint+2, before you continue you need to roll the PC back by two. This can be done either by the stub or gdb itself. I chose to do it at the stub, but it is possible to do it at the gdb(host) (also some configuration option must be there...). The only problem with any of these is that once a breakpoint is hit, it must be disabled before execution continues.&lt;br /&gt;Gdb(host) just before you continue changes the instruction at the breakpoint address to a trap, then execution continues, when the breakpoint is hit control is given back to the stub and the instruction at the breakpoint is replaced by the previous. If the PC is rolled back by two, at the next continue, the same breakpoint will be hit without further processing... so we are blocked... An option would be to control everything from gdb(host), before continue, single step one instruction (the breakpoint instruction), change the breakpoint by a trap and then continue... I will have to investigate a bit further to see if this is already implemented in gdb but it seems (as Mythbusters would say &lt;span style="font-style:italic;"&gt;Plausible&lt;/span&gt;).&lt;br /&gt;If you are also curious about why the coded breakpoint (TRAP #0) above is different than the gdb-inserted breakpoint (TRAP #1 or #F) it is because gdb-inserted breakpoints must roll back the PC, coded ones do not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4083681780969599343?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4083681780969599343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4083681780969599343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4083681780969599343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4083681780969599343'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/12/gdb-stub-for-m68k-quirks-and-tricks.html' title='gdb-stub for m68k quirks and tricks'/><author><name>J Silva</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://2.bp.blogspot.com/_dS8vH8QMm5Y/TR4JV7nGdYI/AAAAAAAAAHg/89eS78SojM0/s72-c/snapshot5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1766609764800685068</id><published>2010-11-21T20:54:00.006+01:00</published><updated>2010-11-21T22:32:50.546+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='gnucross'/><title type='text'>making gdb-stub work from rom</title><content type='html'>Well after some long break I'm back on the m68k... I had time to draw some of the schematics of the circuit, only the CPU and most of the support circuitry. The rest of the circuit is straight forward, I connected my EPROM emulator and a massive 512K bytes SRAM to the bus and finally a MC68901 Multi Function Peripheral (MFP) handling the serial port and SD card interface. The CPU clock is at the moment 4MHz, so I can share it with the MFP, later I intend to clock the CPU at 8MHz.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TOmEx-ExPtI/AAAAAAAAAGM/5nExHgZoq7Q/s1600/mini68k-core.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TOmEx-ExPtI/AAAAAAAAAGM/5nExHgZoq7Q/s320/mini68k-core.png" alt="" id="BLOGGER_PHOTO_ID_5542106810467565266" border="0" /&gt;&lt;/a&gt;Since my &lt;a href="http://bitsnbikes.blogspot.com/2010/03/mini68k-adding-libraries-and-serial.html"&gt;previous post&lt;/a&gt;, I've done/settled on a couple of things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; I'll use gcc and gdb to do get the system up and running. Currently I managed to compile gcc-3.4.6 for target m68k-elf and gdb-6.8;&lt;/li&gt;&lt;li&gt;I've created basic linker scripts for running from ROM and running from RAM. Both have been proven to work with C source (C++ probably won't work). I've also created two CRT0.S for each of these linker scripts;&lt;/li&gt;&lt;li&gt;Compiling the gdb-stub and link it to ROM proved a big challenge, but I managed in the end. The source m68k-stub.c that comes with gdb suffers from severe &lt;a href="http://en.wikipedia.org/wiki/Bit_rot"&gt;bit rot&lt;/a&gt;, most of the assembly source doesn't compile either because the syntax is no longer supported or because &lt;a href="http://gcc.gnu.org/ml/gcc/2001-03/msg00864.html"&gt;"handling multi line strings has changed in 2001"&lt;/a&gt;;&lt;/li&gt;&lt;li&gt;Still doesn't work perfect, the first time I &lt;span style="font-style: italic;"&gt;load&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;break main&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;continue&lt;/span&gt;, remote-gdb ends up "somewhere", on the second time I &lt;span style="font-style: italic;"&gt;load&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;continue&lt;/span&gt; (no need to break main, this is handled by the server) it works OK and I can even step lines of code. This probably has to do with my "trick" to make gdb-stub work from ROM without referencing any program at all (the frame information is not correct... I think...). On the second run (after the initial crash), this frame is correctly initialized.&lt;/li&gt;&lt;li&gt;I'll add a 3V power supply and a SD Card interface for "disk drive", based on some &lt;a href="http://bitsnbikes.blogspot.com/2010/05/arduino-interface-to-sd-card.html"&gt;previous work&lt;/a&gt; I did with the Arduino, I don't expect big difficulty.&lt;/li&gt;&lt;li&gt;Placing the vectors in memory was actually quite easy, I needed to learn some m68k assembly and now I do it in CRT0.S. Due to a requirement of the gdb-stub to identify the generated exception, I had to build a two step exception processing. First the vectors 0 to 256 are initialized to unique locations starting at 0x400 in steps of 8. On each of these, 8 bytes there's a NOP and a Jump to Sub Routine long to the exception_handler, this pushes a unique address per exception on to the stack, the exception_handler pops this address and identifies the exception that was generated.&lt;/li&gt;&lt;/ol&gt;I had a old monitor that I "pop" from storage, to test dual head with openSUSE 11.2 and it works great. I really think it's a great advantage to work with two monitors, one for programming other for debugging or one for drawing the circuit and the other to check the PCB, Bill of Materials, Stocks, vendors, spreadsheet, etc.&lt;br /&gt;Another thing I noticed is that I still can't get away from printouts of the code.. and I wish I had an old matrix printer with form paper... those were the days...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TOmOYu2t4BI/AAAAAAAAAGU/arqCkPb20S8/s1600/P1030457.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TOmOYu2t4BI/AAAAAAAAAGU/arqCkPb20S8/s320/P1030457.JPG" alt="" id="BLOGGER_PHOTO_ID_5542117372001640466" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1766609764800685068?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1766609764800685068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1766609764800685068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1766609764800685068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1766609764800685068'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/11/making-gdb-stub-work-from-rom.html' title='making gdb-stub work from rom'/><author><name>J Silva</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://4.bp.blogspot.com/_dS8vH8QMm5Y/TOmEx-ExPtI/AAAAAAAAAGM/5nExHgZoq7Q/s72-c/mini68k-core.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5761422256213947948</id><published>2010-11-13T17:21:00.006+01:00</published><updated>2010-11-13T21:56:46.035+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>Hardware Single Step for the 8085</title><content type='html'>As usual my current developments tend to wander towards all directions, as the ever expanding universe... Although I haven't really finished any of my other "side jobs", I want to further develop the mini85 into a real single board CP/M computer, but more on that later.&lt;br /&gt;This week, I looked for a Hardware Single Stepping circuit for the 8085.  Something that proves that "everything is on the internet" is not true  (if you didn't already knew), at least until up to now.&lt;br /&gt;The internet came up with nothing, so I had to resort to older methods... Books, applications notes, etc... First of it was the 8080 datasheet, on the description of the READY line it states "Can be used for single stepping the processor" but this sentence is strangely absent from the 8085 datasheet (a nice circuit with one wait state is drawn instead). Then I found something on a great book "Microcomputers and Microprocessors - The 8080, 8085 and Z-80 Programming, Interfacing, and Troubleshooting" by John Uffenbeck. There are caveats, about the same &lt;a href="http://bitsnbikes.blogspot.com/2008/09/more-pseudo-dma-circuits.html"&gt;as others&lt;/a&gt; and &lt;a href="http://bitsnbikes.blogspot.com/2008/08/8085-fdc-765-and-pseudo-dma-operation.html"&gt;my previous pseudo-DMA circuit for the 8085&lt;/a&gt;, doesn't allow the use of &lt;a href="http://bitsnbikes.blogspot.com/2009/05/8085-dram-interface-30-pin-simm.html"&gt;dynamic RAM hidden-refresh (end of M1)&lt;/a&gt;. I've redrawn it with gschem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TN7ohdE51kI/AAAAAAAAAGE/ZQaVWE-LkJc/s1600/i8085SS.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TN7ohdE51kI/AAAAAAAAAGE/ZQaVWE-LkJc/s320/i8085SS.png" alt="" id="BLOGGER_PHOTO_ID_5539120253150811714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It is not exactly what I want. I want a single lever switch with 3 positions RUN, HALT, SingleStep. I found &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=CKN9709-ND"&gt;this one&lt;/a&gt; on &lt;a href="http://www.digikey.com/"&gt;Digikey&lt;/a&gt; a nice &lt;a href="http://www.ck-components.com/"&gt;C&amp;amp;K switch&lt;/a&gt; that "has the looks" of a 1980 Computer and could do the job. The problem is that I need to do some adaptation from the schematics above to a single switch with 3 positions, the main problem is halt the computer when the switch is off (centre position) and at the same time set the FF clock low... I might need some magic...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5761422256213947948?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5761422256213947948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5761422256213947948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5761422256213947948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5761422256213947948'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/11/hardware-single-step-for-8085.html' title='Hardware Single Step for the 8085'/><author><name>J Silva</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/_dS8vH8QMm5Y/TN7ohdE51kI/AAAAAAAAAGE/ZQaVWE-LkJc/s72-c/i8085SS.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5165363648672864712</id><published>2010-10-28T21:39:00.005+02:00</published><updated>2010-10-28T22:27:04.108+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='SMD'/><title type='text'>SMD help</title><content type='html'>I sometimes boast about my old SMD soldering skills to my "happy hacking" friends... It's quite safe, until someone actually asks you to do &lt;a href="http://jeelabs.org/2010/02/03/jeenode-usb-v2-error/"&gt;_this_&lt;/a&gt;! &lt;a href="http://jaagpad.blogspot.com/"&gt;Alex&lt;/a&gt; bought some of these JeeNodes from &lt;a href="http://jeelabs.org/"&gt;JeeLabs&lt;/a&gt; and needed some help. I accepted the challenge...&lt;br /&gt;Before we start, a word of wisdom... Don't try this at home if you don't have the right tools, if you are uncertain about your tools or your ability it is best to send the module to JeeLabs and he'll repair it for you.&lt;br /&gt;Following the site it is easy to understand the problem, Vout and Vin are connected to the wrong sources (this is a linear regulator Vout must be lower than Vin). The solution appears easy but it was not clear from the pictures, once the IC is in the vertical, there are two sides to chose from.&lt;br /&gt;I usually start with the board to repair over a clean sheet of paper, makes easier to see as there's a better contrast, also if some small components come off the board or need to go in they're easy to see.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TMnY3i3hkeI/AAAAAAAAAE0/BXwb-q6ryrw/s1600/P1030337.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TMnY3i3hkeI/AAAAAAAAAE0/BXwb-q6ryrw/s320/P1030337.JPG" alt="" id="BLOGGER_PHOTO_ID_5533192065965461986" border="0" /&gt;&lt;/a&gt;I then apply a small blob of solder to each side of the IC. The blob keeps liquid for some time and allows you to heat the other side (it must be a quick movement), once both sides have liquid solder slide the IC off the PCB to the paper.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMnY4Rnpx7I/AAAAAAAAAE8/03MkXCMOWlQ/s1600/P1030338.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMnY4Rnpx7I/AAAAAAAAAE8/03MkXCMOWlQ/s320/P1030338.JPG" alt="" id="BLOGGER_PHOTO_ID_5533192078515357618" border="0" /&gt;&lt;/a&gt;Then using solder-wick clean the excess solder on the pads and on the IC feet.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMnY5MvSUwI/AAAAAAAAAFE/RMgj93wbft4/s1600/P1030340.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMnY5MvSUwI/AAAAAAAAAFE/RMgj93wbft4/s320/P1030340.JPG" alt="" id="BLOGGER_PHOTO_ID_5533192094385066754" border="0" /&gt;&lt;/a&gt;I then marked the pads and the IC feet with the numbers and visualized what I had to do.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TMna6Rfva-I/AAAAAAAAAFs/yan6W5kX9Ks/s1600/P1030341.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TMna6Rfva-I/AAAAAAAAAFs/yan6W5kX9Ks/s320/P1030341.JPG" alt="" id="BLOGGER_PHOTO_ID_5533194311865166818" border="0" /&gt;&lt;/a&gt;The IC actually is placed in "dead bug" style (but sideways), this means that the IC is "top-to-bottom", it is not so clear in the JeeLabs pictures.The mechanical pencil is 0.3mm for reference.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMna60TXokI/AAAAAAAAAF0/wLrJDmsmH9I/s1600/P1030344.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TMna60TXokI/AAAAAAAAAF0/wLrJDmsmH9I/s320/P1030344.JPG" alt="" id="BLOGGER_PHOTO_ID_5533194321208517186" border="0" /&gt;&lt;/a&gt;Finally I used some wire-wrap wire to connect the "floating-pad" to the board.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TMna7PXNp2I/AAAAAAAAAF8/r-OH2o_UQ3c/s1600/P1030345.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TMna7PXNp2I/AAAAAAAAAF8/r-OH2o_UQ3c/s320/P1030345.JPG" alt="" id="BLOGGER_PHOTO_ID_5533194328472397666" border="0" /&gt;&lt;/a&gt;Since I have no idea how to connected to the JeeNode, connected it to the USB port and checked if the output voltage was around 3V... Some LEDs blinked (like in Arduino's FTDI), no smoke or hot ICs, I suppose it's fine...&lt;br /&gt;SMD reputation intact...hopefully :-)&lt;br /&gt;PS. - google.reader.friends if you have two posts one with pictures and other without pictures, it's just me and my faulty brain...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5165363648672864712?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5165363648672864712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5165363648672864712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5165363648672864712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5165363648672864712'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/10/smd-help.html' title='SMD help'/><author><name>J Silva</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/_dS8vH8QMm5Y/TMnY3i3hkeI/AAAAAAAAAE0/BXwb-q6ryrw/s72-c/P1030337.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8383627385155482149</id><published>2010-09-03T19:16:00.016+02:00</published><updated>2010-12-29T23:57:54.675+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>8-bit single board computers</title><content type='html'>Before I build my own single board computer, I wanted to do a study of past and "present" single board computers that "could" run CP/M, focusing in  their features and capabilities. Since I like CP/M-80 and I already managed to build a few breadboard computers that could run CP/M from &lt;a href="http://bitsnbikes.blogspot.com/2008/09/mini85-first-cpm-boot.html"&gt;a floppy&lt;/a&gt; or memory, I thought could build something more permanent.&lt;br /&gt;Most of the SBCs I've listed below are for the Z80, or derivatives.&lt;ol&gt;&lt;li&gt;SB180 (&lt;a href="http://www.wfms.org/sb180/index.html"&gt;from Micromint, details published on byte Sep-Oct 85&lt;/a&gt; designed by &lt;a href="http://en.wikipedia.org/wiki/Steve_Ciarcia"&gt;Steve&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Steve_Ciarcia"&gt; Ciarcia&lt;/a&gt;) uses a HD64180 (or Zilog's Z180) with 2 DMA channels, 2 Serial, floppy interface using FDC9266 (for high density disks) (update, I've changed the picture and here there's even a SB180FX).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://scott.squidliver.net/sb180/images/sb180-06-a.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 380px; height: 216px;" src="http://scott.squidliver.net/sb180/images/sb180-06-a.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;P112 uses a Z182 with 2 DMA channels, 2 full serial and a FDC37C665 for floppy interface, extra serial ports, parallel port and possible IDE drive (PC-style super IO, includes high density) (new version was being sold &lt;a href="http://frotz.homeunix.org/p112/"&gt;here&lt;/a&gt;, apparently there wasn't enough critical mass)&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mysite.verizon.net/hal.bower/pics/p112GIDE.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 380px; height: 216px;" src="http://mysite.verizon.net/hal.bower/pics/p112GIDE.jpg" alt="" border="0" /&gt;&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CPU280 uses Z280 with 4 DMA channels, 2 serial ports and a FDC37C65 does the floppy interface (also high density disks), although some details can be found on the internet I was unable to find schematics.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;N8VEM (designed by Andrew Lynch) uses a vanilla Z80, serial port with 16C550, huge SRAM 512K (mostly used as a RAM-disk), big Flash Rom 1Mb with operating system (CP/M) included, ECB bus interface, Floppy interface is an external board (new design, several boards and developers &lt;a href="http://n8vem-sbc.pbworks.com/"&gt;here&lt;/a&gt;), RTC and parallel interface (i82C55) and it's all open hardware.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hd64180-ecb.de/assets/images/N8VEM_ECB_7w.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 380px; height: 216px;" src="http://www.hd64180-ecb.de/assets/images/N8VEM_ECB_7w.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;YASBEC also uses Z180 but the hardware details are much more elusive in the internet, the disk format suggests 3.5 inch HD drives.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mysite.verizon.net/hal.bower/pics/yasbec.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 380px; height: 216px;" src="http://mysite.verizon.net/hal.bower/pics/yasbec.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.prof80.de/"&gt;PROF80&lt;/a&gt; uses a Z80, has a floppy interface with the UPD765, high density data separator, bit-bang serial interface, on the webpage there are more details ans schematics of other boards (graphics terminal) and upgraded version with Z180 (with FDC37C68, RTC and other goodies) some more details &lt;a href="http://www.solaris.no/electronics/Z80/conitec.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;I think after that review, I can settle on what I want for my CP/M SBC with the 8085. A 3.5 inch floppy (HD), 765 Floppy interface, 8085AH-2 @ 10.24MHz (2% overclocked) a 8256AH, 128K SRAM and 32KB ROM (with a debugger, Forth or Basic and boot). On the optional is a second serial port, a parallel port, a SD Card interface and an expansion port. I think I can skip the RTC as CP/M 2.2 doesn't need it and it's optional for CP/M 3.0 .&lt;br /&gt;Front panel inputs I'd like to have a RUN/HALT/SINGLE STEP switch on the front, a RESET push-button and an interrupt push-button (maybe RST7.5 or TRAP). As for indicators a RUN/WAIT/HALT (green/yellow/red) LED, a INTR/INTA (red/green) and a HOLD/HLDA (only if there's an expansion port).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8383627385155482149?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8383627385155482149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8383627385155482149' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8383627385155482149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8383627385155482149'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/09/old-time-single-board-computers.html' title='8-bit single board computers'/><author><name>J Silva</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3598609608783397373</id><published>2010-09-03T19:13:00.006+02:00</published><updated>2010-09-11T23:17:38.444+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>2010 "balcony carrots" grand cru</title><content type='html'>For those of you that just arrived, this blog has nothing to do with wine... today I'm talking about carrots. This year's crop of carrots from the balcony vases was about 200g, slightly less than&lt;a href="http://bitsnbikes.blogspot.com/2009/08/harvesting-carrots.html"&gt; last year's (300g)&lt;/a&gt;, but I planted other stuff (some worked out, some didn't). Crops were delayed (about 1 month) this year due to the harsh winter. We also had a new arrival, little Luísa! She loved the carrots as finger-food... extra tasty!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TIuyFD97fVI/AAAAAAAAAEc/z5OU0WjJZ4M/s1600/P1020709.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 273px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TIuyFD97fVI/AAAAAAAAAEc/z5OU0WjJZ4M/s320/P1020709.JPG" alt="" id="BLOGGER_PHOTO_ID_5515697968679451986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;She is now 9 months and moving around, she takes much interest in my books...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TIuyFiyagiI/AAAAAAAAAEk/HeK0Tizz3oo/s1600/P1020716.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TIuyFiyagiI/AAAAAAAAAEk/HeK0Tizz3oo/s320/P1020716.JPG" alt="" id="BLOGGER_PHOTO_ID_5515697976952652322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;But most of the time she's a sweet baby...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TIuyF1jjrMI/AAAAAAAAAEs/OrG30fDJefA/s1600/P1020758.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TIuyF1jjrMI/AAAAAAAAAEs/OrG30fDJefA/s320/P1020758.JPG" alt="" id="BLOGGER_PHOTO_ID_5515697981990612162" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3598609608783397373?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3598609608783397373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3598609608783397373' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3598609608783397373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3598609608783397373'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/09/2010-balcony-carrots-grand-cru.html' title='2010 &quot;balcony carrots&quot; grand cru'/><author><name>J Silva</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://1.bp.blogspot.com/_dS8vH8QMm5Y/TIuyFD97fVI/AAAAAAAAAEc/z5OU0WjJZ4M/s72-c/P1020709.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5169887118664158764</id><published>2010-08-18T21:39:00.007+02:00</published><updated>2010-08-27T22:54:31.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>Mending Jeans</title><content type='html'>I bike to work regularly, even during winter. As a result my jeans wear off often, every time in the same place, let's call it "the saddle area". I used to take the jeans back home and ask mum to do it. She would just go to her "work room" power up her good old sewing machine and get it done in no time.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/THgcR9vL2kI/AAAAAAAAADc/pKAjDUwDhQc/s1600/P1020696.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/THgcR9vL2kI/AAAAAAAAADc/pKAjDUwDhQc/s320/P1020696.JPG" alt="" id="BLOGGER_PHOTO_ID_5510185239043627586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since we decided last year to buy a sewing machine, I thought I could try and do it myself. It is very easy and hardly noticeable once the patch is made.&lt;br /&gt;You will need a pair of jeans to fix, a jeans patch a bit bigger than the hole (+2cm, 1 inch) and thread.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgcSec_BGI/AAAAAAAAADk/JF7F8_aJgU0/s1600/P1020697.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgcSec_BGI/AAAAAAAAADk/JF7F8_aJgU0/s320/P1020697.JPG" alt="" id="BLOGGER_PHOTO_ID_5510185247825658978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There's a trick about the thread (thanks mum), use grey or light grey thread. Using blue thread, even if it's the same colour as the jeans will produce a noticeable patch.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/THgeHHFl35I/AAAAAAAAAD0/SwJCAFO40zg/s1600/P1020700.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/THgeHHFl35I/AAAAAAAAAD0/SwJCAFO40zg/s320/P1020700.JPG" alt="" id="BLOGGER_PHOTO_ID_5510187251598221202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Place the patch on the inside of the jeans and secure it with pins, take care to stretch both the jeans and the patch.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgcTD0Um9I/AAAAAAAAADs/8xFIQqE-n70/s1600/P1020698.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgcTD0Um9I/AAAAAAAAADs/8xFIQqE-n70/s320/P1020698.JPG" alt="" id="BLOGGER_PHOTO_ID_5510185257855654866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Load the top thread with the grey coloured thread (the under carrier is not so important), select a wide zig-zag stitch (5mm width) and reduce the length (advance) to 1 to 2mm (a bit like the bottom right stitch of figure 2 &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=3&amp;amp;ved=0CCAQFjAC&amp;amp;url=http%3A%2F%2Fwww.sewing.org%2Ffiles%2Fguidelines%2F16_205_zigzag_stitch.pdf&amp;amp;ei=mO53TK2mJNKCOLa03NsG&amp;amp;usg=AFQjCNGe8YKwwJr-sotnsIHNxWFXBDW2oQ"&gt;here&lt;/a&gt;).&lt;br /&gt;Lock both fabrics under the zig-zag presser foot starting from 2cm/1 inch outside the hole to cover, sew until 2cm/1 inch the hole end. Repeat in reverse.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgeHrCKofI/AAAAAAAAAD8/wocr1ErRS-s/s1600/P1020704.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgeHrCKofI/AAAAAAAAAD8/wocr1ErRS-s/s320/P1020704.JPG" alt="" id="BLOGGER_PHOTO_ID_5510187261247529458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you reach the place where you started, move the needle to the top most position, release the feet, move the fabrics 5mm (about the width of the stitch) to the side, press the feet and repeat until the hole is covered.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgf5qwKphI/AAAAAAAAAEE/JKtd0M8nsS4/s1600/P1020706.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgf5qwKphI/AAAAAAAAAEE/JKtd0M8nsS4/s320/P1020706.JPG" alt="" id="BLOGGER_PHOTO_ID_5510189219677120018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is the patch finished. The good news are it is hardly noticeable, the bad news are, that usually if you do this in one leg, chances are the other leg's fabric will also fail in a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgf6Oj8TpI/AAAAAAAAAEM/FtQCMSbYIJQ/s1600/P1020707.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/THgf6Oj8TpI/AAAAAAAAAEM/FtQCMSbYIJQ/s320/P1020707.JPG" alt="" id="BLOGGER_PHOTO_ID_5510189229289524882" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5169887118664158764?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5169887118664158764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5169887118664158764' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5169887118664158764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5169887118664158764'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/08/mending-jeans.html' title='Mending Jeans'/><author><name>J Silva</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://1.bp.blogspot.com/_dS8vH8QMm5Y/THgcR9vL2kI/AAAAAAAAADc/pKAjDUwDhQc/s72-c/P1020696.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2150698700382859657</id><published>2010-07-06T23:43:00.010+02:00</published><updated>2010-08-10T21:19:38.320+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Prototype PCBs with Toner Transfer</title><content type='html'>I wanted to redo &lt;a href="http://bitsnbikes.blogspot.com/2009/03/munny-hardware.html"&gt;my old &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Munny&lt;/span&gt; project&lt;/a&gt; and build a new versatile PCB that had a minimum &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ATTiny&lt;/span&gt;15L system with in circuit programming (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ICP&lt;/span&gt;). I planned the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;RGB&lt;/span&gt; LED and the temperature sensor to be soldered on the edge of the board, like having solder tags. The rest would be the CPU, the programming connector and the minimum number of components (a few resistors and a capacitor).&lt;br /&gt;Although I've already managed to use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;gEDA&lt;/span&gt; to design and send a PCB for fabrication, I wanted to try going "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DIY&lt;/span&gt;" and have a faster "turn around" from project to board. The board would also be very small (about 2cm²) the cost of making a production run wouldn't be cost effective.&lt;br /&gt;Before I've used the UV light transfer with very good results, even for double sided boards. This time I wanted something even more "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;barebones&lt;/span&gt;" only the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;etchant&lt;/span&gt;, no other chemicals (like the extra developer in UV photographic method). I found some sites with the reference to Toner Transfer Method. They used either &lt;a href="http://www.dr-lex.be/hardware/tonertransfer.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;inkjet&lt;/span&gt; glossy photo paper&lt;/a&gt;, a specific "&lt;a href="http://www.techniks.com/"&gt;Press and Peel&lt;/a&gt;" paper ending in common "&lt;a href="http://www.riccibitti.com/pcb/pcb.htm"&gt;glossy magazine&lt;/a&gt;" paper, there's even a nice page at &lt;a href="http://forums.makezine.com/comments.php?DiscussionID=2500"&gt;Make: web discussion&lt;/a&gt; . I decided to give it a try!&lt;br /&gt;First I designed the board single side only. I started out with 10mils/10mils/0.8mm (10/10 means 10 mils tracks and 10 mils minimum spacing between copper, a 10 mils is 0.01 inch; the last number is a minimum drill), but soon I had problems connecting the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ICP&lt;/span&gt; with the defined tolerances. I changed to 6/6/0.8mm and finally managed to connect everything and pass the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;DRC&lt;/span&gt; test. The next step is printing.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC4FcT5vOI/AAAAAAAAABs/xXVaIe1wHFw/s1600/munny.png"&gt;&lt;img style="cursor: pointer; width: 180px; height: 50px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC4FcT5vOI/AAAAAAAAABs/xXVaIe1wHFw/s320/munny.png" alt="" id="BLOGGER_PHOTO_ID_5494593949030530274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;My printer is a HP &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;laserjet&lt;/span&gt; 4L (its old, 300&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;dpi&lt;/span&gt; but it works!), it still has some problems that I didn't quite worked out yet. There is some rendering on the edges of the lines that I didn't managed to "clear out", I think it is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;REt&lt;/span&gt; setting but I didn't managed to disable it with my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;linux&lt;/span&gt; driver (the printer is network connected), this is something I would like to solve. It might be visually more appealing when printing normal graphics, but for this particular purpose it doesn't work! Here's a picture of the zoomed output.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TEDDRQtYjgI/AAAAAAAAADE/IZLmvZLgmK4/s1600/P1020589.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TEDDRQtYjgI/AAAAAAAAADE/IZLmvZLgmK4/s320/P1020589.JPG" alt="" id="BLOGGER_PHOTO_ID_5494606246702517762" border="0" /&gt;&lt;/a&gt;As you can see the horizontal lines (in the photo above, to the printer they're vertical lines) and edges have a "saw tooth" on both edges. As I said before I think it is a rendering/dithering that the printer "self" does to make the lines more eye appealing or it is a misaligned mirror.&lt;br /&gt;I tried out 3 different types of glossy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;inkjet&lt;/span&gt; photo paper from Dutch shops. Bellow the three different papers ready for cutting and ironing to the board.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TEC64HSxIxI/AAAAAAAAAC8/5YmKAnIfqOw/s1600/P1020586.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/TEC64HSxIxI/AAAAAAAAAC8/5YmKAnIfqOw/s320/P1020586.JPG" alt="" id="BLOGGER_PHOTO_ID_5494597018585211666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I obtained the best toner transfer with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;HEMA&lt;/span&gt; glossy photo paper, not bad for the cheapest of all the options...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TEDDSpiyYZI/AAAAAAAAADM/6Eo-Pup9Tl4/s1600/P1020591.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TEDDSpiyYZI/AAAAAAAAADM/6Eo-Pup9Tl4/s320/P1020591.JPG" alt="" id="BLOGGER_PHOTO_ID_5494606270548828562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The transfer was clear and sharp... all the rendering artifacts appear in the copper. The paper that doesn't show has peeled off easy, the part that is attached is the one you have to scrape.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC636WTpVI/AAAAAAAAAC0/By646OqAePk/s1600/P1020609.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC636WTpVI/AAAAAAAAAC0/By646OqAePk/s320/P1020609.JPG" alt="" id="BLOGGER_PHOTO_ID_5494597015110395218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first from the left actually when it transferred to the copper the toner transferred fully but in some areas it got stuck to the paper. It might mean that this paper need more ironing time, temperature or pressure (or all of the above)... I might try it again... the one in the far right is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;HEMA&lt;/span&gt; paper, needs more scraping but the toner sticks to the copper fully.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEDDTSktB6I/AAAAAAAAADU/5ndJJ4wmqUA/s1600/P1020592.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEDDTSktB6I/AAAAAAAAADU/5ndJJ4wmqUA/s320/P1020592.JPG" alt="" id="BLOGGER_PHOTO_ID_5494606281562720162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the view of the most troublesome area, two wires going between two pins of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;ICP&lt;/span&gt; and one track between pads of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SMD&lt;/span&gt; resistor, both around 6/7  mils clearance. I had to puncture the centre of the pins because I forgot to set "drill" in the print out and it helps a lot for drill bit centring.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TEC63eVqZfI/AAAAAAAAACs/f9G4ohM4FEQ/s1600/P1020613.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TEC63eVqZfI/AAAAAAAAACs/f9G4ohM4FEQ/s320/P1020613.JPG" alt="" id="BLOGGER_PHOTO_ID_5494597007591499250" border="0" /&gt;&lt;/a&gt;I actually had to separate the track from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;SMD&lt;/span&gt; left pad, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;etchant&lt;/span&gt; didn't go through the little spot of paper (visible on the picture above). The picture bellow I removed the toner and performed an electrical test with the multimeter. I also drilled the connector.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TEC62yoNGOI/AAAAAAAAACk/kAVNDwksXqs/s1600/P1020617.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TEC62yoNGOI/AAAAAAAAACk/kAVNDwksXqs/s320/P1020617.JPG" alt="" id="BLOGGER_PHOTO_ID_5494596995858110690" border="0" /&gt;&lt;/a&gt; After that stage I soldered the components and had my board running after a couple of minutes. Here's the final result. The power connectors below the board have been soldered for testing and programming, I'll be removing these... I'm also planning some tests and improvements to the board's software.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC62dcZlWI/AAAAAAAAACc/LRg2obPDl-8/s1600/P1020631.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC62dcZlWI/AAAAAAAAACc/LRg2obPDl-8/s320/P1020631.JPG" alt="" id="BLOGGER_PHOTO_ID_5494596990171452770" border="0" /&gt;&lt;/a&gt;The connector &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;ICP&lt;/span&gt; is a 6 pin female because it has a smaller (in &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_23"&gt;height&lt;/span&gt;) footprint than the male connector. I'm quite please with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;LM&lt;/span&gt;35CZ and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;RGB&lt;/span&gt; LED footprints, for such a small projects edge placement is viable and saves board area.&lt;br /&gt;Getting the 6/8 mils was a bit of an over achievement and it is only viable because the board is small and hasn't got many connections, 10/10 mils should be the standard. I also need to see if I can solve the rendering of the printer problem... maybe (God forbid :-) using a Windows driver?&lt;br /&gt;The soldering was done by hand and normal soldering iron, a "next step" would be an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;SMD&lt;/span&gt;-oven.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Tah&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;Dah&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2150698700382859657?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2150698700382859657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2150698700382859657' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2150698700382859657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2150698700382859657'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/07/prototype-pcbs-with-toner-transfer.html' title='Prototype PCBs with Toner Transfer'/><author><name>J Silva</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://1.bp.blogspot.com/_dS8vH8QMm5Y/TEC4FcT5vOI/AAAAAAAAABs/xXVaIe1wHFw/s72-c/munny.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1412110467865521493</id><published>2010-06-05T23:31:00.009+02:00</published><updated>2010-12-31T19:31:46.331+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 - Casing (II) and power supply</title><content type='html'>I finally got my hands on the power supply of a _DEAD_ External Hard Disk that suited the purpose of powering my SBC6120. Before I was using a Compact Flash to IDE adaptor and I only needed a 5V supply but I wanted a "real deal" IDE drive.&lt;br /&gt;My first try was an old drive I had around, a Seagate 89MB... unfortunately another case of R.T.F.M., disks with CHS addressing (cylinder, head, sector) are not supported, only the (relative) recent LBA (logical block addressing) are. &lt;a href="http://jaagpad.blogspot.com/"&gt;Alex&lt;/a&gt; gave me a 3GB drive he had "hanging around" somewhere in a box, probably more than enough to hold all the source code ever produced for the PDP-8... It fit the case, just... probably too "just".&lt;br /&gt;I still need to pack inside the case: a switching power supply (LM2575, two big caps, a diode and a fat inductor), the power connector, the IDE ribbon cable, the serial port connection, the power switch and (if possible) one or two front panel indicators (power on and disk activity).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TArN5bFQtxI/AAAAAAAAABk/163-v-7V51w/s1600/P1020341.jpeg"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/TArN5bFQtxI/AAAAAAAAABk/163-v-7V51w/s320/P1020341.jpeg" alt="" id="BLOGGER_PHOTO_ID_5479418283055691538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The Case is a Hammond I bought some time ago for this project, but I never found a suitable power supply. Now with the external 12V supply and&lt;a href="http://bitsnbikes.blogspot.com/2010/07/prototype-pcbs-with-toner-transfer.html"&gt; (this is a forward reference) the toner transfer PCB method&lt;/a&gt;, I can build a middle PCB board holding the hard disk, the CPU board, the switcher power supply (12V to 5V) and a power switch. I'm looking for switches like the one above, but I still haven't found a good right-angle-PCB-mounted... I'm looking at some lever switches &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CBcQFjAB&amp;amp;url=http%3A%2F%2Fwww.ck-components.com%2F15115%2F9000rocker_13may.pdf%2F&amp;amp;ei=xDJsTILzK5SaONuJ4ZMC&amp;amp;usg=AFQjCNHJ2ijPEaXOg7nBhIpraxXyZTLxOw"&gt;from C&amp;amp;K&lt;/a&gt;, they look the right "age" for a pdp-8 &lt;span style="font-style: italic;"&gt;simile&lt;/span&gt;. but will see what I can get my hands on...&lt;br /&gt;Space in the box is tight so I still haven't decided where to put the power switch an a power LED, or if I just make some openings in the front panel and extend the LEDs on the board... I'm also looking for some front and back panel design...&lt;br /&gt;There's a lot of mechanical engineering ahead... I love the smell of a challenge in the morning...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1412110467865521493?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1412110467865521493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1412110467865521493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1412110467865521493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1412110467865521493'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/06/sbc6120-casing-ii-and-power-supply.html' title='SBC6120 - Casing (II) and power supply'/><author><name>J Silva</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://2.bp.blogspot.com/_dS8vH8QMm5Y/TArN5bFQtxI/AAAAAAAAABk/163-v-7V51w/s72-c/P1020341.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8154393522311360514</id><published>2010-05-28T22:36:00.008+02:00</published><updated>2010-06-05T23:24:54.528+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Arduino interface to SD Card</title><content type='html'>Finally managed to interface to a SDcard to the Arduino. There are several "tutorials" and even libraries written for the Arduino, but my objective was not to use any Arduino library or specific feature (like the integrated SPI port), otherwise porting the code to the mini68k would be more difficult.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TAphfz1pcDI/AAAAAAAAABU/oyAFWljLQis/s1600/P1020336.jpeg"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/TAphfz1pcDI/AAAAAAAAABU/oyAFWljLQis/s320/P1020336.jpeg" alt="" id="BLOGGER_PHOTO_ID_5479299095768690738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I started with &lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1206874649/8"&gt;this example&lt;/a&gt; (&lt;a href="http://www.arduino.cc/playground/Code/SDCARD"&gt;this other seems easier&lt;/a&gt;) and then started "removing stuff" in order to fit my purposes. I only need the basic initialize, read sectors and write sectors. In order to boot and run CP/M from an SDcard I don't even need to read/write more than a single sector as CP/M reads/writes only one sector, furthermore deblocking (breaking up a 512 byte sector into 128 byte CP/M sectors) is easily managed by most CP/M flavours (CP/M-80,CP/M-86,CP/M-68k, CP/M-Z8000).&lt;br /&gt;I battled with some Arduino functions, I particular serial.print() functions. I'm suspicious that something doesn't quite add up, some of the lines of text that should be printed are skipped for no apparent reason. It could be by the fact that I directly access the port pins (DDRB and PORTB) but since I don't change the serial pins there shouldn't be a problem...&lt;br /&gt;After several tries I managed to write and read a sector of the flash.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TAlzDdOSq5I/AAAAAAAAABM/J8h8FYa8a6Y/s1600/snapshot2.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 165px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/TAlzDdOSq5I/AAAAAAAAABM/J8h8FYa8a6Y/s320/snapshot2.png" alt="" id="BLOGGER_PHOTO_ID_5479036924894292882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The hardware is at its simplest form, it is a basic resistive divisor by 2 for the card inputs CS, SDI and SCK, the SDO output from the card is connected directly to the Arduino input pin.&lt;br /&gt;Pins CD and WP are also connected directly, the card detect(CD) and write protect(WP) switches use a weak pull up feature from the micro. A low voltage drop regulator provides 3.3V to the card.&lt;br /&gt;I used the Sparkfun SDcard adaptor, but since the "freeday disappointment" I promissed never to buy from them until the EURO is &gt;= 2x the US dollar (from that point on I would be stupid, not stubborn). The circuit used is the one of the first example above, except that I didn't bother to have the correct 3.3V input, I decided to go to 2.5V as it is easier to obtain (two equal resistors) and the input tolerance of the SDcard must accept it correctly. Usual (CMOS) input levels are at 60% (2.2V for High or 1) and 30% (for Low or zero) of Vcc (of the card).&lt;br /&gt;Now I only need to port the code to the 68k...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8154393522311360514?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8154393522311360514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8154393522311360514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8154393522311360514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8154393522311360514'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/05/arduino-interface-to-sd-card.html' title='Arduino interface to SD Card'/><author><name>J Silva</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://1.bp.blogspot.com/_dS8vH8QMm5Y/TAphfz1pcDI/AAAAAAAAABU/oyAFWljLQis/s72-c/P1020336.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8020091749011569052</id><published>2010-05-01T19:55:00.009+02:00</published><updated>2010-05-07T22:38:46.555+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>HDSP-2000LP Arduino</title><content type='html'>A few years ago I bought some 4x 5x7 small LED displays in eBay. I though they looked really cool  to be used in a front panel display, instead of using a single line LCD. The datasheet was actually &lt;a href="http://www.alldatasheet.com/datasheet-pdf/pdf/129052/INFINEON/HDSP2000LP.html"&gt;easy to find&lt;/a&gt; but driving the display...well that's another story.&lt;br /&gt;The initial objective was to incorporate these displays as front panel to the mini68k, as usual I try to prototype it with the Arduino. It ended up as being quite hard, you must compose the characters as "bitmap" graphics, then shift the 24 bits for "column" one of all the displays, then activate column one for 2ms... then repeat to column 2 to 5.&lt;br /&gt;&lt;div style="text-align: left;"&gt;So first you must compose the combined display bitmap from the individual characters, then shift a sequence of bits and activate the respective column. To do it proper you must have in memory a bitmap for each character, compose the "screen" and the shift the bits and activate the columns in sequence.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xSJqFNI/AAAAAAAAAAs/q6zjZFrKyzQ/s1600/P1020160.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xSJqFNI/AAAAAAAAAAs/q6zjZFrKyzQ/s320/P1020160.JPG" alt="" id="BLOGGER_PHOTO_ID_5468628635615892690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;As you can see from my first program... it didn't go well... unless you're the Predator and your personal nuke is counting down...&lt;br /&gt;A few more head bangs against the wall et voilà...&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xqkkg6I/AAAAAAAAAA0/CHhIieLw1Cc/s1600/P1020165.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xqkkg6I/AAAAAAAAAA0/CHhIieLw1Cc/s320/P1020165.JPG" alt="" id="BLOGGER_PHOTO_ID_5468628642171224994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Finally insanity takes over and I try to do a space invader... (the following photos are so crappy I forgot to get out of the light shade, late night)&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xzGnSNI/AAAAAAAAAA8/dKR4ZPxpoE0/s1600/P1020166.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xzGnSNI/AAAAAAAAAA8/dKR4ZPxpoE0/s320/P1020166.JPG" alt="" id="BLOGGER_PHOTO_ID_5468628644461496530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;inter character spacing is too wide to make multi-characters symbols (like infinity) unreadable... let alone the space invader that got cut in half... probably from a missile F-111...&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4ycRZutI/AAAAAAAAABE/flI4YZ1DdUM/s1600/P1020168.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_dS8vH8QMm5Y/S-R4ycRZutI/AAAAAAAAABE/flI4YZ1DdUM/s320/P1020168.JPG" alt="" id="BLOGGER_PHOTO_ID_5468628655512599250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The code is &lt;a href="http://pastebin.com/7UNgu5gB"&gt;here&lt;/a&gt;, enjoy...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8020091749011569052?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8020091749011569052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8020091749011569052' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8020091749011569052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8020091749011569052'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/05/hdsp-2000lp-arduino.html' title='HDSP-2000LP Arduino'/><author><name>J Silva</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://2.bp.blogspot.com/_dS8vH8QMm5Y/S-R4xSJqFNI/AAAAAAAAAAs/q6zjZFrKyzQ/s72-c/P1020160.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1693267838411176085</id><published>2010-04-17T15:54:00.008+02:00</published><updated>2010-04-17T20:03:15.654+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='pachube'/><title type='text'>New Pachube Feed</title><content type='html'>I finally had the time to create a new pachube feed and add the humidity monitor. It was almost "plug and play", I only had to convert the float values to integers and then scale them for one decimal point. My webpage server program uses the server.print function and it doesn't accept floats as input.&lt;br /&gt;I kept the Light sensor, so one can see the relation between the changes in the values of temperature and humidity with the daylight. Other interesting (and expected) reaction is the increase in humidity once the clothes were out to dry in the living room (as I did this morning) :-).&lt;br /&gt;&lt;img src="http://www.pachube.com/feeds/6835/datastreams/1/history.png?w=400&amp;h=250&amp;t=Arduino%20Home%20Monitor&amp;l=Relative%20Humidity&amp;s=2&amp;r=2" /&gt;&lt;br /&gt;&lt;br /&gt;The sensor is powered by a microcontroller port, and it is not (yet) filtered, I'll add a small capacitor to the power pins. This would allow to power the sensor only "on-demand", but I'm not sure if there are implications on the sensors stability. I know that it needs some time to correct the humidity readings...&lt;br /&gt;The speaker is used only to beep every time the Arduino is queried, it beeps every 15 minutes by pachube.&lt;br /&gt;The code is &lt;a href="http://pastebin.com/MZS0CiC4"&gt;here&lt;/a&gt;, the pachube feed is &lt;a href="http://www.pachube.com/feeds/6835"&gt;here&lt;/a&gt;, and the picture of the system is bellow.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/S8nN-ZFiRrI/AAAAAAAAAAk/CBiJ1mEsQ2g/s1600/P1020108.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/S8nN-ZFiRrI/AAAAAAAAAAk/CBiJ1mEsQ2g/s320/P1020108.JPG" alt="" id="BLOGGER_PHOTO_ID_5461122494933124786" border="0" /&gt;&lt;/a&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/1311381797415896809-1693267838411176085?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1693267838411176085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1693267838411176085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1693267838411176085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1693267838411176085'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/04/new-pachube-feed.html' title='New Pachube Feed'/><author><name>J Silva</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/_dS8vH8QMm5Y/S8nN-ZFiRrI/AAAAAAAAAAk/CBiJ1mEsQ2g/s72-c/P1020108.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8906885948387060891</id><published>2010-03-22T09:50:00.006+01:00</published><updated>2010-04-01T17:30:30.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='gnucross'/><title type='text'>mini68k adding libraries and serial port</title><content type='html'>I admit I haven't been very focused at my hobbies, but that's life. I've been working here and there: getting the Arduino and the SHT11 working together (see &lt;a href="http://github.com/practicalarduino/SHT1x"&gt;here&lt;/a&gt; for library), converting a metal-gear servo to continuous rotation (I followed this &lt;a href="http://vocaro.com/trevor/blog/2007/12/29/convert-a-servo-into-a-high-torque-motor/"&gt;how-to&lt;/a&gt;), trying to design a photodiode amplifier (I'm following &lt;a href="http://www.national.com/onlineseminar/2004/photodiode/PhotodiodeAmplifers.pdf"&gt;this&lt;/a&gt;, &lt;a href="http://cds.linear.com/docs/Design%20Note/dn399f.pdf"&gt;this&lt;/a&gt; and what is available from &lt;a href="http://books.google.com/books?id=sHV0c5hBW4QC&amp;amp;dq=photodiode+amplifier&amp;amp;printsec=frontcover&amp;amp;source=in&amp;amp;hl=en&amp;amp;ei=aCypS-3uNsrW-Qbbz4hc&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=14&amp;amp;ved=0CFIQ6AEwDQ#v=onepage&amp;amp;q=photodiode%20amplifier&amp;amp;f=false"&gt;this&lt;/a&gt;), debugging the SolarLight project and working on the schematics of the mini68k and finally getting some code running on it.&lt;br /&gt;I've been feeling a bit more confident with gcc-m68k and I've been increasing the complexity of the programs. I managed to link in the gcc library (libgcc), I tried out the -msoftfloat option (compile, I didn't check the results of a floating operation yet) and I created my own putc and getc functions using the USART of the MC68901 (MFP) in pooled mode.&lt;br /&gt;I want to change my CRT0.S to include some hardware support functions before main() is run. Initialize the interrupt vectors (pointing to a "interrupt error" routine), printing some console message during initialization and doing some hardware test (RAM, MFP).&lt;br /&gt;I'm still unsure of a few things:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;An interrupt level 7 is basically a NMI, my system switches from ROM to RAM at the 8th clock, at the 9th clock if a NMI is pending the CPU will jump to an uninitialized vector! I must read the specs again but I think this could be a problem. Or not, if the system is int7 incapable (IPL2/0 or IPL1 permanently to 1) or has a gate enabling interrupts;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the MFP interrupt is physically enabled (i.e. connected to the CPU or gated by self for example)? (see point above), how does gcc link to interrupts (newer gcc versions work well ex. AVR-gcc), how do I place the vectors in memory?;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I want to build a gdb-stub/rom monitor, will it handle the vector allocation/writing? If so, my operating system (loading from somewhere ROM or disk) will also be in supervisor mode? (and also handle these?);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can/Should I implement some sort of memory protection (writes to first 1K-vectors and last 1K-SupervisorStack of RAM must be made in supervisor mode)?;&lt;/li&gt;&lt;li&gt;For the end project of a CP/M 68k what type of media do I use? Going back to floppies would be definitely cool but I'm sure I would need some sort of DMA as I don't think the 68000 is fast enough (and surely not at the current speed of 4MHz). With SD I'd use only a few I/O pins (from the MFP?) but some SD cards are only 3.3V and my system runs at 5V. Or I could use a Compact Flash card, most can work at 5V, and it is easy to get some old CF cards (64/128MB) or even a IBM microdrive I've found once &lt;a href="http://www.bgmicro.com/"&gt;here&lt;/a&gt;; I would need to build two 8bit ports (A output to control the drive, B for bidirectional data) and this is breadboard space...&lt;/li&gt;&lt;li&gt;I would also like to "upgrade" the logic circuits to one of the &lt;a href="http://bitsnbikes.blogspot.com/2010/02/cpld-smd-soldering.html"&gt;M4A5-32/32 I've build an adaptor&lt;/a&gt; for and change the DTACK circuit to actually drive the line when releasing the bus (until AS goes high).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Well for now that is a still a lot of work in progress, I doubt Spring and/or Summer will allow me more time but I'm trying to keep you posted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8906885948387060891?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8906885948387060891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8906885948387060891' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8906885948387060891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8906885948387060891'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/03/mini68k-adding-libraries-and-serial.html' title='mini68k adding libraries and serial port'/><author><name>J Silva</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8874176829490722672</id><published>2010-03-07T10:58:00.026+01:00</published><updated>2010-03-17T20:53:13.265+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>Arduino OpenSuse 11.2 (LED as light sensor)</title><content type='html'>I need to use my &lt;a href="http://www.adafruit.com/index.php?main_page=product_info&amp;amp;cPath=17_21&amp;amp;products_id=51"&gt;Arduino-shield-Breadboard&lt;/a&gt; for another project, so my &lt;a href="http://www.pachube.com/feeds/2757"&gt; Pachube-feed&lt;/a&gt; will be offline... for a while...&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s1600-h/p1000543.jpg"&gt;&lt;img style="margin: 0px auto 10px; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s320/p1000543.jpg" alt="" id="BLOGGER_PHOTO_ID_5381056998083564402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Next time around I'll add some more sensor that I have, like the &lt;a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;amp;cPath=4&amp;amp;products_id=11"&gt;relative humidity sensor&lt;/a&gt;.&lt;br /&gt;I took the time to upgrade to the new Arduino-0018, here I encountered some old and some new problems.&lt;br /&gt;First I needed to add my user to the dialout group in order to have access to the serial ports, as reported&lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1231626884/6"&gt; here (see last post)&lt;/a&gt;. The other problem was an old problem, with the standard avr-gcc distribution of OpenSuse you can't program an ATMega328. I didn't solved it right now but the how to is &lt;a href="http://bitsnbikes.blogspot.com/2009/09/building-gcc-toolchain-for-avr.html"&gt;here&lt;/a&gt;. But for now pachube is off-line (correction: is on-line but data is bogus).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jaagpad.blogspot.com/"&gt;Alex &lt;/a&gt;has a problem with his home monitoring system, he wants to monitor the amount of Water he uses by counting the turns of the pointer in the meter. He intends to use photo-reflexive sensor like &lt;a href="http://www.vishay.com/optical-sensors/list/product-83751/"&gt;this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Trying to help him, I started with using LEDs as sensors, Photodiodes are expensive and photodiode amplifiers difficult to build due to the very low bias current of the amplifier. My best results were using a IR LED as a sensor, but I'm still not sure if it will work with the set, in particular becase the sensor Alex has is a fototransistor not a photodiode, the principle used could be the same but instead of a reverse bias (anode to ground), the foto transistor must be actively biased (emitter to ground), the parasitic capacitor should still be discharged function of the light.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dS8vH8QMm5Y/S51QespZpzI/AAAAAAAAAAc/bn-MiLV7Lho/s1600-h/jcs003.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 205px;" src="http://3.bp.blogspot.com/_dS8vH8QMm5Y/S51QespZpzI/AAAAAAAAAAc/bn-MiLV7Lho/s320/jcs003.png" alt="" id="BLOGGER_PHOTO_ID_5448599612499273522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;A good source of information is &lt;a href="http://blog.makezine.com/archive/2009/08/ask_make_led_as_light_sensor.html"&gt;here&lt;/a&gt;, and &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.69.1570&amp;amp;rep=rep1&amp;amp;type=pdf"&gt;here&lt;/a&gt;, I based my code on the &lt;a href="http://www.arduino.cc/playground/Learning/LEDSensor"&gt;Arduino example&lt;/a&gt; but I changed the port programming instructions for direct port access instructions (DDRD, PORTD), it is not "elegant" for several reasons but it is a bit faster and gives better results at high light levels.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dS8vH8QMm5Y/S5vbnLQOE6I/AAAAAAAAAAM/1ZYMgygmo3w/s1600-h/P1010864.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dS8vH8QMm5Y/S5vbnLQOE6I/AAAAAAAAAAM/1ZYMgygmo3w/s320/P1010864.JPG" alt="" id="BLOGGER_PHOTO_ID_5448189640316949410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The available pre-compiled avr-gcc does not allow you to program the Arduino Diecimillia (ATmega328 is only possible to do assembly, no C or C++). So my update of the Temperature monitor will have to wait...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8874176829490722672?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8874176829490722672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8874176829490722672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8874176829490722672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8874176829490722672'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/03/arduino-opensuse-112-led-as-light.html' title='Arduino OpenSuse 11.2 (LED as light sensor)'/><author><name>J Silva</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://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s72-c/p1000543.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5312433325063763067</id><published>2010-02-27T18:04:00.008+01:00</published><updated>2010-03-17T21:11:08.688+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='gnucross'/><title type='text'>Das Blinklicht with gcc-elf-m68k</title><content type='html'>The first program you write when you learn a language is the "hello world" classic, in a embedded system where you don't have a serial port (or you don't know if it is working) you have to use "das blinklicht" example. Er... it's just a blinking LED.&lt;br /&gt;After setting up the cross compiler tool chain you'll need to set up the linker script and the crt0.s files.&lt;br /&gt;The linker script defines where (in physical addresses) is the RAM and ROM of your system, which sections of code go into where and in my case the reset vector and initial stack pointer. There are still some things missing (namely libraries, floating point and multiplication/aritmetic), but I'm a step closer. I must admit that I found these (crt0.s and ldscript) on the net but I don't remember where or who did them. I've just change them a little.&lt;br /&gt;Although the ROM is mapped on reset during the first 8 clocks at 0x00000, after the 8th clock ROM gets mapped at 0x80000. When you are programming a real eprom (or using my "linux-updated" rom emulator) you must move the code to the bottom of the ROM. This is accomplished with the command "AT".&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=LqY0KVpe"&gt;&lt;/script&gt;&lt;br /&gt;GCC creates a section of code for "initialized data" called .data, this section is put into ROM and at the start it is copied into RAM (at CRT0.S), with the blinklicht program I don't use any .data or .bss or even stack, so for now I will not test if this works.&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=PbQFQ5z1"&gt;&lt;/script&gt;&lt;br /&gt;Without using optimizations -O2 your software loops will not be cleared by the optimizer, and it is pretty easy calculate the time taken for the software loops.&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=1ieJbTEH"&gt;&lt;/script&gt;&lt;br /&gt;I had calculated an access to the MFP m68901 every 15us with a 4MHz clock and what I had was 30us.. I found the "problem" the next day, the instruction timing sheets are for the m68000 with its 16bit data bus, a 68008 takes two memory cycles for each of m68000, therefore twice as long.&lt;br /&gt;The simple makefile is here&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=NNpyTaEJ"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5312433325063763067?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5312433325063763067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5312433325063763067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5312433325063763067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5312433325063763067'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/das-blinklicht-with-gcc-elf-m68k.html' title='Das Blinklicht with gcc-elf-m68k'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-597421312240537106</id><published>2010-02-27T18:02:00.015+01:00</published><updated>2010-12-31T18:53:22.362+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (7) - Software, AVR assembly</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S4wwXdTxgiI/AAAAAAAAA2w/4KKc82DmuPA/s1600-h/P1010820.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S4wwXdTxgiI/AAAAAAAAA2w/4KKc82DmuPA/s320/P1010820.JPG" alt="" id="BLOGGER_PHOTO_ID_5443779229146776098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ok, finally google docs supports any type of file so I can post all the project files in one place: code, gerbers, gEDA design files and spreadsheet with the calculations, requirements. It is all &lt;a href="http://docs.google.com/leaf?id=0BwVl3Wne1nFtZDVjYzMxNjgtMzE4ZS00M2MyLTkzMDAtMmE1MDA1NjdhYjZl&amp;amp;hl=en"&gt;here&lt;/a&gt;.&lt;br /&gt;I decided to try out pastebin, so I'm updating this post with the code for everyone to take a peek... In this version I'm still working on the "when to turn on" routine, I think it still doesn't work as I initially intended... pastbin doesn't look so good to paste long assembly lines, but here it goes anyway..&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=FT8Wwpce"&gt;&lt;/script&gt;&lt;br /&gt;The software as it is now is working, it has some problems and "room for improvement" but it is working! You know the motto: Make it work, make it better!, make it faster!&lt;br /&gt;&lt;br /&gt;One of the improvements would be to limit the time the light is ON to about 30min-45minutes, this would allow the battery charge to progressively increase during the good sunlight days and progressively decrease on a sequence of bad sunlight days (as in this year for example).&lt;br /&gt;Other improvement could be a full darkness detection and adjust a 12h no light clock from there. It has happened that during the day when a big cloud (and/or heavy rain/heavy snow) the measured light level goes down to the "night" level, then if there's enough battery the light turns on... it shouldn't and I'm sure this winter is exceptional, but the only way to prevent this is to detect the lowest darkness point and count 12 hours from there, and only from then on the light would turn on when it is dark.&lt;br /&gt;&lt;br /&gt;In the code I added a debug routine that is included when the two variables are uncommented (DEBUG and DB_CNT), when I wanted to output a value I load it in the DEBUG variable and call dbug. The byte is output in the status LED serially MSB first, there is a long (2 cycles) high pulse followed by clock and MSB data, clock and bit 6 data... clock and LSB data.&lt;br /&gt;&lt;br /&gt;Finally my biggest problem was the branch instructions, the AVR has the following:&lt;br /&gt;BRLO - Branch if Lower (UNSIGNED)&lt;br /&gt;BRLT - Branch if Less than (SIGNED)&lt;br /&gt;BRGE - Branch if Greater or Equal (SIGNED)&lt;br /&gt;BRSH - Branch if Same or Higher (UNSIGNED)&lt;br /&gt;I was not used to have these complex branch instructions, I'm used to Zero Flag set, Zero Flag Clear, Carry set, Carry clear... I'm specially not used to having a different branch for signed or unsigned... So I chose wrong.. result the jumps were not taken when they should. The ADC values are unsigned when read (0..255) but if you start calculating with them you can get signed (negative) values and then you have to use signed instructions.&lt;br /&gt;AVR assembly programmer beware!&lt;br /&gt;&lt;br /&gt;A final word about the Code, it was assembled with Atmel AVR Studio Assembler (Win), it doesn't output the number of cycles per instruction... a bit of a let down... :-)&lt;br /&gt;And with this post I finish this project.... Woo Hoo!! Project is dead, long live the new Project...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-597421312240537106?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/597421312240537106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=597421312240537106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/597421312240537106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/597421312240537106'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/solarlight-7-software-avr-assembly.html' title='SolarLight (7) - Software, AVR assembly'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S4wwXdTxgiI/AAAAAAAAA2w/4KKc82DmuPA/s72-c/P1010820.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5568049571406411285</id><published>2010-02-27T17:31:00.015+01:00</published><updated>2010-12-31T18:53:53.536+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (6) - PCB Fabrication and Assembly</title><content type='html'>Using gEDA for producing gerbers turned out to be easier than I thought.&lt;br /&gt;Recently the gEDA project has been under fire in &lt;a href="http://hardware.slashdot.org/comments.pl?sid=1564716&amp;amp;cid=31289534"&gt;slashdot&lt;/a&gt; due to its "complicated", "non intuitive interface" and lack of documentation. I really don't think that the documentation is that bad, it is scattered but it is not bad, just look &lt;a href="http://geda.seul.org/wiki/geda:documentation"&gt;here&lt;/a&gt;. I haven't meet an Open Source project that didn't suffer from the same problem, even (and particularly) the GNU tools. As soon as you get out of the mainstream gcc/gas/ld/gdb you're almost on your own, searching bits and pieces in the internet. Some of the best GNU project documents have been written by a commercial enterprise (either redhat, cygnus or other).&lt;br /&gt;I call it Anarchic-Knowledge (or Anarco-Conhecimento in Portuguese), everyone omits to write what he finds trivial, forgetting that what is trivial to him, might not be for the community that will use the product. Then a plurality of tutorials, blog posts and guides show up, each one showing how they did it "their way". A new user &lt;span style="font-weight: bold;"&gt;has to pick all these pieces&lt;/span&gt;, try more than one and finally write a "I did it my way" post... And we all learn from this experience.It is not the lack of documentation, it is just the way that Open Source grows.&lt;br /&gt;Back to the how I did it... :-)&lt;br /&gt;I followed &lt;a href="http://geda.seul.org/wiki/geda:gsch2pcb_tutorial"&gt;this tutorial&lt;/a&gt;, I had a single page schematic so it was easy to generate the netlist. I created a single project file with the schematic libraries, I used my own symbols since not only I wanted to learn how to do them but also I had a MOSFET with two Drain Pins that I could use each in an independent circuit. I used shell scripts to get the job done, I tried once a Makefile but I realized that I would have to change the Makefile for every project (even smaller ones), a shell script can do that at invocation time.&lt;br /&gt;I also created some Footprints for my project (also for educational purposes), I had them in a library directory and used &lt;a href="http://www.luciani.org/geda/pcb/pcb-footprint-list.html"&gt;jcl's gnetlist invocation&lt;/a&gt; but with my directory instead. PCB must also be configured to have a pointer to your library in the "File-Preferences-Library".&lt;br /&gt;First follow what gschem2pcb tells you to do, open the file, import the parts, spread them and execute the command, then I put in most of the mechanical details, using the outline layer in a place where no components were place, size of the board, cuts, groves and fixing holes. Also check now for the DRC tolerances in the File-Preferences Menu.&lt;br /&gt;Then the fun begins, it is a very iterative process: place, route, looks good? can I do it better? with less vias? other mechanical problems? heat sinks/problems? repeat until satisfied with the design.&lt;br /&gt;Then I place some more information on the silkscreen, plus signs on the connectors, output indication, board reference, moved the references so that all are visible when the components are soldered and facing the same side (so that you don't need to rotate the board to read the references). I also place on the top and bottom layer a square with the layer number inside, so that you can identify the layers on the gerbers and on the boards.&lt;br /&gt;I was going to use &lt;a href="http://www.olimex.com/pcb/index.html"&gt;Olimex pcb prototype services&lt;/a&gt; for my first gEDA boards so I needed to limit the number of drill sizes, they have some drill sizes that are considered standard and any other is considered extra (and you pay more), luckily someone from the gEDA-user group already made a &lt;a href="http://ftp.sunet.se/geda/mailinglist/geda-user24/msg00045.html"&gt;drill mapping file for Olimex&lt;/a&gt; after executing the script run DRC again! Here's my final PCB result.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S4vQr6CEOWI/AAAAAAAAA2A/Jdz9G-33-JE/s1600-h/snapshot1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S4vQr6CEOWI/AAAAAAAAA2A/Jdz9G-33-JE/s320/snapshot1.png" alt="" id="BLOGGER_PHOTO_ID_5443674027338250594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can also export to png the two sides of the board in a "photo-like" picture, some people claim it gives better reading and it is easier to spot errors.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/S4vT3OS9qUI/AAAAAAAAA2I/3r2n7jnjr88/s1600-h/solarlight.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/S4vT3OS9qUI/AAAAAAAAA2I/3r2n7jnjr88/s320/solarlight.png" alt="" id="BLOGGER_PHOTO_ID_5443677520291277122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you have no errors in the last DRC you're ready to produce your gerbers, and this part is as easy as pressing the correct button in export. Then with gerbv, check if the gerbers look nice and the drill sizes are correct.&lt;br /&gt;Recently a &lt;a href="http://archives.seul.org/geda/user/Feb-2010/msg00419.html"&gt;good question&lt;/a&gt; came up in the geda-user mailing list, it sums it up nicely but the first reply reminded me of something I didn't do and should have done...&lt;blockquote&gt;Print out your surface copper layers and put the parts on the printout to make sure they match.&lt;/blockquote&gt;&lt;br /&gt;yup, I designed my resistors with a 1/8W in mind and then I couldn't find any I had to use 1/4W.. so the resistors didn't fit in place. My DIP 4 for the MOSFET also didn't had big enough holes, apparently International Rectifier didn't stick to the normal DIP drill sizes, probably due to current capability or thermal conductivity. In that point, with some hindsight, I would increase the copper area connected to the drain, that could be a good heat sink for the MOSFET. I also should have thought a bit more on how to fix the board to the pole, with the new batteries the SolarLight is much heavier, I should have devised other way to fix it. Here's the board in place, note the resistors in two layers.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/S4vbvJOSZHI/AAAAAAAAA2o/h6Pzkf9TNTk/s1600-h/P1010825.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/S4vbvJOSZHI/AAAAAAAAA2o/h6Pzkf9TNTk/s320/P1010825.jpeg" alt="" id="BLOGGER_PHOTO_ID_5443686177583555698" border="0" /&gt;&lt;/a&gt;UPDATE: The resistor that is hanging and has two sockets is the gate resistor of the MOSFET, if you check the spreadsheet with the calculations you can see that the gate current has great influence in the MOSFET power (losses), so I made it low enough to still allow programming easily (now at 100R). When programming the micro the light turns on, but without any damaging effect as long as the frequency (of programming is high enough 250k) and the pattern is sufficiently random (see &lt;a href="http://blog.designer-iii.com/lis302dl"&gt;here&lt;/a&gt; for a bigger problem with ISP port sharing).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S4vbu0dAZ8I/AAAAAAAAA2g/IKtWygADpvQ/s1600-h/P1010823.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S4vbu0dAZ8I/AAAAAAAAA2g/IKtWygADpvQ/s320/P1010823.jpeg" alt="" id="BLOGGER_PHOTO_ID_5443686172008146882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One last remark, if you buy microcontrollers in ebay and they say "New, Old Stock" it doesn't mean that they are not programmed, they can be factory programmed and that doesn't mean that they are not new! In case of the ATTiny15L, the low voltage programming mode can be disabled by this factory programming, if you solder it to the board you'll not be able to reprogram it. You need to remove it from the board and use a HVProgrammer like &lt;a href="http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=3891"&gt;AVRDragon&lt;/a&gt; for example. Learned the hard way...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5568049571406411285?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5568049571406411285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5568049571406411285' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5568049571406411285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5568049571406411285'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/solarlight-6-pcb-fabrication-and.html' title='SolarLight (6) - PCB Fabrication and Assembly'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S4vQr6CEOWI/AAAAAAAAA2A/Jdz9G-33-JE/s72-c/snapshot1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4319582647756798531</id><published>2010-02-19T22:46:00.003+01:00</published><updated>2010-02-20T13:15:33.718+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='cpld'/><title type='text'>CPLD SMD Soldering</title><content type='html'>Having received my boards and with my Weller working it was time to solder. I started with the CPLD adaptor, an adaptor I've build for my stack of old MACH211SP... I could also test my SMD soldering skills.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/S3_MbiSa5xI/AAAAAAAAA1s/VHtSjHYiB94/s1600-h/P1010638.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/S3_MbiSa5xI/AAAAAAAAA1s/VHtSjHYiB94/s320/P1010638.JPG" alt="" id="BLOGGER_PHOTO_ID_5440291648319448850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is the first step where two opposite pins of the PLCC are soldered into place. Next I'll have to "restart" my DesignDirect program in Windows XP. On a side note here's the schematic of the board.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/S3_STzptcJI/AAAAAAAAA10/I_7AHAZmEJ8/s1600-h/mproto.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/S3_STzptcJI/AAAAAAAAA10/I_7AHAZmEJ8/s320/mproto.png" alt="" id="BLOGGER_PHOTO_ID_5440298112611348626" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4319582647756798531?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4319582647756798531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4319582647756798531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4319582647756798531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4319582647756798531'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/cpld-smd-soldering.html' title='CPLD SMD Soldering'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/S3_MbiSa5xI/AAAAAAAAA1s/VHtSjHYiB94/s72-c/P1010638.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5966482909402717461</id><published>2010-02-19T22:44:00.005+01:00</published><updated>2010-02-20T12:44:09.537+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Weller WTCP-S Repair</title><content type='html'>This week as I was about to start soldering my boards my old trusted Weller WTCP-S started to fail, first ocasionally it wouldn't heat up until shaken, lattely not at all.&lt;br /&gt;Wanting to fix it (if possible) I opened it to check the famous "Magnastat", these Soldering Irons operate on the principle of the &lt;a href="http://en.wikipedia.org/wiki/Curie_temperature"&gt;Curie Temperature&lt;/a&gt;, where a magnet loses its magnetic properties at a certain temperature point.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/S3_JIaDZcVI/AAAAAAAAA1E/0t2nK9HANJM/s1600-h/P1010630.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/S3_JIaDZcVI/AAAAAAAAA1E/0t2nK9HANJM/s320/P1010630.JPG" alt="" id="BLOGGER_PHOTO_ID_5440288021156557138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Inside the casing there's a ferromagnetic piston and the tip is also magnet with a predetermined Curie point  (the number on the bottom of the tip), when the temperature is reached the magnet losses its properties, the piston is no longer pulled and the contact at the bottom opens, opening the heating circuit.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S3_JI0KorNI/AAAAAAAAA1M/KzG77by5epk/s1600-h/P1010631.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S3_JI0KorNI/AAAAAAAAA1M/KzG77by5epk/s320/P1010631.JPG" alt="" id="BLOGGER_PHOTO_ID_5440288028166237394" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/S3_JJN3IiaI/AAAAAAAAA1U/Wi8JnmvR__I/s1600-h/P1010634.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/S3_JJN3IiaI/AAAAAAAAA1U/Wi8JnmvR__I/s320/P1010634.JPG" alt="" id="BLOGGER_PHOTO_ID_5440288035063761314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/S3_JJxJ25XI/AAAAAAAAA1k/0EoLd58u1cU/s1600-h/P1010639.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/S3_JJxJ25XI/AAAAAAAAA1k/0EoLd58u1cU/s320/P1010639.JPG" alt="" id="BLOGGER_PHOTO_ID_5440288044537537906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I had to open the contact casing and clean the contacts, put it back together and test....&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/S3_JJTp153I/AAAAAAAAA1c/Qn93YhE6OVc/s1600-h/P1010637.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/S3_JJTp153I/AAAAAAAAA1c/Qn93YhE6OVc/s320/P1010637.JPG" alt="" id="BLOGGER_PHOTO_ID_5440288036618626930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;While cleaning the contacts the wiring came loose, so now I was facing a chicken'n'egg problem, how to solder a soldering iron?, the local &lt;a href="https://foswiki.sonologic.nl/RevelationSpace"&gt;hackerspace&lt;/a&gt; was the answer, I meet some really nice people in really nice location and they had a spare soldering iron I could use in their "electronics shack".&lt;br /&gt;Anyway got home, tested it and it works for now... but I expect it to fail again soon... I'm ordering a replacement today...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5966482909402717461?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5966482909402717461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5966482909402717461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5966482909402717461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5966482909402717461'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/weller-wtcp-s-repair.html' title='Weller WTCP-S Repair'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/S3_JIaDZcVI/AAAAAAAAA1E/0t2nK9HANJM/s72-c/P1010630.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-241258269301131569</id><published>2010-02-17T13:29:00.005+01:00</published><updated>2010-12-31T18:54:41.285+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (5) - PCBs!!!</title><content type='html'>I finally had the time to pick my PCBs at the mail. I was thrilled to see who it went... My first linux made PCBs!&lt;br /&gt;Everything went ok, except for a few minor point where I'm the only one to blame...&lt;br /&gt;Here are the pics to the solarlight board and the others, the last one is the RFadaptor that didn't go as well as I expected, but I'm the only one to blame....&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S3vuFMD3zpI/AAAAAAAAA0s/nXa6W3ikTzU/s1600-h/P1010621.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S3vuFMD3zpI/AAAAAAAAA0s/nXa6W3ikTzU/s320/P1010621.JPG" alt="" id="BLOGGER_PHOTO_ID_5439202747884228242" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/S3vuF4DKbVI/AAAAAAAAA08/0iwQU2E9z8k/s1600-h/P1010623.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/S3vuF4DKbVI/AAAAAAAAA08/0iwQU2E9z8k/s320/P1010623.JPG" alt="" id="BLOGGER_PHOTO_ID_5439202759692414290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is the one where the wholes are just the size of the pins (just not enough for them to get through)...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/S3vuFcyt3bI/AAAAAAAAA00/PErZKubvAaI/s1600-h/P1010622.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/S3vuFcyt3bI/AAAAAAAAA00/PErZKubvAaI/s320/P1010622.JPG" alt="" id="BLOGGER_PHOTO_ID_5439202752375676338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'll post how to get from PCB design to send them to Olimex (for example) for production. It's not that difficult but you need to follow some steps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-241258269301131569?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/241258269301131569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=241258269301131569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/241258269301131569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/241258269301131569'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/solarlight-5-pcbs.html' title='SolarLight (5) - PCBs!!!'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S3vuFMD3zpI/AAAAAAAAA0s/nXa6W3ikTzU/s72-c/P1010621.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7336840133217615918</id><published>2010-02-10T23:26:00.009+01:00</published><updated>2010-03-02T19:41:27.019+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='m68k'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='gnucross'/><title type='text'>Next Project Minimal CP/M 68k</title><content type='html'>The Solarlight project has been taking more than normal, but the truth is I haven't had much time lately...so I decided to announce my next project, revive a minimal CP/M-68k system and document the process. The main components are a MC68008 CPU, a MC68901 MPU, 512K of SRAM, 32k EPROM, and a IDE/ATA connector. The MPU (multi-peripheral unit) will serve as UART and probably as basic memory manager, the IDE interface will probably be based in &lt;a href="http://www.retrotechnology.com/herbs_stuff/gide.html"&gt;GIDE&lt;/a&gt; or something similar. While I'm still working on the schematics, I've already built the base circuit from my hand written schematics... here's a picture.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S3vrR910eGI/AAAAAAAAA0k/jghN0B2VhKI/s1600-h/P1010620.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S3vrR910eGI/AAAAAAAAA0k/jghN0B2VhKI/s320/P1010620.JPG" alt="" id="BLOGGER_PHOTO_ID_5439199668870608994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The &lt;a href="http://www.cpm.z80.de/source.html"&gt;sources&lt;/a&gt; and &lt;a href="http://www.cpm.z80.de/drilib.html"&gt;documentation&lt;/a&gt; of the code are available in Gaby's site. &lt;a href="http://anachronda.homeunix.com:8000/%7Erivie/cpm-vax/"&gt;This site&lt;/a&gt; used the sources to build a VAX version, so the sources appear not to have suffered from too much of "bit rot".&lt;br /&gt;For cross compiling and debugging I'll try to use binutils/gcc/gdb in remote mode. I'll try to build the cross tools (elf format, coff has been since long time killed) and a remote gdb-stub to download and debug some initial code... we'll see how it goes..&lt;br /&gt;Here I've already built the cross-compiler toolchain for m68k-elf (binutils-2.20, gcc-core-3.4.6, gdb-6.8 and newlib 1.18.0), I didn't use a more recent one because from searching gcc-3.x.x is easier to cross compile with the newlib, and I wanted to use a smaller libraries than libc.&lt;br /&gt;Download the sources from the &lt;a href="ftp://ftp.gnu.org/gnu/"&gt;gnu ftp site&lt;/a&gt; (except for newlib that is &lt;a href="ftp://sources.redhat.com/pub/newlib/index.html"&gt;here&lt;/a&gt;), I followed &lt;a href="http://ecos.sourceware.org/build-toolchain.html"&gt;this guide&lt;/a&gt; because not only it appeared simpler (no "bootstrap compiler" step)  but also it is dedicated to embedded systems. Don't forget to move newlib and libgloss inside the gcc directory and after the binutils compile put them in the path. I also used gnu gdb instead of insight but no other than that.&lt;br /&gt;Finally set the path in your .profile for your convenience, see &lt;a href="http://dev-loki.blogspot.com/2007/10/add-directory-to-your-path.html"&gt;here&lt;/a&gt; for details on OpenSuse.&lt;br /&gt;My first objective after building the system on a breadboard is to download a small m68k assembly program to the EPROM EMULATOR and see it run, then a small C program and finally a gdb-stub. Then I'll have to repeat the process since from that point on there must be a change in the linker file as programs stop being linked to ROM but linked to RAM.&lt;br /&gt;I've successfully assembled a  "loop:nop,nop,bra.s loop" but a few problems or "unknowns" remain...&lt;br /&gt;I've created my simple assembly file called test.S&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/*&lt;br /&gt;* test.S -- test file for assembler output&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#include "asm.h"&lt;br /&gt;.title "test.S - test file for assembler output m68k-elf-as"&lt;br /&gt;#define STACKSIZE 0x4000&lt;br /&gt;&lt;br /&gt;.data&lt;br /&gt;&lt;br /&gt;.text&lt;br /&gt;&lt;br /&gt;.extern __stack&lt;br /&gt;&lt;br /&gt;.global SYM (_start)&lt;br /&gt;SYM (_start):&lt;br /&gt;nop&lt;br /&gt;nop&lt;br /&gt;bra.s _start&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I assemble it with "m68k-elf-gcc -c test.S -o test.o" then link it still with gcc "m68k-elf-gcc test.o -o test.x -nostartfiles -nostdlib -v -fpic -WL,Ttest.ld"&lt;br /&gt;I had to include the -nostartfiles and -nostdlib to remove the standard crt0 and the global constructors for C++.&lt;br /&gt;My current linker file is very simple and probably some things are missing for a full C program compilation but for now things appear to be ok.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/* ld file for rom programs */&lt;br /&gt;/* for 8 cycles rom is at 0x00000 (fetch SP and PC), from then on 0x80000&lt;br /&gt;/* STARTUP(crt0.o) - no startup file*/&lt;br /&gt;OUTPUT_ARCH(m68k)&lt;br /&gt;OUTPUT_FORMAT(srec)&lt;br /&gt;SEARCH_DIR(.)&lt;br /&gt;/*&lt;br /&gt;*Setup the memory map of mini68k, stack grows down from high memory.&lt;br /&gt;*/&lt;br /&gt;MEMORY {&lt;br /&gt;ram (rwx) : ORIGIN = 0x01000, LENGTH = 0x80000-0x01000&lt;br /&gt;rom : ORIGIN = 0x80000, LENGTH = 64K }&lt;br /&gt;/*&lt;br /&gt;* allocate the stack to be at the top of memory, since the stack&lt;br /&gt;* grows down, also PUSH =&gt; -(SP) = xx, i.e. predecrement therefore&lt;br /&gt;* first stack address never gets written&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;PROVIDE (__stack = 0x80000);&lt;br /&gt;&lt;br /&gt;SECTIONS&lt;br /&gt;{&lt;br /&gt;.text :&lt;br /&gt;{&lt;br /&gt;_stext = .;&lt;br /&gt;*(.text .text.*)&lt;br /&gt;. = ALIGN(0x4);&lt;br /&gt;_etext = .;&lt;br /&gt;} &gt; rom&lt;br /&gt;&lt;br /&gt;.data :&lt;br /&gt;{&lt;br /&gt;*(.data .data.*)&lt;br /&gt;_edata = .;&lt;br /&gt;} &gt; ram&lt;br /&gt;&lt;br /&gt;.bss :&lt;br /&gt;{&lt;br /&gt;. = ALIGN(0x4);&lt;br /&gt;__bss_start = . ;&lt;br /&gt;*(.bss .bss.*)&lt;br /&gt;_end =  ALIGN (0x8);&lt;br /&gt;__end = _end;&lt;br /&gt;} &gt; ram&lt;br /&gt;} /* missing in the initial file - causes an error ld does not complain! - beware */&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then I can also successfully convert the object file test.x to a SRECORD file with the command "m68k-elf-objcopy -O srec test.x test.S19" and then revert the intermediate object file test.x to assembler with "m68k-lef-objdump -d -X test.x &gt; test.dis"&lt;br /&gt;After successfully removing all the initialization code gcc attaches to your code (with -nostartfiles -nostdlib(p.s. you only need the first one since you don't add any library function)) I was left with one question, why is my code placed at absolute address 0x80000054?? when I told in the linker file to put it at 0x80000 (less a few zeros in the middle) Here is the disassembly:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;test.x:     file format elf32-m68k&lt;br /&gt;&lt;br /&gt;Disassembly of section .text:&lt;br /&gt;&lt;br /&gt;80000054 &lt;_start&gt;:&lt;br /&gt;80000054: 4e71            nop&lt;br /&gt;80000056: 4e71            nop&lt;br /&gt;80000058: 60fa            bras 80000054 &lt;_start&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ok, this was a bug. I forgot a } in the memory definitions of the linker file *.ld... After adding it the code was located at the correct place 0x80000.&lt;br /&gt;Well there are still some hurdles to overcome, namely:&lt;br /&gt;- placing the start SP and start address in vectors 0 and 1;&lt;br /&gt;- place the other vector in ram&lt;br /&gt;- place the code in proper ROM addresses (and the initial SP,PC)&lt;br /&gt;- download the code and see it run...&lt;br /&gt;... the path through cross-gcc appears to be hard ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7336840133217615918?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7336840133217615918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7336840133217615918' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7336840133217615918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7336840133217615918'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/02/next-project-minimal-cpm-68k.html' title='Next Project Minimal CP/M 68k'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S3vrR910eGI/AAAAAAAAA0k/jghN0B2VhKI/s72-c/P1010620.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3964846878875630790</id><published>2010-02-10T17:24:00.000+01:00</published><updated>2010-02-10T22:02:39.542+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='opensuse'/><title type='text'>Reverse Engineering a EPROM emulator</title><content type='html'>While I'm waiting for the SolarLight PCBs to arrive I went on think about other projects...&lt;br /&gt;I had an old EPROM emulator that I bought a long time ago in ePay. It is quite small and it doesn't consume much power but it worked from the parallel port and the old DOS software was reluctant to work even under WinXP.&lt;br /&gt;I had to redone the parallel port interface board, as a soldered IC (74125) blew up when I powered the PC after the target board (note to self: power first PC then target). It was quite simple to draw up the schematic and redo the circuit on a perfboard. When I tried the DOS software with my new board all worked OK,  I was sure that the schematic and hardware were correctly reverse engineered.&lt;br /&gt;Of the 5 signals coming out of the parallel port, Reset and Output Enable were easy to spot, the others I suspected downloaded the data serially.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S3MSiS9CkcI/AAAAAAAAA0E/1cgBPJEn4rI/s1600-h/microrom.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S3MSiS9CkcI/AAAAAAAAA0E/1cgBPJEn4rI/s320/microrom.png" alt="" id="BLOGGER_PHOTO_ID_5436709555579032002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Reverse engineering software, on the other hand is far from trivial. I first tried my two channel xscope, but since there are actually three important variables it was difficult to really discover what was the sequence of events. Furthermore there was a start sequence where transitions where at the millisecond range and a program sequence where things happened at the microsecond range.&lt;br /&gt;Then I remembered I had a PICKIT 2, a tool I bought and used about two years ago to do a short Microchip PIC development (and re-learning since when I first learned about PICs the 16C84 was the craze, obsolete today). PICKit 2 was not only relatively cheap, programmed most of the devices, it also included a logic analyzer and a UART for remote debugging, all connected to a USB port. I must give a note of remark to Microchip that this was a stroke of genius, a scope is a an expensive tool, but by adding this functionality to a device-programmer is a well needed help in many non-working projects.&lt;br /&gt;I created a fixed intel hex file with 3 bytes 0x22,0xAA,0x44 than ran the program in a dosbox in windows (and using a parallel port access - Windows bypass - tool) waited for the signals to come out on the other side. Sometimes it worked, others it didn't but I registered the ones that did.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/S3MWwI0mBuI/AAAAAAAAA0M/HxDCAWq28RA/s1600-h/snapshot_s1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/S3MWwI0mBuI/AAAAAAAAA0M/HxDCAWq28RA/s320/snapshot_s1.png" alt="" id="BLOGGER_PHOTO_ID_5436714191423932130" border="0" /&gt;&lt;/a&gt;This in the above waveform the real data download is pictured, in this particular case I shifted the data to position 0x0001. From here it was easier to identify the signals, first is the clock, second data and third advance to next memory address.&lt;br /&gt;Then to capture the initial reset sequence I downloaded bigger programs, just to measure the timings of the sequence.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/S3MXFxXe19I/AAAAAAAAA0U/csiAPHjiK60/s1600-h/snapshot_s3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/S3MXFxXe19I/AAAAAAAAA0U/csiAPHjiK60/s320/snapshot_s3.png" alt="" id="BLOGGER_PHOTO_ID_5436714563084933074" border="0" /&gt;&lt;/a&gt;As you can see the waveforms are very detailed and although one cannot read signals above 500Khz chances are 99% of hobby projects will never need more than that.&lt;br /&gt;The code will be published or given as soon as I finish the other source file interpreters (S-Record, Binary and hex) for now only intel-hex works, I will also try to clean up the code and have it hosted in google code or similar as soon as I understand properly how to use it. I'll try to host all the software produced under a single project otherwise it is a waste of google's space.&lt;br /&gt;So that people that still have a similar eprom emulator, the name of the package was "MicroRom Eprom Emulator" and produced or sold by "Squarewave Electronics". Here is a picture of my test bench, the Eprom emulator is the big fat thing on the left, the top LEDs are the data out, the lower green leds the four LSBits, the selector on the top right corner is a BCD selector and finally the yellow led on its right is the reset signal.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/S3Mdq87u4lI/AAAAAAAAA0c/s3qXUaIVxg8/s1600-h/P1010608.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/S3Mdq87u4lI/AAAAAAAAA0c/s3qXUaIVxg8/s320/P1010608.JPG" alt="" id="BLOGGER_PHOTO_ID_5436721798914695762" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3964846878875630790?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3964846878875630790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3964846878875630790' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3964846878875630790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3964846878875630790'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/12/reverse-engineering-eprom-emulator.html' title='Reverse Engineering a EPROM emulator'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S3MSiS9CkcI/AAAAAAAAA0E/1cgBPJEn4rI/s72-c/microrom.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2714073829113087717</id><published>2010-01-31T13:19:00.003+01:00</published><updated>2010-01-31T14:00:26.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Hackerfruehstueck</title><content type='html'>It is really my version of the German Bauernfruehstueck, yesterday the &lt;a href="https://foswiki.sonologic.nl/RevelationSpace"&gt;local hackerspace&lt;/a&gt; had their new year's party and "official opening event", shame on me but I could not go.... hope I'll be able to meet some of the guys there.&lt;br /&gt;I hope this helps recovering from last night's party... I know it helps after long nights of kernel compilation and cross-toolchain building...(geek thought, sorry)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S2V-eKRFLWI/AAAAAAAAAzc/za2S2i3FvfI/s1600-h/P1010570.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S2V-eKRFLWI/AAAAAAAAAzc/za2S2i3FvfI/s320/P1010570.JPG" alt="" id="BLOGGER_PHOTO_ID_5432887582109543778" border="0" /&gt;&lt;/a&gt;Start by peeling the potatoes and cut them in slices of about 1cm thick, it is better if you use a type of potato that stays firm after cooking. I usually add in some vegetables, green beans are my favourite but other vegetable that cooks firm is fine (broccoli in small pieces). I usually steam them for about 15 minutes before going for the rest of the recipe.&lt;br /&gt;Start by frying the bacon for a few minutes, turn the bacon slices over, and let it cook for one minute. Add the potatoes and vegetables (and some onion if you want), some pepper and salt and mix gently, let the potatoes cook until they are golden, add some sliced parsley and remove from the fry pan.&lt;br /&gt;Do some scrambled eggs on the same pan (keeping some of the bacon's fat) and serve.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);" &gt;et voilà&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;..&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/S2V-eUgYw-I/AAAAAAAAAzk/0HAGuZFvAaY/s1600-h/P1010565.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/S2V-eUgYw-I/AAAAAAAAAzk/0HAGuZFvAaY/s320/P1010565.JPG" alt="" id="BLOGGER_PHOTO_ID_5432887584858096610" border="0" /&gt;&lt;/a&gt;A few after-thoughts:&lt;br /&gt;- remember your cholesterol bacon and eggs are your enemies, "but it tastes so good..";&lt;br /&gt;- the fruit juice is important, use orange or carrot juice, helps digestion :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2714073829113087717?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2714073829113087717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2714073829113087717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2714073829113087717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2714073829113087717'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/01/hackerfruehstueck.html' title='Hackerfruehstueck'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/S2V-eKRFLWI/AAAAAAAAAzc/za2S2i3FvfI/s72-c/P1010570.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7350869551626418619</id><published>2010-01-30T20:56:00.005+01:00</published><updated>2010-03-04T21:45:49.461+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensuse'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><title type='text'>Thinkpad X40 and openSUSE 11.2</title><content type='html'>Note to self... and anyone interested... Installing &lt;a href="http://en.opensuse.org/Welcome_to_openSUSE.org"&gt;openSUSE 11.2&lt;/a&gt; in a IBM thinkpad X40:&lt;br /&gt;- edit partitions yourself (don't trust a computer to do a man's job), create primary partition, &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;don't format as ext4 use ext3 instead(see update notes below)&lt;/span&gt;, mount root; create primary partition, format as swap - size must be at least half the memory (just used for hibernating);&lt;br /&gt;- install the languages you want (for OpenOffice dictionaries);&lt;br /&gt;- disable firewall (avoids frustration when playing with toys);&lt;br /&gt;- install development in C and KDE;&lt;br /&gt;- remove Games (although some bastards are hard to kill);&lt;br /&gt;- remove AppArmor, Beagle (optional, but if I don't know what they do, I don' t want them);&lt;br /&gt;- install minicom (to play with serial toys);&lt;br /&gt;- install kate (resonable window editor);&lt;br /&gt;- install zip and other utils;&lt;br /&gt;let it install for an good hour...&lt;br /&gt;let it auto-update... let it fail...reboot...&lt;br /&gt;let it auto-update again... now everything looks green... (the SUSE updater icon);&lt;br /&gt;search for "opensuse 11.2 restricted formats", don't read any warnings and go directly to the one-click install... click yes, accept import keys and "deny any wrong doing" regarding the dvd-read library.&lt;br /&gt;When finished reboot and have some food/coffee. Your system is ready to work... but for curious minds continue....&lt;br /&gt;Search "opensuse 11.2 science" click on opensuse_11.2 and copy the URL, open YAST and add a repository using the URL that you cutted, add and import key...&lt;br /&gt;In YAST go to software management and search for the following:&lt;br /&gt;- gEDA (install all programs);pcb (install pcb); gerbv; ngspice, gspiceui, gwave2;&lt;br /&gt;- AVR (install binutils,gcc, libc, avrdude);&lt;div&gt;&lt;div&gt;Search "OpenOffice updates stable", install repository as above.&lt;/div&gt;&lt;div&gt;Open Yast and then Software Management, select All in "package groups", in the programs window select "all in this list -&gt; update if newer version is available"&lt;br /&gt;That's it, your laptop is a electronics design workstation and avr cross development computer.&lt;br /&gt;Some things of opensuse need some extra work like SUSPEND and HIBERNATE, I also didn't managed to get dual head working "out of the box" and I'm reluctant to change the Xorg.conf... something I did when I had my first thinkpad a second-hand 340...&lt;br /&gt;&lt;br /&gt;And all this because I had a Sony reader for a week and then decided to return it (takes to long to render some PDFs with pictures, and sometimes it hangs), wanting to un-install calibre... I found out there is no such thing... damn!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://en.opensuse.org/skins/opensuse/images/common/geeko.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 129px; height: 85px;" src="http://en.opensuse.org/skins/opensuse/images/common/geeko.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Update&lt;/span&gt;: my old back&lt;a href="javascript:void(0)"&gt;&lt;/a&gt;up software failed first to copy the ext4 partition and then failed to install grub for booting. After battling with it for some time I decided to do a fresh install with ext3. It is a pain in the butt! I hate myself for it, I should have known better, you should never be an early adopter!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7350869551626418619?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7350869551626418619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7350869551626418619' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7350869551626418619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7350869551626418619'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/01/thinkpad-x40-and-opensuse-112.html' title='Thinkpad X40 and openSUSE 11.2'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7568667908281790974</id><published>2010-01-30T19:49:00.004+01:00</published><updated>2010-12-31T18:54:49.115+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (4) - gEDA, PCB and first corrections</title><content type='html'>It has been a while since my last post, but I've been busy... not so much on electronics projects, but projects of &lt;a href="http://anacrafts.blogspot.com/2010/01/christmas-hat.html"&gt;other kind&lt;/a&gt;... Nevertheless I've been working a bit on SolarLight.&lt;br /&gt;The &lt;a href="http://bitsnbikes.blogspot.com/2009/12/solarlight-3-first-prototype.html"&gt;prototype&lt;/a&gt; was working to light the LED but some other bits of the code were not working. Although the "light-on" function was working, the function checking the battery and checking the charging were not.&lt;br /&gt;After wake-up from reset (power-up or watchdog), the micro checks if the current Solar Panel voltage is &gt;200mV than the battery (a safe assumption it is charging) and if so increments a "charging timer", if this timer is less than 3hours, don't turn the light on. This is to be sure that there is some charging before a discharge. These and other checks were not working.&lt;br /&gt;De-evolution from C to Assembler is always a mess if you have to re-learn the mechanics of each architecture. It is not only the instructions, its how the micro "thinks", only then you really control the machine.&lt;br /&gt;On the hardware side I also had some problems, due to the limited number of pins I had to share some pins with the in circuit programmer, one of them is the MOSFET gate. I forgot to add a gate resistor to the source, in common MOSFETs with 10V gate threshold that is still asking for trouble, I guess that with LL (logic level) gate thresholds of 2V it is just "waiting to happen"... although it did take a couple of weeks...&lt;br /&gt;I guess what hapened was, after programming the AVR-ISP left the pin floating and probably before that the level was high... the MOSFET kept on and finally burned.. I saw smoke coming out...&lt;br /&gt;Here the new schematic with revisions on the lower corner.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/S2Sju7ukLwI/AAAAAAAAAzM/_C-zh0AM6ww/s1600-h/SolarLight.sch.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/S2Sju7ukLwI/AAAAAAAAAzM/_C-zh0AM6ww/s320/SolarLight.sch.png" alt="" id="BLOGGER_PHOTO_ID_5432647077217971970" border="0" /&gt;&lt;/a&gt;I also started the PCB design (with PCB part of gEDA suite) and I've now finished the board. It is not as packed as it could be because it has the size of a 3xAA pack. It is marked version 1.1 because I had finished the version 1.0 when the MOSFET blew up. I've mostly followed the tutorials available at the &lt;a href="http://geda.seul.org/wiki/geda:documentation"&gt;gEDA Documentation site&lt;/a&gt;:&lt;br /&gt; - &lt;a href="http://geda.seul.org/wiki/geda:gsch2pcb_tutorial"&gt;this one&lt;/a&gt; for the drawing of schematic and creating the netlist;&lt;br /&gt; - &lt;a href="http://www.delorie.com/pcb/docs/gs/gs.html"&gt;this one&lt;/a&gt; for drawing footprints and getting to know PCB;&lt;br /&gt; - and &lt;a href="http://geda.seul.org/wiki/geda:ngspice_and_gschem"&gt;this one&lt;/a&gt; for the simulation;&lt;br /&gt; - I also used &lt;a href="http://geda.seul.org/wiki/geda:tragesym_tutorial"&gt;this one&lt;/a&gt; for creating large "box symbols" (cpu, uart, etc)&lt;br /&gt;I used gschem directly to create the new MOSFET symbol (IRLD024), since the original MOSFET symbol was graphic I though it would be better to use it instead of having a 4 pin box. I also wanted to keep both Drain connections separated if needed to use them in separate nets  (although they are connected).&lt;br /&gt;Using gEDA is still far from trivial as components, footprints, schematics symbols are all your responsibility, but still, I'm starting to like it. PCB also has a nice feature, you can print "photo mode" version of your PCB (yes, I know other software produces 3D views), here's mine top side.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/S2SjvFVf62I/AAAAAAAAAzU/77R__aY4SW4/s1600-h/solarlight.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 269px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/S2SjvFVf62I/AAAAAAAAAzU/77R__aY4SW4/s320/solarlight.png" alt="" id="BLOGGER_PHOTO_ID_5432647079797189474" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7568667908281790974?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7568667908281790974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7568667908281790974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7568667908281790974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7568667908281790974'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/01/solarlight-4-geda-pcb-and-first.html' title='SolarLight (4) - gEDA, PCB and first corrections'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/S2Sju7ukLwI/AAAAAAAAAzM/_C-zh0AM6ww/s72-c/SolarLight.sch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5789137866224045690</id><published>2010-01-01T23:24:00.004+01:00</published><updated>2010-01-03T21:56:12.943+01:00</updated><title type='text'>Happy New Year</title><content type='html'>A year has gone by, another year has arrived, hoppefully it will bring more posts and projects.&lt;br /&gt;Happy New Year to all the readers and friends.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PittWmnYzvg/S0EDe5DL4eI/AAAAAAAAAzE/idWpL34d85I/s1600-h/P1010425.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5422619255575929314" border="0" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/S0EDe5DL4eI/AAAAAAAAAzE/idWpL34d85I/s320/P1010425.JPG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5789137866224045690?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5789137866224045690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5789137866224045690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5789137866224045690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5789137866224045690'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2010/01/happy-new-year.html' title='Happy New Year'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/S0EDe5DL4eI/AAAAAAAAAzE/idWpL34d85I/s72-c/P1010425.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-301868141206429938</id><published>2009-12-30T17:58:00.008+01:00</published><updated>2009-12-31T23:34:24.242+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>Accidents happen... hoppefully only in 2009</title><content type='html'>I apparently only write about my bike(s) when something bad happens, well today I was ran over by a car...&lt;br /&gt;I was comming from Pavillonengracht through the Stille Veerkade, night had just fallen, I was returning home after a small "shop tour" looking for agendas for 2010, a small computer mouse and a couple of pen refills.&lt;br /&gt;&lt;iframe marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Stille+Veerkade,+2512+The+Hague,+The+Netherlands&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=32.197599,56.513672&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Stille+Veerkade,+2512+Den+Haag,+Zuid-Holland,+The+Netherlands&amp;amp;ll=52.074082,4.314176&amp;amp;spn=0.000095,0.000216&amp;amp;t=h&amp;amp;z=22&amp;amp;layer=c&amp;amp;cbll=52.074453,4.314965&amp;amp;panoid=THgMq03IO3Lp0niRhuzZDg&amp;amp;cbp=12,72.03,,0,5&amp;amp;output=svembed" frameborder="0" height="350" scrolling="no" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Stille+Veerkade,+2512+The+Hague,+The+Netherlands&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=32.197599,56.513672&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Stille+Veerkade,+2512+Den+Haag,+Zuid-Holland,+The+Netherlands&amp;amp;ll=52.074082,4.314176&amp;amp;spn=0.000095,0.000216&amp;amp;t=h&amp;amp;z=22&amp;amp;layer=c&amp;amp;cbll=52.074453,4.314965&amp;amp;panoid=THgMq03IO3Lp0niRhuzZDg&amp;amp;cbp=12,72.03,,0,5" style="color: rgb(0, 0, 255); text-align: left;"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;I had my lights on, as I remember turning them on when leaving the last shop. I had the priority and I saw the car waiting, I thought he saw me... Unfortunately he did not! The car hit me on the pedals, lost my balance and fell to the floor on my side and hit the head. I was amazed on how fast the general public reacted, immediately someone came to me, told me not to move and called emergency service. They started talking to me too fast for me to understand, I asked if they could speak in English and they all changed to English. They asked the usual questions, "if I had lost conscience?,  pain in the neck?, if I thought I had anything broken?", "No,No,No" I said... the police arrived checked how I was, followed in a few minutes by the ambulance. By then I was pretty sure that I had nothing very serious, but I could have a broken rib.&lt;br /&gt;In the ambulance a quick check was made, nothing broken just some bruises... Blood pressure and pulse a bit high (I think I was in shock), but nothing serious apparently.&lt;br /&gt;Coming out of the ambulance, the police was waiting for ID check and note taking of the accident.&lt;br /&gt;The man that hit me was also a bit nervous, I greeted him told him that I was OK, we exchanged addresses and contacts for the insurance and parted ways. I'll have the bike at the repair shop next week.&lt;br /&gt;My sincere thanks to everyone that helped me, the casual people that called the police and came to help me, the Haaglanden politie and the Emergency Service in the ambulance.&lt;br /&gt;The Kronan was not left in a good shape, she had taken most of the hit... we'll see how she'll recover from this one...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Sz0jSUvT4uI/AAAAAAAAAyU/69IrFP-uAEU/s1600-h/P1010396.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Sz0jSUvT4uI/AAAAAAAAAyU/69IrFP-uAEU/s320/P1010396.JPG" alt="" id="BLOGGER_PHOTO_ID_5421528324135707362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Sz0jTQWzCoI/AAAAAAAAAyk/P_blfrOknAU/s1600-h/P1010403.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Sz0jTQWzCoI/AAAAAAAAAyk/P_blfrOknAU/s320/P1010403.JPG" alt="" id="BLOGGER_PHOTO_ID_5421528340139018882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sz0jS59nWZI/AAAAAAAAAyc/Xls-BTTbQRA/s1600-h/P1010397.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sz0jS59nWZI/AAAAAAAAAyc/Xls-BTTbQRA/s320/P1010397.JPG" alt="" id="BLOGGER_PHOTO_ID_5421528334127815058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;.... Update, after taking the bike to the incompetent bike shop under Den Haag Centraal Station, on the first ride I noticed the frame was bent... really bad... I'm not very hopeful that the bike can be repaired :-( ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-301868141206429938?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/301868141206429938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=301868141206429938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/301868141206429938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/301868141206429938'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/12/accidents-happen-hoppefully-only-in.html' title='Accidents happen... hoppefully only in 2009'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/Sz0jSUvT4uI/AAAAAAAAAyU/69IrFP-uAEU/s72-c/P1010396.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3910696188882584559</id><published>2009-12-19T17:27:00.010+01:00</published><updated>2010-12-31T18:54:57.517+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (3) - First Prototype</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sz45ORoAXII/AAAAAAAAAys/CxK9eHc7LO0/s1600-h/P1010178.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sz45ORoAXII/AAAAAAAAAys/CxK9eHc7LO0/s320/P1010178.JPG" alt="" id="BLOGGER_PHOTO_ID_5421833918812806274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well after the initial breadboard, I decided to do some extra work on the Solarlight. I built a perfboard/smd board prototype and as usual I had to do some "adjustments".&lt;br /&gt;Since my ATTiny45U in DIP are "precious" I wanted to use instead one of my ATTiny15L that I had around (a previous buy in ebay).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sz45O7gKN3I/AAAAAAAAAy0/1nG6KGJ-dn8/s1600-h/P1010185.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sz45O7gKN3I/AAAAAAAAAy0/1nG6KGJ-dn8/s320/P1010185.JPG" alt="" id="BLOGGER_PHOTO_ID_5421833930054186866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There are some major differences between the Tiny45 and the Tiny15L:&lt;br /&gt;- Software - the Tiny15L does not have RAM and has a fixed length stack (3), programming it using avr-gcc is difficult and involves "tweaking" the code (see more &lt;a href="http://www.lightner.net/avr/ATtinyAvrGcc.html"&gt;here&lt;/a&gt;). The Tiny15L also does not have the debugwire interface, so debugging is a bit more difficult. Therefore I decided to develop the code in AVRStudio in windows (bah!) in assembler, as much as I like linux the simulators available are still far from perfect. One final remark on the simulator in AVRStudio, always read the notes about your processor, in the case of the ATTiny15L the watchdog is not simulated and the noise reduction sleep/wake-up on ADC conversion complete is not simulated!!&lt;br /&gt;- Hardware - the pins and ADC input PB3/PB4 are switched (mentioned &lt;a href="http://bitsnbikes.blogspot.com/2009/11/solarlight.html"&gt;here&lt;/a&gt;), the ADC converter internal reference is fixed to 2.56V (ATTiny45U has 2.56V and 1.1V), the ATTiny45U has more power saving options and the frequency of the maximum PLL frequency (important for a high speed converter) is higher on the Tiny45 (8x8MHz=64MHz) than on the Tiny15 (16x1.6MHz=25.6MHz), the CPU clock also higher on the Tiny45 (8MHz) against the Tiny15 (16MHz).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Sz45PST-LII/AAAAAAAAAy8/ZIcUBpQE0-Y/s1600-h/P1010182.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Sz45PST-LII/AAAAAAAAAy8/ZIcUBpQE0-Y/s320/P1010182.JPG" alt="" id="BLOGGER_PHOTO_ID_5421833936177081474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The light is working but there are still some software issues to solve. As I mentioned the ATtiny15L does not have the debugwire interface, in order to debug the project I decided to encode data in the status LED as a bit-banged serial port (like &lt;a href="http://www.atmel.com/dyn/resources/prod_documents/DOC0952.PDF"&gt;this one&lt;/a&gt;), when I want to see a value of a conversion or get a check point or value, I change the code and wait for it to show up on the scope.&lt;br /&gt;I also decided that I had to have a way of forcing a full light mode and a half light mode (both independent of the battery and charging) in case I connected the light using an adaptor (no solar light mode). For this I thought of using this same status pin, curiously this pin is placed between VCC and GND in the programming connector, so a simple jumper could activate these modes in the final product.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3910696188882584559?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3910696188882584559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3910696188882584559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3910696188882584559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3910696188882584559'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/12/solarlight-3-first-prototype.html' title='SolarLight (3) - First Prototype'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Sz45ORoAXII/AAAAAAAAAys/CxK9eHc7LO0/s72-c/P1010178.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-383102737225815290</id><published>2009-11-27T13:43:00.012+01:00</published><updated>2010-12-31T18:55:04.400+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight (2) and gEDA simulation</title><content type='html'>An update over SolarLight, I finally managed to print waveforms from ngspice in OpenSuse 11.2 . For some reason the interface is not what you would expect and it has become much more complicated to print a waveform than before.&lt;br /&gt;The first time I installed gEDA from the sources (under OpenSuse 10.3), now I'm using a precompiled version from the OpenSuse Science repository, it could be that the precompiled version has the printer interface "disabled" in some way.&lt;br /&gt;Back to waveform printing, under ngspice one would follow the following path to simulate and plot a waveform:&lt;br /&gt;&lt;blockquote&gt;tran 100n 1.5m&lt;br /&gt;plot v(501),v1000#branch&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;In the case of the SEPIC circuit of a previous post this would run transient simulation until t=1.5ms with a minimum time step of 100ns (try not to have more than a few thousand simulation points), the second line would open a new window with the output voltage and LED current displayed.&lt;br /&gt;Previously when I pressed in the hardcopy button the print interface would appear and I could chose the printer and/or print to file. Now a message appears in the console:&lt;blockquote&gt;The file "/tmp/hc4803" may be printed with the Unix "plot" command,or by using the '-g' flag to the Unix lpr command.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you try the "lpr -g" command either the system complains that it is not supported or that no printer is installed.&lt;blockquote&gt;lpr: Warning - 'g' format modifier not supported - output may not be correct!&lt;br /&gt;lpr: Error - no default destination available.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;After installing plotutils I managed to convert the plotted file (hc4803) to almost any known format (for example postscript or png) with the command:&lt;blockquote&gt;plot --output-format ps hc4803 &gt; hc4803.ps&lt;br /&gt;plot --output-format png hc4803 &gt; hc4803.png&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This allows the plots to be printed and included in documents or webpages, the plot looks something like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Sw_VfLCTqaI/AAAAAAAAAx4/asvfcsoYoSs/s1600/hc5271.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Sw_VfLCTqaI/AAAAAAAAAx4/asvfcsoYoSs/s320/hc5271.png" alt="" id="BLOGGER_PHOTO_ID_5408776409010383266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then I wanted to try out gwave, gwave is a waveform viewer, part of the gEDA package but its use is far from trivial. First in gwave you must run a simulation and then write the data to a file:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;tran 100ns 1.5ms&lt;br /&gt;write plotdata.dta&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;then run gwave with this data.&lt;blockquote&gt;&lt;br /&gt;gwave plotdata.dta&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The interface is far from trivial, I was unable to use colours for the plot and I also had error while trying to print a plot, but at least I could see some waveforms. Results may vary depending on your installed system, but here is a screenshot of the program, the waveforms are in gray on black background:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Sw_x0E9fXeI/AAAAAAAAAyA/jysDZ_gITkc/s1600/snapshot1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Sw_x0E9fXeI/AAAAAAAAAyA/jysDZ_gITkc/s320/snapshot1.png" alt="" id="BLOGGER_PHOTO_ID_5408807554482396642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm now temped in building the gEDA toolsuite from scratch... but for that I need some more time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-383102737225815290?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/383102737225815290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=383102737225815290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/383102737225815290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/383102737225815290'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/11/solarlight-2-and-geda-simulation.html' title='SolarLight (2) and gEDA simulation'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/Sw_VfLCTqaI/AAAAAAAAAx4/asvfcsoYoSs/s72-c/hc5271.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7068957150198902925</id><published>2009-11-22T23:00:00.012+01:00</published><updated>2010-12-31T18:55:10.086+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Solarlight'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>SolarLight</title><content type='html'>&lt;a href="http://bitsnbikes.blogspot.com/2009/05/solar-cells-testing.html"&gt;Some time&lt;/a&gt; ago I had the idea of building a LED lamp that was solar powered, harvesting the Sun  during the day and charging the battery, while at night deliver some light. The idea was to extend the hours of light of my peppers during the winter, once the vase was inside the house.&lt;br /&gt;&lt;br /&gt;For the initial design I wanted to use two old Ni-Cd batteries and for this supply voltage I would need to use a low voltage oscillator circuit as the minimum voltage would be around 2.0V. The converter would be a &lt;a href="http://en.wikipedia.org/wiki/Boost_converter"&gt;boost converter&lt;/a&gt; since the &lt;a href="http://www.philipslumileds.com/products/luxeonk2/"&gt;Luxeon K2 I had&lt;/a&gt; were rated for minimum 2.79V. I started by using a general Boost converter design procedure, and then simulate the circuit in gEDA/SPICE/ngspice.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Swwxl8cw-lI/AAAAAAAAAxA/-C9BJ51N7JI/s1600/boost.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Swwxl8cw-lI/AAAAAAAAAxA/-C9BJ51N7JI/s320/boost.png" alt="" id="BLOGGER_PHOTO_ID_5407751780516821586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I stumbled in two problems:&lt;br /&gt;- after some tries with simple transistor oscillator circuits, low voltage comparators, and  PWM modulators I decided to use a micro-controller. The biggest problem was the low voltage, even the low voltage circuits shut-down at 3.0V. Then I decided to use a low-voltage micro like the &lt;a href="http://www.atmel.com/dyn/products/product_card.asp?PN=ATtiny45"&gt;ATTiny45U&lt;/a&gt; capable of operating from 1.8V.&lt;br /&gt;-The booster wasn't working, the LED was conducting slightly when the oscillator was off, a known problem with boosters, if the load consumes power at the input voltage minus a diode drop the circuit is always draining the battery.&lt;br /&gt;&lt;br /&gt;Finally I decided to redesign the circuit using a 3 element battery, this time a scrap battery from a mobilephone Li-Mh with 3.7V, this would ease the micro selection (&lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2033"&gt;Attiny15L&lt;/a&gt; that &lt;a href="http://bitsnbikes.blogspot.com/2009/05/munny-software.html"&gt;I used before&lt;/a&gt;) and I had to change the type of converter to a &lt;a href="http://en.wikipedia.org/wiki/SEPIC_converter"&gt;SEPIC&lt;/a&gt;, that allows the use of a battery with a voltage close to the LED  conduction voltage. The circuit has the advantage of being capable of boosting or dropping the input voltage, this &lt;a href="http://www.national.com/an/AN/AN-1484.pdf"&gt;application note&lt;/a&gt; and &lt;a href="http://www.maxim-ic.com/appnotes.cfm/appnote_number/1051/"&gt;this one&lt;/a&gt; are quite useful for the design phase. Since the load is an LED I allowed a bigger fluctuation in the inductor currents and of the output current, then I chose the operating frequency function of inductors I had available.&lt;br /&gt;&lt;br /&gt;Again, after calculating the circuit components I drew a circuit in gEDA and simulated the circuit. As a general design procedure the circuit I use to simulate is very different from the one that I'll build in the breadboard/PCB.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Swwz_LJFCAI/AAAAAAAAAxI/AFekv-tO50U/s1600/sepic.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Swwz_LJFCAI/AAAAAAAAAxI/AFekv-tO50U/s320/sepic.png" alt="" id="BLOGGER_PHOTO_ID_5407754412980766722" border="0" /&gt;&lt;/a&gt;I placed some components inside green boxes to simulate real inductors with series resistance and real capacitors with series resistance. The voltage sources with zero voltage in some branches allow measurement of the current in the branch. I could not find the correct MOSFET (IRLD024)  model, instead I used the model (IRFD024) of a similar one but with a different Gate Threshold Voltage. Also as a common procedure to minimize size of the files and speed up processing, I create a smaller library file, containing only the models used. I wanted to show a waveform but since I updated my OpenSuse install to 11.2 I'm unable to print ngspice plots...&lt;br /&gt;&lt;br /&gt;After verifying that the circuit worked, I designed the final schematic with the micro-controller and the voltage dividers of the various analog inputs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Sww514mPyCI/AAAAAAAAAxQ/1rKwtTU2y6Y/s1600/SolarLight.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Sww514mPyCI/AAAAAAAAAxQ/1rKwtTU2y6Y/s320/SolarLight.png" alt="" id="BLOGGER_PHOTO_ID_5407760850453776418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The software was straight forward, start the high speed oscillator, start the PWM generator, read voltages, take decisions and increase/decrease PWM output. One note worth mentioning is that the ATTiny85 and the ATTiny15 have two input ports exchanged (Port PB4/PB3 - Pins 2/3) although the ADC inputs are the same!&lt;br /&gt;Here is a couple of pictures of the circuit, the first charging and the second working.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Sww_kAwZ7lI/AAAAAAAAAxw/r3-KnrjO-OQ/s1600/P1000847.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Sww_kAwZ7lI/AAAAAAAAAxw/r3-KnrjO-OQ/s320/P1000847.JPG" alt="" id="BLOGGER_PHOTO_ID_5407767140475989586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sww_j-u43FI/AAAAAAAAAxo/5HakAzB3hMM/s1600/P1000822.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sww_j-u43FI/AAAAAAAAAxo/5HakAzB3hMM/s320/P1000822.JPG" alt="" id="BLOGGER_PHOTO_ID_5407767139932757074" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7068957150198902925?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7068957150198902925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7068957150198902925' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7068957150198902925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7068957150198902925'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/11/solarlight.html' title='SolarLight'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Swwxl8cw-lI/AAAAAAAAAxA/-C9BJ51N7JI/s72-c/boost.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2389300715396126255</id><published>2009-11-22T18:07:00.007+01:00</published><updated>2010-12-31T19:31:36.895+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 Developments - Casing and altri</title><content type='html'>After some consideration I decided not to use the plastic casing I had bought for the SBC6120. I thought that a metal casing would be much more appropriate, I found one from &lt;a href="http://www.hammondmfg.com/"&gt;Hammond&lt;/a&gt; that could fit the SBC and a hard disk.&lt;br /&gt;I want to use the services of &lt;a href="http://www.frontpanelexpress.com/"&gt;these gentleman&lt;/a&gt; to design the front and back plane, but at about 20€ per panel, I might go for the front panel only. I found the old digital equipment corporation logo and I'm using Helvetica to do the "pdp-8".&lt;br /&gt;I plan to use the power adaptor and the internal power supply (+5V,+12V) from an old external hard disk casing. The point is to be able to insert in the case any type of IDE hard disk, 3.5' 2.5' or even Compact Flash.&lt;br /&gt;The SBC6120/OS-8 supports a maximum disk size of 2Mbytes, so with 16Mbytes you'd have the equivalent to 8 hard disks of the time and probably be able to fit all the "interesting" software ever compiled/assembled for the PDP-8.&lt;br /&gt;My problem has been finding a IDE 3.5 inch hard disk with a few megabytes, something in the range of 32/64 Mega bytes... it's becoming almost impossible to find hard drives in the Megabyte range...&lt;br /&gt;So to start with something, I went with a old CF of 64 Megabytes and an IDE adaptor, the SBC6120 recognized the drive. These old CFs were bought in a "spare-parts electronics" shop for 1€.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Swmemc3V-hI/AAAAAAAAAw4/LJsVy45VjYg/s1600/P1000980.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Swmemc3V-hI/AAAAAAAAAw4/LJsVy45VjYg/s320/P1000980.JPG" alt="" id="BLOGGER_PHOTO_ID_5407027211055528466" border="0" /&gt;&lt;/a&gt;I used HyperTerminal (in Windows) and Minicom (linux) to download an disk image, but I had to change the communication protocol is 9600 baud, 7 bits, mark parity, one stop bit (9600 7M1). I also added 100ms delay after each line feed so that the SBC6120 has time to write the sector. I believe this to be a CF problem as it does not have a disk cache, probably with a real hard disk it will work without the delay.&lt;br /&gt;I've downloaded an image provided in the sparetimegizmos site and the next day I checked if it had loaded ok... Boot the SBC6120, type in a DIR and wait for results... Success!! a directory listing appears...&lt;br /&gt;Now I just need to finish the case, find a hard drive and learn how to work with OS-8 :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2389300715396126255?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2389300715396126255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2389300715396126255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2389300715396126255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2389300715396126255'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/11/sbc6120-developments-casing-and-altri.html' title='SBC6120 Developments - Casing and altri'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Swmemc3V-hI/AAAAAAAAAw4/LJsVy45VjYg/s72-c/P1000980.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1841487416208040819</id><published>2009-09-27T14:00:00.006+02:00</published><updated>2010-04-18T10:59:29.042+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>Peppers update</title><content type='html'>My chilly crop has had its ups and downs. Some time ago the leaves of most stems where becoming yellowish and falling, latter the cause was known to be over-watering of the plants. Since reducing the water to once every three/four days (from once every day) the leaves started growing again and of a vivid green color.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Sr-OIRmmfsI/AAAAAAAAAwo/p_h53j7ScAY/s1600-h/p1000626.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Sr-OIRmmfsI/AAAAAAAAAwo/p_h53j7ScAY/s320/p1000626.jpg" alt="" id="BLOGGER_PHOTO_ID_5386179952173809346" border="0" /&gt;&lt;/a&gt;When the temperatures are forecast to reach below 5 degrees centigrade during the night I bring the vase inside, otherwise most of the time the vase is outside facing southwest/west.&lt;br /&gt;&lt;br /&gt;Nevertheless, our strange looking pepper is only now becoming reddish, it is supposed to be a Jalapeño, but it is curlier than most peppers I've ever seen. Most people don't know but before peppers become red and ripe, they go through a stage where they are mostly brown/black. Since the strange pepper is a bit bigger than most the color transition takes more time and you can see the color grading from green to red going through brown.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/Sr-OH6HCAHI/AAAAAAAAAwg/7b64HMOzETw/s1600-h/p1000624.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/Sr-OH6HCAHI/AAAAAAAAAwg/7b64HMOzETw/s320/p1000624.jpg" alt="" id="BLOGGER_PHOTO_ID_5386179945867378802" border="0" /&gt;&lt;/a&gt;The leaves of this particular pepper are still yellowish, but at least they're not falling... I hope it recovers soon and reaches maturity A.S.A.P.&lt;br /&gt;&lt;br /&gt;Meanwhile a new flower has open... so probably more peppers are expected for Christmas...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/Sr-OIwuzqHI/AAAAAAAAAww/IshktWqmgSs/s1600-h/p1000629.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/Sr-OIwuzqHI/AAAAAAAAAww/IshktWqmgSs/s320/p1000629.jpg" alt="" id="BLOGGER_PHOTO_ID_5386179960529725554" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1841487416208040819?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1841487416208040819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1841487416208040819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1841487416208040819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1841487416208040819'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/09/peepers-update.html' title='Peppers update'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/Sr-OIRmmfsI/AAAAAAAAAwo/p_h53j7ScAY/s72-c/p1000626.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1538257453524011761</id><published>2009-09-27T10:07:00.004+02:00</published><updated>2009-09-27T10:33:44.031+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='pachube'/><title type='text'>Feeding data to Pachube from Arduino</title><content type='html'>After having done the &lt;a href="http://bitsnbikes.blogspot.com/2009/09/arduino-home-monitor.html"&gt;Arduino Home monitor&lt;/a&gt; I wanted to put data on a webpage and do some graphics. Alex suggested putting it at &lt;a href="http://www.blogger.com/www.pachube.com"&gt;Pachube&lt;/a&gt;, as he also has some of his house data there and he had an invitation "to offer". (Thanks Alex!).&lt;br /&gt;Patcube can be feed with data by your application from time to time or Pachube's server requests data from time to time to your "Web-enabled-application". Since I wanted to keep my arduino serving my "human-readable-webpages", I thought of creating a "virtual file" that would Pachube would fetch to get the data. On their Tutorial pages, Pachube has a &lt;a href="http://community.pachube.com/node/17"&gt;sample application&lt;/a&gt; for feeding data from an Arduino to Pachube. The Tutorial example posts data to the Pachube server from time to time. Since I still wanted to keep my normal webserver and check the temperature online I decided to go the other way and create a comma separated values (csv) page that Pachube would fetch.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sr8gD6E5auI/AAAAAAAAAwY/Tsww6XB8vTU/s1600-h/p1000621.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sr8gD6E5auI/AAAAAAAAAwY/Tsww6XB8vTU/s320/p1000621.jpg" alt="" id="BLOGGER_PHOTO_ID_5386058930859895522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This was a bit more difficult than I expected. Before to any access to port 80, the Arduino would reply with my info webpage, but now I had to determine which webpage was accessed. I had to parse the GET command from the browser/server and provide the requested page.&lt;br /&gt;After implementing this "virtual file system" I had another hurdle to overcome, Pachube was always complaining that my CSV page didn't have the correct format. After reading the &lt;a href="http://community.pachube.com/quickstart"&gt;quickstart&lt;/a&gt; a few more times and the http/html specification I added the correct header and an empty line at the end, and it finally Pachube started collecting data correctly.&lt;br /&gt;&lt;br /&gt;Finally I wanted to increase the precision of the analog to digital converter (ADC) of the Arduino, specially when reading the LM35 temperature. The LM35 outputs 10mV per degree Centigrade so it will output a full volt at 100 degrees Centigrade, in order to increase the resolution of the ADC the reference voltage must be lowered to close the value in range.&lt;br /&gt;The Arduino provides the option of using either an internal reference (of 1.1V), an external reference (selected externaly) or the default supply voltage (5V in the Arduino Duemilanove). The internal reference is 1.1V so it would beter to use it for the LM35, but for the Light sensor the best is the 5V reference.&lt;br /&gt;So I needed to change reference between conversions, there are a couple of problems when trying to change reference. When default is selected there is a low impedance connection between the reference and the ADC, so when the reference is changed the ATMega168 datasheet says that at least one measurement will be incorrect (I do two for safety). The problem with the internal reference is that it has a high impedance connection to the ADC, so any change takes more time to charge referece input of the ADC, the problem is that the datasheet does not say how much... so I change the reference to internal first and wait for the next webpage request and do the temperature conversion first, this increases the precision of the measurements if the webpage requests are not too frequent.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*&lt;br /&gt;* Web Server&lt;br /&gt;* based on the original webserver example.&lt;br /&gt;* processes the GET command from the http client.&lt;br /&gt;* supports two pages, one readable for humans /info.html other in CSV for computers /csv.html&lt;br /&gt;*/&lt;br /&gt;/*&lt;br /&gt;*==== Typical HTTP request ====&lt;br /&gt;*GET / HTTP/1.0[CRLF]&lt;br /&gt;*Host: www.google.com[CRLF]&lt;br /&gt;*Connection: close[CRLF]&lt;br /&gt;*User-Agent: Web-sniffer/1.0.29 (+http://web-sniffer.net/)[CRLF]&lt;br /&gt;*Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7[CRLF]&lt;br /&gt;*Cache-Control: no[CRLF]&lt;br /&gt;*Accept-Language: de,en;q=0.7,en-us;q=0.3[CRLF]&lt;br /&gt;*Referer: http://web-sniffer.net/[CRLF]&lt;br /&gt;*[CRLF]&lt;br /&gt;*==== Typical HTTP request ====&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#include &amp;lt;ethernet.h&amp;gt;&lt;br /&gt;#define DEBUG&lt;br /&gt;&lt;br /&gt;byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };&lt;br /&gt;byte ip[] = { 192, 168, 2, 253 };&lt;br /&gt;//These were not needed, i.e. without them the ethernet shield works ok with my router&lt;br /&gt;//byte gateway[] = { 192, 168, 2, 254 };&lt;br /&gt;//byte subnet[] = { 255, 255, 255, 0 };&lt;br /&gt;&lt;br /&gt;// handle requests at port 80&lt;br /&gt;Server server(80);&lt;br /&gt;&lt;br /&gt;// values of temperature and light&lt;br /&gt;long tmprtr,lght;   &lt;br /&gt;&lt;br /&gt;char cmmnd;  /* received command = {G|P} for GET or PUT */&lt;br /&gt;char args[20];  /* requested file,arguments */&lt;br /&gt;char host[20];  /* host ip address*/&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  Ethernet.begin(mac, ip);&lt;br /&gt;  server.begin();&lt;br /&gt;  #ifdef DEBUG&lt;br /&gt;  Serial.begin(9600);      // serial port for debug&lt;br /&gt;  #endif&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Get and convert analog input values&lt;br /&gt;//&lt;br /&gt;void get_values(void)&lt;br /&gt;{&lt;br /&gt;  tmprtr=((long)analogRead(0)*1100)/1024;&lt;br /&gt;  analogReference(DEFAULT);&lt;br /&gt;  analogRead(1); /* discard value */&lt;br /&gt;  analogRead(1); /* discard value */&lt;br /&gt;  lght=(long)analogRead(1)*1000/1024;&lt;br /&gt;  analogReference(INTERNAL);&lt;br /&gt;  analogRead(0); /* discard value - see ATMEGA168 datasheet on change reference */&lt;br /&gt;  analogRead(0); /* discard value - for safety*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Begin of HTML page, fixed page title&lt;br /&gt;//&lt;br /&gt;void http_head(Client &amp;amp; client)&lt;br /&gt;{&lt;br /&gt;  client.println("HTTP/1.1 200 OK");&lt;br /&gt;  client.println("Content-Type: text/html");&lt;br /&gt;  client.println();&lt;br /&gt;  client.println("&amp;lt;html&amp;gt;");&lt;br /&gt;  client.println("&amp;lt;title&amp;gt;Arduino Home monitor&amp;lt;/title&amp;gt;");&lt;br /&gt;  client.println("&amp;lt;body&amp;gt;");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// End of HTML page&lt;br /&gt;//&lt;br /&gt;void http_end(Client &amp;amp; client)&lt;br /&gt;{&lt;br /&gt;  client.println("&amp;lt;/html&amp;gt;");&lt;br /&gt;  client.println("&amp;lt;/body&amp;gt;");&lt;br /&gt;}&lt;br /&gt;//&lt;br /&gt;// reply to root request or /info.html&lt;br /&gt;//&lt;br /&gt;void http_root(Client &amp;amp; client)&lt;br /&gt;{&lt;br /&gt;  http_head(client);&lt;br /&gt;  client.print("Temperature is ");&lt;br /&gt;  client.print(tmprtr / 10);&lt;br /&gt;  client.print(".");&lt;br /&gt;  client.print(tmprtr % 10);&lt;br /&gt;  client.println("&amp;lt;br /&amp;gt;");&lt;br /&gt;  client.print("Light at home is ");&lt;br /&gt;  client.print(lght/10);&lt;br /&gt;  client.print("%");&lt;br /&gt;  client.println("&amp;lt;br /&amp;gt;");&lt;br /&gt;  http_end(client);&lt;br /&gt;}&lt;br /&gt;//&lt;br /&gt;// reply to /csv.html&lt;br /&gt;//&lt;br /&gt;void http_csv(Client &amp;amp; client)&lt;br /&gt;{&lt;br /&gt;  client.println("HTTP/1.1 200 OK");&lt;br /&gt;  client.println("Content-Type: text/csv");&lt;br /&gt;  client.println();&lt;br /&gt;  client.print(tmprtr / 10);&lt;br /&gt;  client.print(".");&lt;br /&gt;  client.print(tmprtr % 10);&lt;br /&gt;  client.print(",");&lt;br /&gt;  client.println(lght/10);&lt;br /&gt;  client.println();&lt;br /&gt;}&lt;br /&gt;//&lt;br /&gt;// Work on a http reply, check request file, produce output&lt;br /&gt;//&lt;br /&gt;void http_reply(Client &amp;amp; client)&lt;br /&gt;{&lt;br /&gt;  #ifdef DEBUG&lt;br /&gt;  Serial.println("==== debug out ===");&lt;br /&gt;  Serial.println(cmmnd);&lt;br /&gt;  Serial.println(args);&lt;br /&gt;  Serial.println(host);&lt;br /&gt;  Serial.println("==== debug eot ===");&lt;br /&gt;  #endif&lt;br /&gt;  get_values();&lt;br /&gt;  if ((args[1]=='c') &amp;amp;&amp;amp; (args[2]=='s') &amp;amp;&amp;amp; (args[3]=='v')) http_csv(client);&lt;br /&gt;  else http_root(client);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  Client client = server.available();&lt;br /&gt;  #define LN_BUF 40&lt;br /&gt;  char inp_ln[LN_BUF]; /* input line, crop at 40 chars */&lt;br /&gt;  char chr;        /* input char */&lt;br /&gt;  byte inp_ln_ptr,i;&lt;br /&gt;&lt;br /&gt;  if (client) {&lt;br /&gt;  inp_ln_ptr=0; /* line is empty */&lt;br /&gt;&lt;br /&gt;  while (client.connected()) { /* while client is connected process lines */&lt;br /&gt;   if (client.available()) { /* is there a char available */&lt;br /&gt;     chr = client.read(); /* get it */&lt;br /&gt;       if (chr == '\n' &amp;amp;&amp;amp; inp_ln_ptr&amp;lt;2) {&lt;br /&gt;          http_reply(client); /* received a blank line, create return page */&lt;br /&gt;          break;        /* exit while, !! find a more logical way to do this */&lt;br /&gt;        }&lt;br /&gt;        if (chr == '\n') { /* end of line */&lt;br /&gt;          inp_ln[inp_ln_ptr]=0; /* end of line */&lt;br /&gt;          Serial.println(inp_ln);&lt;br /&gt;          if ((inp_ln[0]=='G') &amp;amp;&amp;amp; (inp_ln[1]=='E') &amp;amp;&amp;amp; (inp_ln[2]=='T')) {&lt;br /&gt;            cmmnd='G';&lt;br /&gt;            // get arguments           &lt;br /&gt;            for (i=0;i&amp;lt;sizeof(args);i++) {&lt;br /&gt;              args[i]=inp_ln[4+i];&lt;br /&gt;              if (args[i] == ' ') break;&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;          &lt;br /&gt;          if ((inp_ln[0]=='P') &amp;amp;&amp;amp; (inp_ln[1]=='U') &amp;amp;&amp;amp; (inp_ln[2]=='T')) {&lt;br /&gt;            cmmnd='P';&lt;br /&gt;            // get arguments           &lt;br /&gt;            for (i=0;i&amp;lt;sizeof(args);i++) {&lt;br /&gt;              args[i]=inp_ln[4+i];&lt;br /&gt;              if (args[i] == ' ') break;&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;          if ((inp_ln[0]=='H') &amp;amp;&amp;amp; (inp_ln[1]=='o') &amp;amp;&amp;amp; (inp_ln[2]=='s') &amp;amp;&amp;amp; (inp_ln[3]=='t')) {&lt;br /&gt;            // get arguments           &lt;br /&gt;            for (i=0;i&amp;lt;sizeof(host);i++) {&lt;br /&gt;              host[i]=inp_ln[5+i];&lt;br /&gt;              if ((host[i] == ' ') || (host[i] =='\n') ||(host[i] =='\r')) {&lt;br /&gt;                host[i]='\0';&lt;br /&gt;                break;&lt;br /&gt;              }&lt;br /&gt;            }&lt;br /&gt;          }&lt;br /&gt;          inp_ln_ptr=0;  /* ptr ready for next line */&lt;br /&gt;        } &lt;br /&gt;        else if (inp_ln_ptr&amp;lt;LN_BUF-1) inp_ln[inp_ln_ptr++]=chr;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    // give the web browser time to receive the data&lt;br /&gt;    delay(1);&lt;br /&gt;    client.stop();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When mounted horizontally the Ethernet shield and the voltage regulator produce enough heat to raise the temperature in the sensor to about 30 degrees Centigrade. When placed vertically convection keeps the heat away and the sensor reads more "normal" temperatures.&lt;br /&gt;The Power supply of the Arduino is supplied by the router that has a USB port, this way an extra wall-adapter is not needed.&lt;br /&gt;The &lt;a href="http://www.pachube.com/feeds/2757"&gt;pachube feed is here&lt;/a&gt;, where you can see both graphics light and temperature. It is also possible to embed the sensor readings in the blog layout...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1538257453524011761?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1538257453524011761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1538257453524011761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1538257453524011761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1538257453524011761'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/09/feeding-data-to-pachube-from-arduino.html' title='Feeding data to Pachube from Arduino'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Sr8gD6E5auI/AAAAAAAAAwY/Tsww6XB8vTU/s72-c/p1000621.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5845774326266652893</id><published>2009-09-15T17:35:00.009+02:00</published><updated>2011-03-13T17:38:00.969+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Building GCC toolchain for AVR</title><content type='html'>Recently, along with my Arduino-ethernet-shield I bought a Arduino-Diecimilia fitted with a ATMega328, only to find out that my compiler set-up wouldn't work. A quick investigation (&lt;a href="http://tuxgraphics.org/electronics/200901/avr-gcc-linux.shtml"&gt;here&lt;/a&gt; and &lt;a href="http://forums.adafruit.com/viewtopic.php?f=25&amp;amp;t=10751"&gt;here&lt;/a&gt;) showed me that my current gcc toolchain (4.2.2)  didn't support the '328.&lt;br /&gt;OpenSuse repositories provide an avr-gcc toolchain that can be used with the Arduino IDE for Arduinos fitted with the ATMega8 (very old) to the ATMega168 (old), for the ATMega328 you must build the toolchain yourself (at least for now).&lt;br /&gt;I tried to follow general cross gcc building instructions (more on this on another day), but it didn't work. Using gcc bleeding edge of technology sometimes has its problems. Also there are some patches that must be applied to the source.&lt;br /&gt;So I decided to follow the build script provided by the &lt;a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=42631"&gt;AVR-Freaks forum&lt;/a&gt;. You must become a member in order to download the script. It is still not the latest version of GCC 4.4.1, but it is recent enough (4.3.3)  for ATMega328.&lt;br /&gt;The pre-requisites are quite important, you can install binutils-devel (BFD support) from the Opensuse repositories and download the mpfr from &lt;a href="ftp://ftp.gwdg.de/pub/misc/gcc/infrastructure/"&gt;here&lt;/a&gt;. Compile and install mpfr.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$./configure&lt;br /&gt;$make&lt;br /&gt;$su&lt;br /&gt;#make install&lt;br /&gt;#exit&lt;br /&gt;$&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then run the scripts in order:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ ./getfiles.sh&lt;br /&gt;$ ./get-patches.sh&lt;br /&gt;$ su&lt;br /&gt;# ./buildavr-no-insight.sh&lt;br /&gt;# ./buildinsight.sh&lt;br /&gt;# exit&lt;br /&gt;$&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The build scripts ask you a couple of questions and in the end suggest some clean-up, once it starts you have time for few coffees...&lt;br /&gt;Finally test your configuration:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;$ avr-ld -v&lt;br /&gt; GNU ld (GNU Binutils) 2.19.1 + coff-avr-patch (20050630)&lt;br /&gt;$ avr-gcc -v&lt;br /&gt;Using built-in specs.&lt;br /&gt;Target: avr&lt;br /&gt;Configured with: ../../source/gcc-4.3.3/configure -v --target=avr --disable-nls --prefix=/usr/local/avr --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-libssp --with-dwarf2&lt;br /&gt;Thread model: single&lt;br /&gt;gcc version 4.3.3 (GCC)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And you're good to go...&lt;br /&gt;&lt;br /&gt;UPDATE: 2011.03.13&lt;br /&gt;I recently installed OpenSUSE 11.3 and redid the installation. It works very well but you still need to do the following (these changes are, or may not be OpenSUSE specific):&lt;br /&gt;- as su create and edit a /etc/bash.bashrc.local, add the following lines:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# User specific environment and startup programs&lt;br /&gt;PREFIX=/usr/local/avr&lt;br /&gt;export PREFIX&lt;br /&gt;&lt;br /&gt;PATH=$PATH:$HOME/bin:$PREFIX/bin&lt;br /&gt;export PATH &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This will enable all users to access the build tools.&lt;br /&gt;Then you need to do the following:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# chmod 777 /var/lock&lt;br /&gt;# chmod 777 /dev/ttyUSB0&lt;br /&gt;# chmod 777 /dev/ttyS0&lt;br /&gt;# chmod 777 /dev/ttyS1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;these last two are for my serialports.. I need to remind myself of doing it for minicom.&lt;br /&gt;and finally create a udev rule for avrisp mk ii.&lt;br /&gt;created a file 89-usbprog.rules in the rules.d directory (as su) and add the lines:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;# udev rules file for some usb connected mcu programmers&lt;br /&gt;&lt;br /&gt;# Atmel devices&lt;br /&gt;#&lt;br /&gt;ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="0666", GROUP="users", SYMLINK+="avrispmkII"&lt;br /&gt;ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="0666", GROUP="users", SYMLINK+="avrunknown-%n"&lt;br /&gt;ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="0666", GROUP="users", SYMLINK+="avrdragon-%n"&lt;br /&gt;&lt;br /&gt;# Microchip devices&lt;br /&gt;#&lt;br /&gt;ATTR{idVendor}=="04d8", ATTR{idProduct}=="0033", MODE="0666", GROUP="users", SYMLINK+="pickit2" &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;as seen &lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1254340446/15"&gt;here&lt;/a&gt; with minor adaptations and your done...&lt;br /&gt;test it with the arduino-IDE, compile and download the blink example.&lt;br /&gt;test avrisp with a simple command:&lt;br /&gt;avrdude -p t15 -c avrisp2 -P usb&lt;br /&gt;&lt;br /&gt;PS. &lt;a href="http://binblog.info/2010/11/10/atmel-avrisp-mkii-on-linux/"&gt;this&lt;/a&gt; solution also works&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5845774326266652893?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5845774326266652893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5845774326266652893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5845774326266652893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5845774326266652893'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/09/building-gcc-toolchain-for-avr.html' title='Building GCC toolchain for AVR'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7630361665441728345</id><published>2009-09-13T22:20:00.006+02:00</published><updated>2010-04-18T11:00:23.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='pachube'/><title type='text'>Arduino Home Monitor</title><content type='html'>Last week I received my Arduino-Ethernet-shield, although I couldn't use my Decimillia with it (due to a compiler problem), I went ahead with my old NG in order to try it out.&lt;br /&gt;I've build a simple system with a LM35 temperature sensor connected to analog input 0(zero) through a low pass filter (100K/ 100nF) , to measure the ambient temperature.&lt;br /&gt;To measure the ambient lighting I connected to the analog input 1 to the middle point of a simple LDR circuit (LDR in series with a 10K resistor, middle point connected to analog input).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s1600-h/p1000543.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s320/p1000543.jpg" alt="" id="BLOGGER_PHOTO_ID_5381056998083564402" border="0" /&gt;&lt;/a&gt;The ethernet shield was the first one issued, based on the W5100 ethernet TCP adaptor. Some of the TCP stack is processed in the W5100 so the Arduino spends less time processing the packets and has some more time to do what you want him to do. Also the libraries included in the Arduino IDE work "out of the box". I added my "breadboard" shield on top of the ethernet shield plug in and went on to try it out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/Sq1a16IccEI/AAAAAAAAAvw/cY9uQ2g7tnM/s1600-h/p1000541.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/Sq1a16IccEI/AAAAAAAAAvw/cY9uQ2g7tnM/s320/p1000541.jpg" alt="" id="BLOGGER_PHOTO_ID_5381057011961851970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My program is based on the original "ethernet/analog input" example but I had to do some calibration and conversion from the sensors.&lt;br /&gt;I also tried to change the analogReference during runtime, but I didn't get good results. The LM35CZ output will change from 200mV to 300mV, for 20 degrees centigrade to 30 C respectively, therefore I would get the best of the ADC resolution if I used the INTERNAL reference of 1.1V. For some reason the values were not stable, so I abandoned it and used the 5V reference (DEFAULT) for both measures.&lt;br /&gt;I also tried to "correct" the HTML output so that it could be read by a friend's Freecom MusicPal, but we never made it. I need to learn a bit more of HTML parsing and building the page.&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/*&lt;br /&gt;* Web Server&lt;br /&gt;*&lt;br /&gt;* A simple web server that shows the value of the analog input pins.&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#include &amp;lt;ethernet.h&amp;gt;&lt;br /&gt;&lt;br /&gt;byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };&lt;br /&gt;byte ip[] = { 192, 168, 2, 253 };&lt;br /&gt;//byte gateway[] = { 192, 168, 2, 254 };&lt;br /&gt;//byte subnet[] = { 255, 255, 255, 0 };&lt;br /&gt;&lt;br /&gt;Server server(80);&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt; Ethernet.begin(mac, ip);&lt;br /&gt; server.begin();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt; long tmp;&lt;br /&gt;&lt;br /&gt; Client client = server.available();&lt;br /&gt; if (client) {&lt;br /&gt;   // an http request ends with a blank line&lt;br /&gt;   boolean current_line_is_blank = true;&lt;br /&gt;   while (client.connected()) {&lt;br /&gt;     if (client.available()) {&lt;br /&gt;       char c = client.read();&lt;br /&gt;       // if we've gotten to the end of the line (received a newline&lt;br /&gt;       // character) and the line is blank, the http request has ended,&lt;br /&gt;       // so we can send a reply&lt;br /&gt;       if (c == '\n' &amp;amp;&amp;amp; current_line_is_blank) {&lt;br /&gt;         // send a standard http response header&lt;br /&gt;         client.println("HTTP/1.1 200 OK");&lt;br /&gt;         client.println("Content-Type: text/html");&lt;br /&gt;         client.println();&lt;br /&gt;         client.println("&amp;lt;HTML&amp;gt;");&lt;br /&gt;         client.println("&amp;lt;title&amp;gt;Arduino Home monitor&amp;lt;/title&amp;gt;");&lt;br /&gt;         client.println("&amp;lt;BODY&amp;gt;");&lt;br /&gt;         // output the value of each analog input pin&lt;br /&gt;       &lt;br /&gt;         client.print("Temperature is ");&lt;br /&gt;         analogReference(DEFAULT);&lt;br /&gt;         delay(10);&lt;br /&gt;         tmp=((long)analogRead(0)*5000)/1024;&lt;br /&gt;         client.print(tmp / 10);&lt;br /&gt;         client.print(".");&lt;br /&gt;         client.print(tmp % 10);&lt;br /&gt;         client.println("&lt;br /&gt;");&lt;br /&gt;&lt;br /&gt;         analogReference(DEFAULT);&lt;br /&gt;         delay(10);&lt;br /&gt;         client.print("Light at home is ");&lt;br /&gt;         tmp=(long)analogRead(1)*1000/1024;&lt;br /&gt;         client.print(tmp/10);&lt;br /&gt;         client.print("%");&lt;br /&gt;         client.println("&lt;br /&gt;");        &lt;br /&gt;       &lt;br /&gt;         client.println("&amp;lt;BODY&amp;gt;");&lt;br /&gt;         client.println("&amp;lt;HTML&amp;gt;");&lt;br /&gt;         break;&lt;br /&gt;       }&lt;br /&gt;       if (c == '\n') {&lt;br /&gt;         // we're starting a new line&lt;br /&gt;         current_line_is_blank = true;&lt;br /&gt;       } else if (c != '\r') {&lt;br /&gt;         // we've gotten a character on the current line&lt;br /&gt;         current_line_is_blank = false;&lt;br /&gt;       }&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   // give the web browser time to receive the data&lt;br /&gt;   delay(1);&lt;br /&gt;   client.stop();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;P.S. I had to change the &amp;gt; and &amp;lt; by the html code &amp; g t ; and &amp; l t ; so I don't know if the above code will cut/paste correctly.&lt;br /&gt;Most of my problems were in fact related to the my provider's ADSL access box, it has only one fixed IP address available x.x.x.253 (it must be outside the DHCP range, which I cannot change), and then enabling the routing of port 80 from the outside world to the Arduino in the inside network.&lt;br /&gt;With my IP address I can check the temperature and light levels (?) at home from any computer!(possibly later I could use a free dynamicdns)...&lt;br /&gt;All this in the same weekend we place a new kitchen floor... &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a2zYfGsI/AAAAAAAAAv4/q0rcotkudjo/s1600-h/p1000547.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a2zYfGsI/AAAAAAAAAv4/q0rcotkudjo/s320/p1000547.jpg" alt="" id="BLOGGER_PHOTO_ID_5381057027329956546" border="0" /&gt;&lt;/a&gt;Uf... I though it never ended...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7630361665441728345?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7630361665441728345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7630361665441728345' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7630361665441728345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7630361665441728345'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/09/arduino-home-monitor.html' title='Arduino Home Monitor'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Sq1a1Gbmk3I/AAAAAAAAAvo/4FVY5_KUDcM/s72-c/p1000543.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2971367312361316614</id><published>2009-09-08T17:21:00.005+02:00</published><updated>2009-09-08T17:57:19.177+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>The Origin of Species</title><content type='html'>Finally I had the time and patience to finish it... It was hard but I got to the end at last! To all those future readers of Darwin's book a few words of advice:&lt;br /&gt;- spare a couple of months, it is not easy ready as there is no action, it is basically a Ph.D. thesis presenting the Hypothesis of evolution and rebating some &lt;a href="http://en.wikipedia.org/wiki/Creationism"&gt;old&lt;/a&gt; (or still existing in &lt;a href="http://en.wikipedia.org/wiki/Intelligent_design"&gt;revised form&lt;/a&gt;) different points of view.&lt;br /&gt;- Naturally the book is biased towards the concept of evolution, when reading try to have an open mind and place yourself in Victorian times.&lt;br /&gt;&lt;br /&gt;It was hard but fun, I must admit that I am surprised not only on how our knowledge has evolved (pun intended) but also how some things we now know for sure, were still unexplained at the time.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SqZ-bQzUrBI/AAAAAAAAAvg/srcfd8vPO1Y/s1600-h/p1000489.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SqZ-bQzUrBI/AAAAAAAAAvg/srcfd8vPO1Y/s320/p1000489.jpg" alt="" id="BLOGGER_PHOTO_ID_5379125811772435474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the book Darwin suspects that earth started as continuous continent and only later the continents have separated, in order to explain the same species in different continents or in distant islands, we now call it &lt;a href="http://en.wikipedia.org/wiki/Plate_tectonics"&gt;the plate tectonics theory&lt;/a&gt;.&lt;br /&gt;The markings in the book are to avoid dog ears in the pages, I try to mark important passages as I go through the book and later revise them..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2971367312361316614?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2971367312361316614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2971367312361316614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2971367312361316614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2971367312361316614'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/09/origin-of-species.html' title='The Origin of Species'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SqZ-bQzUrBI/AAAAAAAAAvg/srcfd8vPO1Y/s72-c/p1000489.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4691268021341363173</id><published>2009-08-06T15:13:00.006+02:00</published><updated>2009-08-10T20:27:36.556+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Arduino NG rev. c</title><content type='html'>About a year and a half ago I bought my first Arduino, it was a Arduino NG. At the time it was quite new by the fact that it had a USB port. I did a lot of experiments with it, borrowed it a couple of times and now it is back home.&lt;br /&gt;I never used it with external power until one day I wanted to do an autonomous robot. I programmed some test code, removed it from the USB port, powered the auxiliary power supply (a.k.a 9v battery) and nothing...&lt;br /&gt;The usual debugging technique followed:&lt;br /&gt;- test program with USB, it worked.&lt;br /&gt;- remove from USB, change switch to external, power external and wait...wait..nothing.&lt;br /&gt;- check the web... I found &lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1180575080"&gt;here&lt;/a&gt; that the problem existed and already had a solution.&lt;br /&gt;- while browsing "problem Arduino NG" I also found &lt;a href="http://www.libelium.com/squidbee/index.php?title=Adding_autoreset_feature_to_Arduino_NG_rev.c"&gt;here&lt;/a&gt; that the "autoreset" feature of the diecimila had been implemented.&lt;br /&gt;So I picked up the soldering iron, my pack of SMD components and went on to hack the board. So I changed the 3rd resistor from the top and I placed the capacitor just below the RX Led (a reader told me it was very clear what I had really done to the board...)&lt;br /&gt;Here is the final result:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SnroV7LMz9I/AAAAAAAAAuo/l-2qVXGhYfA/s1600-h/p1000027.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SnroV7LMz9I/AAAAAAAAAuo/l-2qVXGhYfA/s320/p1000027.jpg" alt="" id="BLOGGER_PHOTO_ID_5366857369324933074" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4691268021341363173?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4691268021341363173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4691268021341363173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4691268021341363173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4691268021341363173'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/08/arduino-ng-rev-c.html' title='Arduino NG rev. c'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SnroV7LMz9I/AAAAAAAAAuo/l-2qVXGhYfA/s72-c/p1000027.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-50806511278885933</id><published>2009-08-03T21:56:00.006+02:00</published><updated>2009-08-06T16:16:42.632+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Harvesting the Carrots</title><content type='html'>Last Weekend we decided to Harvest my carrots from the vase. When we came back from a week away we noticed that they were not growing that much. We thought that they must have reached their limit in the vase so...it was harvest time... and we were in for some surprises...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/SnriV_CnEiI/AAAAAAAAAuA/xDorxKr-LLY/s1600-h/sany0021.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/SnriV_CnEiI/AAAAAAAAAuA/xDorxKr-LLY/s320/sany0021.jpg" alt="" id="BLOGGER_PHOTO_ID_5366850773292880418" border="0" /&gt;&lt;/a&gt;The first one out of the vase was "Quasimodo", because we transplanted the carrots some of them had grown into strange forms. Lesson learned.... do not transplant carrots...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SnriWESdbRI/AAAAAAAAAuI/E2atXo6tb54/s1600-h/sany0022.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SnriWESdbRI/AAAAAAAAAuI/E2atXo6tb54/s320/sany0022.jpg" alt="" id="BLOGGER_PHOTO_ID_5366850774701534482" border="0" /&gt;&lt;/a&gt;This one we really don't know what to call it... or... we do but it's not nice...they are actually two carrots that started in the same yogurt cup and ended up knotted together.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SnriWfIfnPI/AAAAAAAAAuQ/86wQrgMChbU/s1600-h/sany0029.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SnriWfIfnPI/AAAAAAAAAuQ/86wQrgMChbU/s320/sany0029.jpg" alt="" id="BLOGGER_PHOTO_ID_5366850781907492082" border="0" /&gt;&lt;/a&gt;Here's a picture of the whole crop, not bad for a single vase. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SnriWoJO1fI/AAAAAAAAAuY/qO7FmudMvuI/s1600-h/sany0048.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SnriWoJO1fI/AAAAAAAAAuY/qO7FmudMvuI/s320/sany0048.jpg" alt="" id="BLOGGER_PHOTO_ID_5366850784326505970" border="0" /&gt;&lt;/a&gt;Last but not the least:&lt;br /&gt;This is the way the world ends,&lt;br /&gt;this is the way the world ends,&lt;br /&gt;this is the way the world ends,&lt;br /&gt;not with a bang but with a chicken stew (at least for our carrots).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SnriXA-kMtI/AAAAAAAAAug/ab6r6L7A2Ok/s1600-h/sany0053.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SnriXA-kMtI/AAAAAAAAAug/ab6r6L7A2Ok/s320/sany0053.jpg" alt="" id="BLOGGER_PHOTO_ID_5366850790992655058" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-50806511278885933?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/50806511278885933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=50806511278885933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/50806511278885933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/50806511278885933'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/08/harvesting-carrots.html' title='Harvesting the Carrots'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PittWmnYzvg/SnriV_CnEiI/AAAAAAAAAuA/xDorxKr-LLY/s72-c/sany0021.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3465873147741417611</id><published>2009-07-25T20:03:00.031+02:00</published><updated>2009-07-27T09:12:04.983+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><title type='text'>Back from Holidays - Frappé</title><content type='html'>This year we went to Greece, Crete in particular, for our summer get away. It was fantastic, great beaches, great landscapes, great food, great weather, all this and you still can visit some impressive archaeological sites.&lt;br /&gt;&lt;table&gt; &lt;tr&gt;&lt;td&gt; &lt;a href="http://picasaweb.google.com/lh/photo/yKtkDtffvOmuFngRm8VozA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_PittWmnYzvg/SlIWkPslvTI/AAAAAAAAAkg/VqBlfjqM1vo/s144/Praia%20de%20Vulisma%20%286%29.JPG" style="border: 1px solid blue; float: left;" /&gt;&lt;/a&gt;&lt;a href="http://picasaweb.google.com/lh/photo/TBSaY4x5ycRn5ngteMfhGQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_PittWmnYzvg/SlIKosQsn7I/AAAAAAAAAgc/qYdsckKJTV4/s144/Plaka%20-%20praia%20de%20godos%204.JPG" style="border: 1px solid blue; float: left;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/SzZatIJE0HZgw13B9dc01g?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_PittWmnYzvg/SlIH5HXR08I/AAAAAAAAAfI/YKCEx1zzsqQ/s144/Hania%20%2848%29.JPG" style="border: 1px solid blue; float: left;" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.com/lh/photo/NHyV10PhbLvw9TJdYcIh6w?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_PittWmnYzvg/SlIKoYoC9hI/AAAAAAAAAgY/CoYLCbPvOTw/s144/Kommos%20%283%29.JPG" style="border: 1px solid blue; float: left;" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;It has been some time since I posted about coffee, probably because other than being "surprised" by the excessive price of an expresso, nothing of notice happens outside...&lt;br /&gt;Well in Crete I've found what is probably the only good use of instant coffee... meet the &lt;a href="http://en.wikipedia.org/wiki/Frapp%C3%A9_coffee"&gt;Frappé&lt;/a&gt;!.&lt;br /&gt;This is how I do mine, I've talked to some Greek friends and they do it a bit differently...&lt;br /&gt;Put the instant coffee (one or two spoons) and some sugar (with sugar you can do more foam) in a glass and add a few drops (or a table spoon of water).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Smy7K5CXv8I/AAAAAAAAAsQ/uR_n4TM4Sj0/s1600-h/sany0004.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Smy7K5CXv8I/AAAAAAAAAsQ/uR_n4TM4Sj0/s320/sany0004.jpg" alt="" id="BLOGGER_PHOTO_ID_5362867052075270082" border="0" /&gt;&lt;/a&gt;Use the an electric whisk until you a get a foamy cream.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Smy7LFffznI/AAAAAAAAAsY/n5-PPtdqkdk/s1600-h/sany0005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Smy7LFffznI/AAAAAAAAAsY/n5-PPtdqkdk/s320/sany0005.jpg" alt="" id="BLOGGER_PHOTO_ID_5362867055418658418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Whisk until the foam starts getting white in colour.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/Smy7LfdDBiI/AAAAAAAAAsg/h_tYs-kcg-w/s1600-h/sany0006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/Smy7LfdDBiI/AAAAAAAAAsg/h_tYs-kcg-w/s320/sany0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5362867062387705378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Add water and ice, a straw and you're done... Instant frappé!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Smy7LpC4KYI/AAAAAAAAAso/MLJWj_8jrZE/s1600-h/sany0009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Smy7LpC4KYI/AAAAAAAAAso/MLJWj_8jrZE/s320/sany0009.jpg" alt="" id="BLOGGER_PHOTO_ID_5362867064962296194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3465873147741417611?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3465873147741417611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3465873147741417611' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3465873147741417611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3465873147741417611'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/07/back-from-holidays-frappe.html' title='Back from Holidays - Frappé'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_PittWmnYzvg/SlIWkPslvTI/AAAAAAAAAkg/VqBlfjqM1vo/s72-c/Praia%20de%20Vulisma%20%286%29.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5928167462985393645</id><published>2009-07-07T16:50:00.004+02:00</published><updated>2009-07-07T19:02:27.544+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>Summer Solstice</title><content type='html'>According to Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Solstice"&gt;this year's solstice&lt;/a&gt; was on the 21st of June and it was the "official" begin of the summer. My peppers finally blossomed and I was waiting to get more peppers and earlier than &lt;a href="http://bitsnbikes.blogspot.com/2008/12/christmas-winter-equinox-and-chili.html"&gt;last year&lt;/a&gt;. I still &lt;a href="http://en.wikipedia.org/wiki/Hand_pollination"&gt;hand pollinate&lt;/a&gt; them as on this high floors bees or the like are very scarce,  on the other hand, Ana's tomatoes just need some wind...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/SlN0xv_TkeI/AAAAAAAAAqw/d2NTFLoMpRw/s1600-h/sany0140.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/SlN0xv_TkeI/AAAAAAAAAqw/d2NTFLoMpRw/s320/sany0140.jpg" alt="" id="BLOGGER_PHOTO_ID_5355752779918053858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We were having some bugs attacking our crops, specially the parsley, celeriac and the peppers. I took a picture of them and then tried to find something similar on the web. I was also looking for advice on how to biologically get rid of it, since we actually intend to eat our products we didn't want to used any harsh chemicals. The appeared to be an &lt;a href="http://en.wikipedia.org/wiki/Aphid"&gt;Aphid&lt;/a&gt;, but I was not sure it looked more like &lt;a href="http://en.wikipedia.org/wiki/Aphididae"&gt;this one&lt;/a&gt;. Here's a picture of a celeriac leaf with the pest.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/SlN0yOF9xBI/AAAAAAAAArA/LuBkWf4DLD4/s1600-h/sany0146.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/SlN0yOF9xBI/AAAAAAAAArA/LuBkWf4DLD4/s320/sany0146.jpg" alt="" id="BLOGGER_PHOTO_ID_5355752787999048722" border="0" /&gt;&lt;/a&gt;As with all my plants problems I called mum and dad, experienced "farmers and plant growers", for a cure.... And they delivered, mix the ash of a full ashtray with water, mix it well, filter it through a cloth, put it in the sprayer and "splash them all".&lt;br /&gt;As we are not smokers, I asked Tiago to collect his cigarette ash.. He definitely is not smoking that much (which is very good for him!), this was what he collected in two weeks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SlN0yW-HVwI/AAAAAAAAArI/9IHIzLt4jgk/s1600-h/sany0147.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SlN0yW-HVwI/AAAAAAAAArI/9IHIzLt4jgk/s320/sany0147.jpg" alt="" id="BLOGGER_PHOTO_ID_5355752790382040834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I mixed it with water, filtered it through the cloth, then place it in the  sprayer and off I went... A lean, mean, bug killing machine.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SlN0y2CBgxI/AAAAAAAAArQ/Yy0f6IRGfdQ/s1600-h/sany0151.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SlN0y2CBgxI/AAAAAAAAArQ/Yy0f6IRGfdQ/s320/sany0151.jpg" alt="" id="BLOGGER_PHOTO_ID_5355752798719935250" border="0" /&gt;&lt;/a&gt;Two weeks after, the plant is alive (although the leaf in question has almost dried) and the bugs are gone!&lt;br /&gt;Just great! Many thanks to Tiago, "without whom none of this would be possible" (sort off :-).&lt;br /&gt;&lt;br /&gt;Meanwhile my carrots are also growing steadily, some of the tops are popping out... can't wait to get them out... but I need to leave them by one more month...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SlN0xy3cGWI/AAAAAAAAAq4/kG0qzScUWF8/s1600-h/sany0144.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SlN0xy3cGWI/AAAAAAAAAq4/kG0qzScUWF8/s320/sany0144.jpg" alt="" id="BLOGGER_PHOTO_ID_5355752780690364770" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5928167462985393645?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5928167462985393645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5928167462985393645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5928167462985393645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5928167462985393645'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/07/summer-solstice.html' title='Summer Solstice'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PittWmnYzvg/SlN0xv_TkeI/AAAAAAAAAqw/d2NTFLoMpRw/s72-c/sany0140.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2679995891411785616</id><published>2009-06-02T21:59:00.007+02:00</published><updated>2009-06-03T22:36:56.726+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>My DRAM circuit works!</title><content type='html'>Well, after some tests I'm confident that my 8085 DRAM interface is working &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;properly&lt;/span&gt;!&lt;br /&gt;My first test executed from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;EPROM&lt;/span&gt; and at the end of every instruction fetch cycle  does a CAS-before-RAS (C-B-R) refresh.&lt;br /&gt;The second test wrote a value to the DRAM and latter read it back, still executing from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;EPROM&lt;/span&gt;, a C-B-R refresh was done at every instruction fetch.&lt;br /&gt;The third test I tried writing once and read many times, and if at some point the values differed halt the processor (this would terminate refreshing). It worked, no Halts!&lt;br /&gt;On the fourth test I decided to go a bit more ambitious, not only I initialized the stack to the DRAM I also placed a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;RET&lt;/span&gt; instruction in the DRAM. The program in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;EPROM&lt;/span&gt; would then call the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RET&lt;/span&gt; instruction and return to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;EPROM&lt;/span&gt;. This would trigger an instruction fetch in the DRAM and respective hidden refresh.&lt;br /&gt;Here's a picture of the execution of the RET instruction and respective hidden refresh, top signal is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;RAS&lt;/span&gt; bottom is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;CAS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5342826234476182674" style="margin: 0px auto 10px; display: block; width: 320px; height: 240px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SiWIJxqXPJI/AAAAAAAAAc0/ePwNnvj8fCU/s320/SANY0588.JPG" border="0" /&gt;&lt;br /&gt;Done, my "home-made"dynamic ram refresh circuit works, now I'll have to try with other microprocessors...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2679995891411785616?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2679995891411785616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2679995891411785616' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2679995891411785616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2679995891411785616'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/06/my-dram-circuit-works.html' title='My DRAM circuit works!'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SiWIJxqXPJI/AAAAAAAAAc0/ePwNnvj8fCU/s72-c/SANY0588.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8649244735740361748</id><published>2009-05-24T19:06:00.003+02:00</published><updated>2009-05-24T20:02:15.169+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='solar'/><category scheme='http://www.blogger.com/atom/ns#' term='robots'/><title type='text'>Solar Cells testing</title><content type='html'>This Sunday the sky was clear and the Sun strong, so I decided to check some of the solar cells I had in my components box. I have two types from &lt;a href="http://www.solarbotics.com/"&gt;solarbotics&lt;/a&gt; (&lt;a href="http://www.solarbotics.com/products/scc3733/"&gt;this one&lt;/a&gt; and &lt;a href="http://www.solarbotics.com/products/scpd/"&gt;this other one&lt;/a&gt;) and other from &lt;a href="http://www.pagermotors.com/"&gt;pagermotors&lt;/a&gt; (&lt;a href="http://www.pagermotors.com/index_files/Flex_Cells/pages/Flex_Cells_Individual_06_SP42_37.htm"&gt;this one&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/ShmLhujfbfI/AAAAAAAAAbI/04yAiy25yIE/s1600-h/sany0423.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/ShmLhujfbfI/AAAAAAAAAbI/04yAiy25yIE/s320/sany0423.jpg" alt="" id="BLOGGER_PHOTO_ID_5339452244773268978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;All the cells are up to specification although I only tested them on open circuit voltage, it was too hot and too bright to do a test load. I also have no reason to believe the cells won't perform as specified.&lt;br /&gt;I have two ideas for them:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;use one or two white bright LEDs and a couple of batteries to build a "light hours" extender for my chili peppers. I haven't decided yet if I'll use a micro-processor or I try to build a fully analog control system. Either way it will be quite complex as it involves two switching power supplies (charge batteries and supply LEDs) and some operation decision. I'll call this project the "Solar-Extender".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;revise the &lt;a href="http://www.youtube.com/watch?v=dpXXbp887WM"&gt;Mousebot&lt;/a&gt; to include a solar panel and a couple of rechargeable batteries, this one will definitely have a micro controller. It should harvest the sun and charge his batteries and when the sun is out it should hide in the darkest and coolest place of the house. Put some "simulated annealing" when it wake's up or goes to sleep in order to let him fool around and find some better places. This project I'll call the "Solar-Bug".&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I hope to finish these two projects before the end of the summer, as from then on either the behavior of both the projects will be pushed to the maximum efficiency as light-hours decrease towards the winter-equinox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8649244735740361748?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8649244735740361748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8649244735740361748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8649244735740361748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8649244735740361748'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/solar-cells-testing.html' title='Solar Cells testing'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/ShmLhujfbfI/AAAAAAAAAbI/04yAiy25yIE/s72-c/sany0423.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5020016991990977676</id><published>2009-05-24T13:59:00.016+02:00</published><updated>2009-06-03T21:54:41.311+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>8085 DRAM interface (30 pin SIMM)</title><content type='html'>After seeing this &lt;a href="http://www.instructables.com/id/The_Bytelight/"&gt;project&lt;/a&gt; on Make (&lt;a href="http://blog.makezine.com/archive/2009/01/weekend_project_the_bytelight_pdf.html"&gt;or here&lt;/a&gt;) I felt like old DRAMs could have a better use... It is a bit sad that so much technology and development by semiconductor engineers and computer designers goes "wasted" on a light box. The light box looks good, don't get me wrong.. but.. so much engineering wasted in a light box... doesn't look right.&lt;div&gt;I always thought that using these SIMMs in microprocessor applications would be interesting and with the proper memory management it could be used with old 8 bit microprocessors. The likes of Z80, 8085, 6809, 6502 could go with a simple DRAM interface.&lt;br /&gt;Trying to search for information online or even in books, application notes etc is quite elusive, there are three good sources of information:&lt;/div&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.piclist.com/techref/mem/dram/slide1.html"&gt;This one&lt;/a&gt; (or here in pdf) is very specific regarding the Z80, and Z180...[...]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.piclist.com/techref/microchip/dram_c.htm"&gt;This one&lt;/a&gt; with a PIC processor connected directly to a DRAM chip (source code only).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And &lt;a href="http://www.pjrc.com/mp3/simm/simm.html"&gt;this one&lt;/a&gt;, where a FPGA and a 8051 microcontroller are connected to a 72 pin SIMM. &lt;/li&gt;&lt;br /&gt;&lt;p&gt;Most of the microprocessor or microcontroller projects online either use one or more large SRAMs (128K,256K and 512K bytes) are these are nowadays readily available. &lt;/p&gt;Although my projects don't need a large RAM size I wanted to probe the use of old SIMMs with the 8085. The Z80 makes it all a bit more simpler because it has been design to use DRAMs, so at the end of the instruction fetch cycle the RFSH and MREQ signals go low, the problem with this that the instruction fetch cycle is slightly (half cycle) shorter (&lt;a href="http://www.sxlist.com/TECHREF/mem/dram/slide4.html"&gt;see here&lt;/a&gt;).&lt;p&gt;It seems logical the one would try to do the same in a different processor, while the processor is decoding and executing the fetched instruction the DRAM controller preforms a DRAM refresh, this way every instruction fetch a refresh is performed which normally is often enough. Except, in the 8085 case, if the processor is halted. The Z80 solved this problem by still performing instruction fetches during HALT (it executes NOPs). I decided to carry on accepting this problem and do not write any programs that halt to processor unless I want to lose the contents of the DRAM.&lt;br /&gt;&lt;/p&gt;In the 8085 there's no refresh cycle, but at the end of every instruction fetch, during 1 to 3 cycles (depending on the instruction just fetched), the CPU relinquishes the bus, these are called T4,T5 and T6 states (see &lt;a href="http://books.google.com/books?id=s2KPvKCQm7sC&amp;amp;pg=PA82&amp;amp;lpg=PA82&amp;amp;dq=8085+Instruction+fetch&amp;amp;source=bl&amp;amp;ots=1UJdYXZi0T&amp;amp;sig=JfSbjIljj4OPTxxbal-CW4VmMw4&amp;amp;hl=en&amp;amp;ei=rFEcSvTGLsi4-QagssXWAg&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=1#PPA83,M1"&gt;here&lt;/a&gt;). Although a single cycle for refresh might not seem a lot, one could extend the cycle a bit more until ALE goes high, from then on the address on the bus is valid and a normal fetch should be made.&lt;p&gt;The 8085 does have an slight advantage when compared to the Z80 (and Z8000), the read signal and write signal (RD and WR) are active for the same time weather in instruction fetch, memory read and or memory write (and even I/O these are extended in the Z80), so there's no need for a early-write signal when using the SIMMs.&lt;/p&gt;I designed the circuit as a combination of two sequential circuits, one generating RAS, CAS and Address inputs during a normal read/write and instruction fetch (accessing), and another circuit for refreshing the RAM on every instruction fetch (refreshing). During a instruction fetch from a non-selected memory the last cycle is used to do a CAS before RAS refresh, if the fetch is done from the DRAM, the access cycle is extended to do a hidden refresh (toggle of RAS line while CAS is low). When ALE goes high all DRAM access activities stop and the circuit waits for RD or WR to go low to start the RAS/Address Mux/ CAS sequence. I use the X2 output from the 8085 because it is at 2 times the CLK output, therefore it allows faster state switching and a longer memory access time.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SiQ1BJuqHuI/AAAAAAAAAb0/b3Mvl-GtFbw/s1600-h/cpu85_2-mem.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SiQ1BJuqHuI/AAAAAAAAAb0/b3Mvl-GtFbw/s320/cpu85_2-mem.png" alt="" id="BLOGGER_PHOTO_ID_5342453351876009698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've designed and assembled the circuit and I'm about to do extensive testing if it really works or not. Here's the schematic of the CAS/RAS generation, the connection to the SIMM is straight forward, the pin-out of a 30-pin SIMM is &lt;a href="http://www.interfacebus.com/Memory_Modules_30Pin_SIMM_PinOut.html"&gt;here&lt;/a&gt;, and some of the history of SIMM development is &lt;a href="http://en.wikipedia.org/wiki/SIMM"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SiQ30LDbZQI/AAAAAAAAAcU/IJTKt77gCxM/s1600-h/sany0587.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SiQ30LDbZQI/AAAAAAAAAcU/IJTKt77gCxM/s320/sany0587.jpg" alt="" id="BLOGGER_PHOTO_ID_5342456427428144386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The 8085 is clocked at 8MHz, and on the oscilloscope RAS appears on top and CAS on the bottom. My only problem has been my EPROM emulator, and I need to do something about that in the future. It is only working in DOS... So now I need to do all the programming in DOS and test the system with the oscilloscope. I'm also using the SOD line to trigger the oscilloscope when the SIM instruction is executed, the current program is the following (beware, 8085 assembly follows):&lt;br /&gt;&lt;blockquote style="font-family: arial;"&gt;&lt;br /&gt;          .title test_program 0&lt;br /&gt;          .sbttl testing&lt;br /&gt;&lt;br /&gt;          .area ram(abs,cseg)&lt;br /&gt;&lt;br /&gt;          .org 0x0000&lt;br /&gt;reset:&lt;br /&gt;          di&lt;br /&gt;          lxi h,0xC000&lt;br /&gt;lp000:&lt;br /&gt;          mvi a,#0xC0&lt;br /&gt;          sim&lt;br /&gt;          mov a,m&lt;br /&gt;          jmp lp001&lt;br /&gt;lp001:&lt;br /&gt;          mvi a,#0x40&lt;br /&gt;          sim&lt;br /&gt;          mov m,a&lt;br /&gt;          jmp lp000&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5020016991990977676?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5020016991990977676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5020016991990977676' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5020016991990977676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5020016991990977676'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/8085-dram-interface-30-pin-simm.html' title='8085 DRAM interface (30 pin SIMM)'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SiQ1BJuqHuI/AAAAAAAAAb0/b3Mvl-GtFbw/s72-c/cpu85_2-mem.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-2341012466906971606</id><published>2009-05-24T11:43:00.004+02:00</published><updated>2010-12-31T19:31:21.995+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 Update</title><content type='html'>This weekend I started with the finishing touches to my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SBC&lt;/span&gt;6120. I found what appears to be a "suitable" casing for the board, a power supply and the disk drive.&lt;br /&gt;I would like to build inside a 12V and a 5V switching power supply from a 16-24V DC input, this power supply would allow the system to support either common 3.5 inch &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;IDE&lt;/span&gt; drives or the smaller 2.5 inch laptop &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IDE&lt;/span&gt; drives (5V only).&lt;br /&gt;I also need a power switch, a reset switch, access to the status indicators and a DB9 serial port connection.&lt;br /&gt;For now I'm using a 1.4 inch IBM X40 drive and everything appears to fit. I would rather have a bit more room, but the next available case was too big.&lt;br /&gt;I haven't gave up on finding the "best"case, but for that I still need to find a suitable power supply, a some nice looking panel switches (ON/OFF and RESET) and the serial connector.&lt;br /&gt;An old chopping board is not the best background for an electronics project... but then again..  It's what I had at hand..&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/Shl85_NuO4I/AAAAAAAAAbA/ofPXbrQu5ks/s1600-h/sany0429.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/Shl85_NuO4I/AAAAAAAAAbA/ofPXbrQu5ks/s320/sany0429.jpg" alt="" id="BLOGGER_PHOTO_ID_5339436168887810946" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-2341012466906971606?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/2341012466906971606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=2341012466906971606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2341012466906971606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/2341012466906971606'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/sbc6120-update.html' title='SBC6120 Update'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/Shl85_NuO4I/AAAAAAAAAbA/ofPXbrQu5ks/s72-c/sany0429.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7204108014873792751</id><published>2009-05-24T11:24:00.006+02:00</published><updated>2009-05-24T18:42:47.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Follow up on Balcony garden</title><content type='html'>Our vegetables have been growing steadily for the past two weeks. I've been moving some of the sprouts that were born in the yogurt cups to the bigger vases, but now I don't have any more space. On some, instead of removing them from the cup, I just cut the cup bottom and push them into the vase.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Shl4xCCeoKI/AAAAAAAAAa4/9J7wwl1xrJY/s1600-h/sany0397.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Shl4xCCeoKI/AAAAAAAAAa4/9J7wwl1xrJY/s320/sany0397.jpg" alt="" id="BLOGGER_PHOTO_ID_5339431616980623522" border="0" /&gt;&lt;/a&gt;I learned that carrots don't like and should not be moved! No wonder now that they took so long to adapt, on the other hand tomatoes, kale and the celeriac don't seem to bother being moved and are developing nicely.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/Shl0xx2cORI/AAAAAAAAAaw/K9h51wh1DQ0/s1600-h/sany0398.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/Shl0xx2cORI/AAAAAAAAAaw/K9h51wh1DQ0/s320/sany0398.jpg" alt="" id="BLOGGER_PHOTO_ID_5339427231768525074" border="0" /&gt;&lt;/a&gt;On the "battle of the veggies" I seem to be up front in the kale, celeriac and carrots, unfortunately my tomatoes look like little dwarfs compared to Ana's..&lt;br /&gt;&lt;br /&gt;Last week my kale reached some "maturity" and before it became too hot to eat a soup we decided to try doing a &lt;a href="http://en.wikipedia.org/wiki/Caldo_verde"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;caldo&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;verde&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/Shl0xtsli9I/AAAAAAAAAao/NhEN1-6fXGE/s1600-h/sany0414.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/Shl0xtsli9I/AAAAAAAAAao/NhEN1-6fXGE/s320/sany0414.jpg" alt="" id="BLOGGER_PHOTO_ID_5339427230653451218" border="0" /&gt;&lt;/a&gt;We used some of the bigger leaves of our kale to do it, with some "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;chouriço&lt;/span&gt;" and bread, hum ... delicious...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Shl0xa4N41I/AAAAAAAAAag/_A90eRZ0IdY/s1600-h/sany0420.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Shl0xa4N41I/AAAAAAAAAag/_A90eRZ0IdY/s320/sany0420.jpg" alt="" id="BLOGGER_PHOTO_ID_5339427225601958738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7204108014873792751?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7204108014873792751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7204108014873792751' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7204108014873792751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7204108014873792751'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/follow-up-on-balcony-garden.html' title='Follow up on Balcony garden'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Shl4xCCeoKI/AAAAAAAAAa4/9J7wwl1xrJY/s72-c/sany0397.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4804491957453947240</id><published>2009-05-07T21:34:00.008+02:00</published><updated>2010-12-31T19:31:05.941+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='SBC6120'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SBC6120 Assembly</title><content type='html'>Some time ago I started looking at a strange (in today's terms) old mini-computer &lt;a href="http://en.wikipedia.org/wiki/PDP-8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PDP&lt;/span&gt;-8&lt;/a&gt; from &lt;a href="http://en.wikipedia.org/wiki/Digital_Equipment_Corporation"&gt;DEC&lt;/a&gt;. It is 12bit machine with one accumulator and program counter, further allows one level of indirection, some models had some memory positions that could be accessed with auto increment and others still had memory paging capabilities.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SgM8ZF2qbPI/AAAAAAAAAZo/7yHg0SNrpPs/s1600-h/pdp8sm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 238px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SgM8ZF2qbPI/AAAAAAAAAZo/7yHg0SNrpPs/s320/pdp8sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5333172785502645490" border="0" /&gt;&lt;/a&gt;This mini-computer was so wide-spread that two Integrated Circuit versions of it were produced (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;IM&lt;/span&gt;6100, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IM&lt;/span&gt;6120) although they came a bit late to a market that progressed beyond the original design.&lt;br /&gt;The book "The Art of Digital Design - An Introduction to Top-Down Design"from Franklin P. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Prosser&lt;/span&gt; and David E. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Winkel&lt;/span&gt; describes how to design your own &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PDP&lt;/span&gt;-8 either using normal logic or using a bit slice components, something I would like to build... both versions... :-)&lt;br /&gt;But would  I also like to test drive the CPU before I build one, the easy solution would be to find a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IM&lt;/span&gt;6100 and build it in a bread board... During my search I found that &lt;a href="http://www.sparetimegizmos.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Sparetimegizmos&lt;/span&gt;&lt;/a&gt; (a company in the US) was selling a &lt;a href="http://www.sparetimegizmos.com/Hardware/SBC6120-2.htm"&gt;kit&lt;/a&gt; that included the very hard to find chip! The first time I visited the site it said there were no more &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ICs&lt;/span&gt;, a month ago they had new kits available, so I bought one. They also have front panels but the price tag is bit over my budget, but still very interesting. Here are two pictures the original and the "original copy":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SgNDZiSmzWI/AAAAAAAAAZw/pbEwbf-uG1c/s1600-h/pdp_8_e_trondheim.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 196px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SgNDZiSmzWI/AAAAAAAAAZw/pbEwbf-uG1c/s320/pdp_8_e_trondheim.jpg" alt="" id="BLOGGER_PHOTO_ID_5333180489717435746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SgNDZvAWL0I/AAAAAAAAAZ4/Ug79xtGp8yQ/s1600-h/FP6120+Closeup_small.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SgNDZvAWL0I/AAAAAAAAAZ4/Ug79xtGp8yQ/s320/FP6120+Closeup_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5333180493130510146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I finished assembly of all the sockets and all the logic &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ICs&lt;/span&gt;, I had some difficulty in finding the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;IM&lt;/span&gt;6402 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;UART&lt;/span&gt; (it is also not cheap), the half-size oscillators, the interface connector and connector that look good on the board, so for now I have a "wrapped version" that I expect to put to work during this week. At least get something on my terminal window :-)&lt;br /&gt;A great thanks to Bob &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Amstrong&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Sparetimegizmos&lt;/span&gt; for having the time to design, build and&lt;br /&gt;sell the kit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SgNEqgmMPTI/AAAAAAAAAaA/7MrhPIL1gVo/s1600-h/sany0370.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SgNEqgmMPTI/AAAAAAAAAaA/7MrhPIL1gVo/s320/sany0370.jpg" alt="" id="BLOGGER_PHOTO_ID_5333181880832113970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4804491957453947240?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4804491957453947240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4804491957453947240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4804491957453947240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4804491957453947240'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/sbc6120-assembly.html' title='SBC6120 Assembly'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SgM8ZF2qbPI/AAAAAAAAAZo/7yHg0SNrpPs/s72-c/pdp8sm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7267434865021467630</id><published>2009-05-05T09:52:00.011+02:00</published><updated>2009-05-07T21:09:36.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Munny Software</title><content type='html'>Finally I had the time and the &lt;span style="font-weight: bold;"&gt;patience&lt;/span&gt; to write a "clean version" of the Munny code.&lt;br /&gt;I wanted to use avr-as instead of AVR-Studio, it was much more difficult than what I expected. Information about using avr-as is scarce and I was unable to find an example of an assembler only project for avr-as. The main problem was that &lt;span style="font-weight: bold;"&gt;when you use preprocessor commands you must use preprocessor comments!&lt;/span&gt;&lt;br /&gt;So remember the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#define ADC_SETTLE -32 /* arround 20ms */ &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;GOOD&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;#define ADC_SETTLE -32 ;arround 20ms &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;WRONG&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;I'm not a web-wizard but I wanted to post the code "online", I tried using google code. Probably I'm not using correctly and I don't think it was designed for such small projects but here is the &lt;a href="http://code.google.com/p/tmunny/downloads/list"&gt;link&lt;/a&gt; to the download.&lt;br /&gt;Because the project might interest to more than one community I also tried to posted the project at the AVRFreaks site, usually the place to search for information when dealing with avr-gcc toolchain but unfortunately I cannot add a file to the project...&lt;br /&gt;Programming the flash is straight forward with avrdude, but programming the oscillator calibration value and the fuses needs some more work. I used the interactive mode of avrdude ( -t) :&lt;br /&gt;&lt;blockquote&gt;read calibration&lt;br /&gt;write flash 0x3ff calibration_value&lt;br /&gt;read flash 0x3ff 0x10&lt;br /&gt;&lt;/blockquote&gt;Here is a picture of the PCB during testing:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5332265937181120850" style="margin: 0px auto 10px; display: block; width: 320px; height: 240px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_PittWmnYzvg/SgADnkmYmVI/AAAAAAAAAZg/ECoTf5Dvs-M/s320/SANY0369.JPG" border="0" /&gt; &lt;p&gt;The software is a bit difficult to understand, the micro is put to sleep most of the time except once once every 32 times of watchdog resets.&lt;/p&gt;&lt;p&gt;Then a temperature measure is made, a port pin is used to power the temperature sensor and the micro is put to sleep for some 20ms, then a analog to digital conversion is started and the micro put to sleep again until the conversion is finished. Then the value is stored and the sensor is powered down (to save maximum power).&lt;/p&gt;&lt;p&gt;The following step is calculating the colors function of the temperature, according to the temperature one of Red, Green or Blue or a mix of two is calculated. Each color has a value of [0..255].&lt;/p&gt;&lt;p&gt;Finally blinking the LED, a software 3 channel pwm controller is created, a counter is incremented every Timer1 output compare and the calculated color values are compared with this running counter. When the counter value is higher than the set value the corresponding LED color is turn off, otherwise turned on. Timer 1 is set to auto reload every 1/25.6 ms this gives a 256 bit resolution every 10ms, this make the colour mixing invisible to the eye. After 100 repeated counter runs the micro goes to sleep until next Watch dog reset.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7267434865021467630?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7267434865021467630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7267434865021467630' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7267434865021467630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7267434865021467630'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/05/munny-software.html' title='Munny Software'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SgADnkmYmVI/AAAAAAAAAZg/ECoTf5Dvs-M/s72-c/SANY0369.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5369475604891748835</id><published>2009-04-19T22:31:00.001+02:00</published><updated>2009-04-19T22:31:55.917+02:00</updated><title type='text'>Dad at his Workshop</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt;&lt;a href="http://www.flickr.com/photos/jcsilva/3456134855/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3550/3456134855_120ea4ac8f_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/jcsilva/3456134855/"&gt;Dad at his Workshop&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/jcsilva/"&gt;jcferreiradasilva&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;This Easter we went back to Portugal for a week. Make:Online had a "competition" about workshops... I immediately thought of my Dad's workshop, the most hectic I've ever seen. It's an all in one, Land Rover garage, metal workshop, wood workshop and electrical workshop. Through out the years I've seen many things coming out  (and probably many getting in never to be seen again)... From repairing bikes, doing metal stands, from small cabinets to bookcases, welding and metal cutting to fixing a toaster (the current task).&lt;br /&gt;To my Dad, because he deserves it! For trying to build a Galena radio with me when I was 9 (we didn't finish), for teaching me how to ride a bike, for showing me how to do some woodworking, for letting me see him working with the welding machine, for taking me to a factory shop and teach me to watch carefully the machines and keep my hands away from moving parts, for teaching me so much.&lt;br /&gt;tis first on the internet, maybe one day I can push him to blog on his creations or failures.&lt;br /&gt;Obrigado Pai!&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5369475604891748835?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5369475604891748835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5369475604891748835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5369475604891748835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5369475604891748835'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/04/dad-at-his-workshop.html' title='Dad at his Workshop'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3550/3456134855_120ea4ac8f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-9138751963709152626</id><published>2009-03-29T21:39:00.009+02:00</published><updated>2009-04-15T22:29:07.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Munny Hardware</title><content type='html'>A viewer asked to see the schematic and the &lt;a href="http://en.wikipedia.org/wiki/Bill_of_materials"&gt;BoM&lt;/a&gt; of the Munny project and finally had the time to do it. I didn't managed to produce a good schematic print, but I'm learning... I'll try to improve it...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SeZBpUUzFdI/AAAAAAAAAZQ/IeZp3HpRgmo/s1600-h/Valentine3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SeZBpUUzFdI/AAAAAAAAAZQ/IeZp3HpRgmo/s320/Valentine3.png" alt="" id="BLOGGER_PHOTO_ID_5325015787498575314" border="0" /&gt;&lt;/a&gt;The part list is the following:&lt;br /&gt;U1                &lt;a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2033"&gt;ATTiny15L&lt;/a&gt; (this part is obsolete)&lt;br /&gt;U2                &lt;a href="http://www.national.com/mpf/LM/LM35.html"&gt;LM35CZ&lt;/a&gt;&lt;br /&gt;U3                  RGB LED from &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=105"&gt;Sparkfun&lt;/a&gt;&lt;br /&gt;R1,R4          10K&lt;br /&gt;R2,R3,R5    100R&lt;br /&gt;C1                    10uF 15V&lt;br /&gt;C2,C3            .1uF&lt;br /&gt;&lt;br /&gt;I'll try to automate better the parts list with gEDA I'll post it again (using gnetlist ...something) and then I'll try to edit it to include datasheets and link to supplier.&lt;br /&gt;As soon as I manage to assemble the program  in linux with avr-gcc (avr-as) or have a C program compiled for the Attiny15 I'll post the software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-9138751963709152626?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/9138751963709152626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=9138751963709152626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9138751963709152626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9138751963709152626'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/03/munny-hardware.html' title='Munny Hardware'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SeZBpUUzFdI/AAAAAAAAAZQ/IeZp3HpRgmo/s72-c/Valentine3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8742166522595328625</id><published>2009-03-29T19:18:00.004+02:00</published><updated>2009-03-29T20:36:39.866+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><title type='text'>7 Segments LCD Displays</title><content type='html'>One can always point out some shortcomings of the Arduino platform, it's odd shape and pin location (not breadboard "enabled"), the size of the board (could be smaller), size of RAM/FLASH, etc.&lt;br /&gt;Nonetheless it is a cheap and fast prototyping platform for any electronics enthusiast with some programming knowledge.&lt;br /&gt;Recently my usual electronics shop had a stock clearance of 7 segment LCD displays, available in two digit (two dots) and four digit (three dots and clock colon). I bought two of each and went home trying to figure out how to use them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/Sc-7NepLjNI/AAAAAAAAAYM/uRdjRyGMuRE/s1600-h/sany0098.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/Sc-7NepLjNI/AAAAAAAAAYM/uRdjRyGMuRE/s320/sany0098.jpg" alt="" id="BLOGGER_PHOTO_ID_5318675525186325714" border="0" /&gt;&lt;/a&gt;Googling 7 segments LCD display pop-up a link to an AVR &lt;a href="http://www.blogger.com/www.atmel.com/dyn/resources/prod_documents/doc2569.pdf"&gt;application note&lt;/a&gt;... Bingo!&lt;br /&gt;Turns out you must drive the segments you want to lit up in AC, for that you must alternate the driving of the common and segments at a reasonable frequency.&lt;br /&gt;I use a array to keep the bit patterns for the display as it makes it easier when you have to output one bit at the time.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;/*&lt;br /&gt;driving one 7-seg LCD display&lt;br /&gt;value is incrementing every second&lt;br /&gt;every 10ms display positive 10ms then negative&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// Data for digits 0-9  g.f.e.d.c.b.a.: 7 BITS ONLY&lt;br /&gt;byte digs[] = {  B0111111, B0000110, B1011011, B1001111, B1100110, B1101101, B1111101, B0000111, B1111111, B1101111 };&lt;br /&gt;long previousMillis = 0;        // will store last time LED was updated&lt;br /&gt;long interval = 1000;           // interval at which to blink (milliseconds)&lt;br /&gt;byte count;&lt;br /&gt;&lt;br /&gt;void setup()                    // run once, when the sketch starts&lt;br /&gt;{&lt;br /&gt;pinMode(9, OUTPUT);          // COMMON DISP 2&lt;br /&gt;pinMode(8, OUTPUT);          // DISP2 Seg-G&lt;br /&gt;pinMode(7, OUTPUT);          // DISP2 Seg-F&lt;br /&gt;pinMode(6, OUTPUT);          // DISP2 Seg-E&lt;br /&gt;pinMode(5, OUTPUT);          // DISP2 Seg-D&lt;br /&gt;pinMode(4, OUTPUT);          // DISP2 Seg-C&lt;br /&gt;pinMode(3, OUTPUT);          // DISP2 Seg-B&lt;br /&gt;pinMode(2, OUTPUT);          // DISP2 Seg-A&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()                     // run over and over again&lt;br /&gt;{&lt;br /&gt;if (millis() - previousMillis &gt; interval) {&lt;br /&gt;  previousMillis = millis();   // remember the last time we blinked the LED&lt;br /&gt;  if (++count &gt; 9) count=0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;output(count,true);&lt;br /&gt;delay(10);&lt;br /&gt;output(count,false);&lt;br /&gt;delay(10);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void output(byte a,boolean inv) {&lt;br /&gt;byte val=digs[a];&lt;br /&gt;if (inv) val = !val;                     // invert DC current&lt;br /&gt;digitalWrite(9,bitRead(val,7));          // COMMON DSP 2&lt;br /&gt;digitalWrite(8,bitRead(val,6));          // DISP2 Seg-G&lt;br /&gt;digitalWrite(7,bitRead(val,5));          // DISP2 Seg-F&lt;br /&gt;digitalWrite(6,bitRead(val,4));          // DISP2 Seg-E&lt;br /&gt;digitalWrite(5,bitRead(val,3));          // DISP2 Seg-D&lt;br /&gt;digitalWrite(4,bitRead(val,2));          // DISP2 Seg-C&lt;br /&gt;digitalWrite(3,bitRead(val,1));          // DISP2 Seg-B&lt;br /&gt;digitalWrite(2,bitRead(val,0));          // DISP2 Seg-A&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8742166522595328625?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8742166522595328625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8742166522595328625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8742166522595328625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8742166522595328625'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/03/7-segments-lcd-displays.html' title='7 Segments LCD Displays'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/Sc-7NepLjNI/AAAAAAAAAYM/uRdjRyGMuRE/s72-c/sany0098.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8706009781597673584</id><published>2009-03-17T20:45:00.013+01:00</published><updated>2009-03-18T21:28:47.027+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Arduino Suse 10.3 installation</title><content type='html'>I had to reinstall SUSE Linux 10.3 in my Laptop and after installing the Operating System the first thing to install was the Arduino development IDE and the AVR cross toolchain.&lt;br /&gt;If you have added Packman repositories just install the following packages, although most are in the Main OSS repositorie:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;cross-avr-gcc&lt;br /&gt;cross-avr-binutils&lt;br /&gt;avr-libc&lt;br /&gt;avrdude&lt;/blockquote&gt;&lt;br /&gt;The latter is a command line application that programs AVRs (and other micros), it is also useful if you program AVRs outside the Arduino environment.&lt;br /&gt;The really important steps follow, as superuser do:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;#chmod 777 /var/lock&lt;br /&gt;#chmod 777 /dev/ttyUSB0&lt;/blockquote&gt;&lt;br /&gt;These are also useful when using minicom (/var/lock) and USB serial port to comunicate with RS232 computers (/dev/ttyUSB0).&lt;br /&gt;These instructions were adapted from &lt;a href="http://en.opensuse.org/Arduino"&gt;here&lt;/a&gt;, some of the steps are not necessary, others really important.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/InIp_ZZ_VEg&amp;amp;hl=en&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/InIp_ZZ_VEg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;To use my AVRISP mk II in SUSE 10.3 I needed to change a udev rules to add the device as accessible to every use, I added the following line at the end of /etc/udev/rules.d/50-udev-default.rules :&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;# AVRISP mk II&lt;br /&gt;SUBSYSTEM=="usb",SYSFS{idVendor}=="03eb",SYSFS{idProduct}=="2104",MODE="0666"&lt;/blockquote&gt;It turns out that it still doesn't work... when trying to use avrdude with the -P usb option it complaints that it was not compiled with USB support...&lt;br /&gt;Uninstall avrdude (keep uisp, avrlibc needs one of them otherwise yast complains), download the &lt;a href="http://savannah.nongnu.org/projects/avrdude/"&gt;sources&lt;/a&gt; then configure and install to /opt/cross..&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# gunzip -c avrdude-5.8.tar.gz | tar xf -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# cd avrdude-5.8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# ./configure --prefix=/opt/cross&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# make&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# su&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;# make install&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Test it connecting the AVRISP mk II to an Arduino with the command:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;#avrdude -c avrispmkII -p m168 -P usb&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8706009781597673584?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8706009781597673584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8706009781597673584' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8706009781597673584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8706009781597673584'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/03/arduino-suse-103-installation.html' title='Arduino Suse 10.3 installation'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8295204242858225479</id><published>2009-03-16T20:21:00.007+01:00</published><updated>2009-03-16T22:31:51.666+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>Time Lapse Agriculture</title><content type='html'>I always thought the one of the great pleasures of being a farmer was to "see plants grow". Maybe I'm too impatient, but after looking at them for 15 minutes and see nothing I decided to try and do a time lapse video.&lt;br /&gt;Ana tried her film first, she used a regular camera and took pictures every 15 minutes for two days (most of it). Later I ordered the pictures, reduced the size and composed the &lt;a href="http://anacrafts.blogspot.com/2009/03/video-dos-tomates.html"&gt;video&lt;/a&gt;. In order to keep the same illumination during the day, she used an halogen lamp over the plants. Naturally it is quite clear that this fakes the results and her plants grow super fast...&lt;br /&gt;I decided to use a computer and a webcam to do the job for me. First I tried a logitech quickcam messenger but the resolution was very coarse, it needs special drivers in linux and it does not auto adjust for the brightness.&lt;br /&gt;Next, Tiago borrowed me a Philips Webcam PCVC830K, it worked out of the box in Suse 10.3, resolution is 640x480 and adjusts for the brightness.&lt;br /&gt;I created two scripts, one to take the pictures every 6 minutes and another to compose the video.&lt;br /&gt;Here is the snapshot script:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;br /&gt;## adapted from http://mydebian.blogdns.org/?p=261#more-261&lt;br /&gt;## Takes a picture every (wait) seconds and renames it ${now}&lt;br /&gt;&lt;br /&gt;# how long to wait between each download&lt;br /&gt;wait=360&lt;br /&gt;&lt;br /&gt;## main endless loop ##&lt;br /&gt;while true&lt;br /&gt;do&lt;br /&gt;      now=$(/bin/date '+%Y%m%d%H%M%S')&lt;br /&gt;&lt;br /&gt;## fetch new webcam shot ##&lt;br /&gt;&lt;br /&gt;      ffmpeg -s vga -r 1 -t 1 -f video4linux -i /dev/video0 -y plant.jpg&lt;br /&gt;      mv plant.jpg "${now}.jpg"&lt;br /&gt;##      echo "${now:8:2}" just the hour&lt;br /&gt;      echo "${now}"&lt;br /&gt;      /bin/sleep $wait&lt;br /&gt;&lt;br /&gt;done&lt;br /&gt;&lt;/blockquote&gt;Here is the script to compose the video:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;br /&gt;mencoder -ovc copy -mf w=640:h=480:fps=15:type=jpg 'mf://*.jpg' -o time.avi&lt;/blockquote&gt;During the shoot I hit the box with the vacuum cleaner, so there's  a small shift... be warned. The shoot takes place from Friday night to Monday morning. The plant box is facing south and is close to the TV, so during the night there's a first level of darkness, then when we turn off the TV the only light is the webcam red led. The red led allows us to see some, although little movement.&lt;br /&gt;Here is the video...&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ReK6xkF0P04&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/ReK6xkF0P04&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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8295204242858225479?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8295204242858225479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8295204242858225479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8295204242858225479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8295204242858225479'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/03/time-lapse-agriculture.html' title='Time Lapse Agriculture'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4961921326188680675</id><published>2009-03-05T21:54:00.006+01:00</published><updated>2009-03-16T21:29:39.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>New crops!</title><content type='html'>Time has arrived to start growing some more vegetables! Sowing should be done outside when you're certain that will be no more frost. Since in Holland you never know... we decided to start growing inside. Me and Ana also decided to "make a competition" to see who would have the best crop! Last Sunday we started, each of us would have a small wooden box with some yogurt  plastic cups, we would sow the same seeds, each responsible for his box.. It is easy to see which one is mine (yes, the dirty one).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SbA9_4Hy5II/AAAAAAAAAWY/7kBBCmg2-m0/s1600-h/sany0330.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SbA9_4Hy5II/AAAAAAAAAWY/7kBBCmg2-m0/s320/sany0330.jpg" alt="" id="BLOGGER_PHOTO_ID_5309812128275948674" border="0" /&gt;&lt;/a&gt;I placed yellow tags in each cup to know what was inside each of the yogurt cups, the names are in Portuguese, beware. The seeds are Tomato, Parsley, Celeriac, Rucola, &lt;a href="http://en.wikipedia.org/wiki/Brassica_oleracea"&gt;Portuguese Cabbage&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Psidium_littorale"&gt;Araça&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_PittWmnYzvg/Sb61getpcJI/AAAAAAAAAYE/k8gbXsgf8Lc/s512/sany0327.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 384px; height: 512px;" src="http://lh5.ggpht.com/_PittWmnYzvg/Sb61getpcJI/AAAAAAAAAYE/k8gbXsgf8Lc/s512/sany0327.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By Tuesday my rucola was already germinating, Wednesday the cabbage was sprouting, today both are steadily growing.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_PittWmnYzvg/Sb61YggReNI/AAAAAAAAAX0/JZOFo0LOspM/s512/sany0344.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 384px; height: 512px;" src="http://lh6.ggpht.com/_PittWmnYzvg/Sb61YggReNI/AAAAAAAAAX0/JZOFo0LOspM/s512/sany0344.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SbA-A272BKI/AAAAAAAAAWo/ro2Ty8HSogQ/s1600-h/sany0344.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4961921326188680675?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4961921326188680675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4961921326188680675' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4961921326188680675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4961921326188680675'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/03/new-crops.html' title='New crops!'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SbA9_4Hy5II/AAAAAAAAAWY/7kBBCmg2-m0/s72-c/sany0330.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-967117811213565644</id><published>2009-02-22T19:45:00.007+01:00</published><updated>2009-03-05T21:52:50.015+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='cpld'/><title type='text'>Manual clock input for a digital circuit</title><content type='html'>I wanted to test some more advanced programming (i.e. sequential circuits) of the CPLD, sequential circuits need their inputs to have stable transitions, i.e they need to be debounced.&lt;br /&gt;Sequential circuits (synchronous and asynchronous) need debounced inputs, &lt;a href="http://www.blogger.com/www.ganssle.com/debouncing.pdf"&gt;here&lt;/a&gt; is a good guide on how and why should one debouce an manual input.&lt;br /&gt;&lt;br /&gt;I used the RS Latch method in Figure 1 of the document above, but since I used standard TTL 74 series, inputs floating are considered as "ONE", so I can do without the input resistors. I also tried out the RC filter approach the circuit is depicted on top.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SbA2-O3NOlI/AAAAAAAAAWI/52je-WLCGmM/s1600-h/jcs002.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SbA2-O3NOlI/AAAAAAAAAWI/52je-WLCGmM/s320/jcs002.png" alt="" id="BLOGGER_PHOTO_ID_5309804403439254098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a picture of CPLD, the clock circuit (with 2 inputs) and the 4 push button inputs and 4 LED outputs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SbA6v-WiPJI/AAAAAAAAAWQ/zex101G2_Gg/s1600-h/sany0351.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SbA6v-WiPJI/AAAAAAAAAWQ/zex101G2_Gg/s320/sany0351.jpg" alt="" id="BLOGGER_PHOTO_ID_5309808556535594130" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-967117811213565644?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/967117811213565644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=967117811213565644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/967117811213565644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/967117811213565644'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/02/manual-clock-input-for-digital-circuit.html' title='Manual clock input for a digital circuit'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SbA2-O3NOlI/AAAAAAAAAWI/52je-WLCGmM/s72-c/jcs002.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-9181299887043773788</id><published>2009-02-18T20:57:00.022+01:00</published><updated>2009-02-19T22:02:33.654+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Munny DIY - Valentine's gift</title><content type='html'>Me and Ana always exchange "things we've done" for Valentine's, this year I got a &lt;a href="http://anacrafts.blogspot.com/2009/02/knitting-with-5-needles.html"&gt;knitted cap and a scarf&lt;/a&gt;. Since my ability to do anything "pretty" is quite limited, I thought about buying something and modifying it.&lt;br /&gt;&lt;br /&gt;I saw a &lt;a href="http://www.kidrobot.com/2008/munny/"&gt;mini-Munny&lt;/a&gt; from &lt;a href="http://en.wikipedia.org/wiki/Kidrobot"&gt;Kidrobot&lt;/a&gt; in a &lt;a href="http://www.artifac.nl/"&gt;local arts shop (Artifac)&lt;/a&gt;, and I thought of the possibility of making it a bit more "interactive". The mini-Munny is a small DIY toy (you can paint it anyway you like) and made of transparent Vinyl and is available on various colors. I thought of placing a RGB LED that would sense the environment temperature and would change color accordingly. I though of using a Atmel AVR &lt;a href="http://www.blogger.com/www.atmel.com/dyn/resources/prod_documents/doc1187.pdf"&gt;ATtiny15L&lt;/a&gt; driving directly a &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=105"&gt;RGB LED from Sparkfun&lt;/a&gt; and using a &lt;a href="http://www.national.com/mpf/LM/LM35.html"&gt;LM35CZ&lt;/a&gt; to read the temperature.  The ATtiny15L appeared the best option, I had some in my parts boxes, works from 2.7 Volts up, is programmable in circuit and has a ADC converter, useful when the only temperature sensors I have are analog output.&lt;br /&gt;At this time I decided to use a color code for the temperature, blueish tones to cold temperatures (less than 19C), from 19C to 21C greenish, and from above 21C reddish. I placed 100Ohm resistors in each output to the LED so that programming in circuit was still possible, a better selection of resistors could save power but for now it was just enough. The supply of the temperature sensor is connected directly to an micro output, just turning it on when a measure is in progress, I also placed a RC filter on the output of the temperature. The LM35 was what determined the supply voltage and the number of batteries, its minimum operating voltage is about 4V, so I had to use 3 coin cells (4.5V).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SZx1w00M4mI/AAAAAAAAAUs/xNWfOoNHq1o/s1600-h/sany0270.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SZx1w00M4mI/AAAAAAAAAUs/xNWfOoNHq1o/s320/sany0270.jpg" alt="" id="BLOGGER_PHOTO_ID_5304243942807364194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The I built a small circuit board, with a SMD version of the Atmel, the LED, the temperature sensor and the ISP connector. I added a small blob of transparent FIMO to mix the output of the LED.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SZx1xGKmlMI/AAAAAAAAAU0/MEWQpxeEIVA/s1600-h/sany0275.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SZx1xGKmlMI/AAAAAAAAAU0/MEWQpxeEIVA/s320/sany0275.jpg" alt="" id="BLOGGER_PHOTO_ID_5304243947464725698" border="0" /&gt;&lt;/a&gt;I was luck, the batteries "just fit" Munny's neck and the circuit also "just fits" the Munny's head.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SZx1xfYpWmI/AAAAAAAAAU8/BLVMKteFmTM/s1600-h/sany0276.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SZx1xfYpWmI/AAAAAAAAAU8/BLVMKteFmTM/s320/sany0276.jpg" alt="" id="BLOGGER_PHOTO_ID_5304243954234514018" border="0" /&gt;&lt;/a&gt;Finally, the circuit is inserted inside the Munny's head and gives a colorful indication of the temperature every 3 minutes... or about...&lt;br /&gt;Here is cold... blueish...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SZx5xSKSLBI/AAAAAAAAAVM/imIV_OJ-IMs/s1600-h/sany0279.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SZx5xSKSLBI/AAAAAAAAAVM/imIV_OJ-IMs/s320/sany0279.jpg" alt="" id="BLOGGER_PHOTO_ID_5304248348731124754" border="0" /&gt;&lt;/a&gt;If you want to see more colors and other pictures, Ana has &lt;a href="http://anacrafts.blogspot.com/2009/02/munny.html"&gt;posted some more photos&lt;/a&gt; with other colors.&lt;br /&gt;The original idea was an electronic Valentine's card... but I could not find any suitable carrier for it... you can't just give a breadboard to your Valentine's can you!! It was a ATtiny26L and a Nokia3310 display.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SZx657kq_oI/AAAAAAAAAVU/Ue_LSg-jt-c/s1600-h/sany0274.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SZx657kq_oI/AAAAAAAAAVU/Ue_LSg-jt-c/s320/sany0274.jpg" alt="" id="BLOGGER_PHOTO_ID_5304249596798238338" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-9181299887043773788?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/9181299887043773788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=9181299887043773788' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9181299887043773788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/9181299887043773788'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/02/munny-diy-valentines-gift.html' title='Munny DIY - Valentine&apos;s gift'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SZx1w00M4mI/AAAAAAAAAUs/xNWfOoNHq1o/s72-c/sany0270.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6956734370785065903</id><published>2009-02-02T21:16:00.006+01:00</published><updated>2009-02-02T21:52:48.839+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='Porto'/><title type='text'>Serralves... Meia de Leite (almost a Cappucino)</title><content type='html'>I never miss a chance to visit Serralves, the Portuguese Museum of Modern Art in Porto. If don't like the art, or find it too difficult to digest... This was the floor in one of the rooms... I found it disturbing, I could look at it for hours...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SYdbDc8ae0I/AAAAAAAAAT0/trVkADpf3-I/s1600-h/sany0006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SYdbDc8ae0I/AAAAAAAAAT0/trVkADpf3-I/s320/sany0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5298303601491999554" border="0" /&gt;&lt;/a&gt;But the best seat in the room was taken...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SYdbySdSmgI/AAAAAAAAAT8/PLFcmdn34eI/s1600-h/sany0008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SYdbySdSmgI/AAAAAAAAAT8/PLFcmdn34eI/s320/sany0008.jpg" alt="" id="BLOGGER_PHOTO_ID_5298304406130956802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can always go to any of the three cafeterias in the compound, good coffee, quality savories... Fantastic...&lt;br /&gt;The top restaurant has a reasonable buffet and a great view over the park, the lower floor level cafeteria has a great window facing the grass, very Zen... but probably the top is the Tee House, so 1920's-1930's a Tee house in front of the gravel Tennis court... The perfect place to read the newspaper weekend edition, if you're watching the rain from the inside... very peaceful... Love it!&lt;br /&gt;&lt;br /&gt;In Portugal you can have a "meia de leite", litteraly "half milk" the equivalent in the Netherlands would be half of a "Koffie Verkeerd", I've had some Latte's and Machiattos in my day, but there's nothing like a Meia-de-leite. If you want to try it is a long expresso with the same amount of vapor heated milk, it should look like this..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SYdbDEd-3NI/AAAAAAAAATs/Fcqg5RCubGk/s1600-h/sany0003.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SYdbDEd-3NI/AAAAAAAAATs/Fcqg5RCubGk/s320/sany0003.jpg" alt="" id="BLOGGER_PHOTO_ID_5298303594921909458" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6956734370785065903?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6956734370785065903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6956734370785065903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6956734370785065903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6956734370785065903'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/02/serralves-meia-de-leite-almost.html' title='Serralves... Meia de Leite (almost a Cappucino)'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SYdbDc8ae0I/AAAAAAAAAT0/trVkADpf3-I/s72-c/sany0006.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-704092454965745384</id><published>2009-02-02T19:46:00.000+01:00</published><updated>2009-02-02T21:10:35.143+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Humidifier Reloaded (Hacked)</title><content type='html'>Pedro had a problem with his &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Venta&lt;/span&gt; Humidifier&lt;/span&gt;, although it has a nice "discrete" design it lacks one important feature: an external water level indicator. Pedro drafted a small specification of what he wanted, two indicators, one for "almost empty" and another for "empty", if possible when empty stop the motor i.e. cut the power.&lt;br /&gt;I checked the price of a new one (just in case I ruined it beyond recognition) and after taking note of the 114€ price (and they weren't able to add a simple level indicator... shame on you product designers),  I went to work.&lt;br /&gt;My first idea was to use a buoy and a lever to externally indicate the level, but it appeared to be too fragile to store and to align the top of the Humidifier, then I though of building a buoy with a magnet and placing Reed switches on the outside of the case.&lt;br /&gt;Having a small tube glued inside was very easy, I had to use hot glue as special PVC glue (in the picture) did not work with the case (clearly not PVC!!).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SYdGF-Fnw5I/AAAAAAAAATE/YIl2gNsNC0Q/s1600-h/sany0186.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SYdGF-Fnw5I/AAAAAAAAATE/YIl2gNsNC0Q/s320/sany0186.jpg" alt="" id="BLOGGER_PHOTO_ID_5298280555004543890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My original magnet was too heavy, it weighted about 7g and for that I needed about 7cm² of  foam supporting it, too much!Then I tried 3 and 4 smaller magnets, about 1g each. Here is a picture of the magnet with the floater and the REED switch on top.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/SYdGFloDeGI/AAAAAAAAAS8/WYEs9ZVdaXk/s1600-h/sany0196.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_PittWmnYzvg/SYdGFloDeGI/AAAAAAAAAS8/WYEs9ZVdaXk/s320/sany0196.jpg" alt="" id="BLOGGER_PHOTO_ID_5298280548438079586" border="0" /&gt;&lt;/a&gt; After having the level system I went out to design the electrical system. Initially I planed on using a normally closed reed switch for the power but a switch capable of cutting 230V 0.35A inductive load is impossible to find.&lt;br /&gt;So I had to resort to an additional battery and a relay to invert the signal, the use of the battery made me use an extra power switch to turn off the detection circuit when the  Humidifier is  stored away.&lt;br /&gt;Two normally open switches, one lighting a green LED when the level is almost at the bottom and a red LED lighting when the level of water is at the bottom and cutting the motor when this happens. The Relay contact is normally closed so that if the battery runs out or Pedro doesn't want it to operate just remove the battery and let it work as previous.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SYdPorEs8JI/AAAAAAAAATM/mZcA5Gm_EXU/s1600-h/sany0199.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SYdPorEs8JI/AAAAAAAAATM/mZcA5Gm_EXU/s320/sany0199.jpg" alt="" id="BLOGGER_PHOTO_ID_5298291046800486546" border="0" /&gt;&lt;/a&gt;Here's is the finished "product",  with the boxed closed and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;LED&lt;/span&gt; visible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SYdRYarK9VI/AAAAAAAAATU/4iD1FcZv8uM/s1600-h/sany0203.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SYdRYarK9VI/AAAAAAAAATU/4iD1FcZv8uM/s320/sany0203.jpg" alt="" id="BLOGGER_PHOTO_ID_5298292966543783250" border="0" /&gt;&lt;/a&gt;Here's another picture, just to show the chaos during the creative process... :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SYdGFHJ2I4I/AAAAAAAAASs/Ay2ULURPsPM/s1600-h/sany0205.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SYdGFHJ2I4I/AAAAAAAAASs/Ay2ULURPsPM/s320/sany0205.jpg" alt="" id="BLOGGER_PHOTO_ID_5298280540258313090" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-704092454965745384?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/704092454965745384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=704092454965745384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/704092454965745384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/704092454965745384'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/humidifier-reloaded-hacked.html' title='Humidifier Reloaded (Hacked)'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SYdGF-Fnw5I/AAAAAAAAATE/YIl2gNsNC0Q/s72-c/sany0186.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-5518387986093667949</id><published>2009-01-26T21:33:00.002+01:00</published><updated>2010-02-28T22:42:31.433+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Linux on Compact Flash</title><content type='html'>Recently I bought an used odd &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Thinkpad&lt;/span&gt; X40 in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Ebay&lt;/span&gt;, it has a French keyboard (ugh!) and a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;DIY&lt;/span&gt; touchscreen, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Bluetooth&lt;/span&gt; but no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WLAN&lt;/span&gt;. Since its hard disk was starting to fail I decided to try out and insert a Compact Flash as hard disk. I ordered a 8GB super fast x133 online, but this weekend I could not wait and since 4GB &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SanDisk's&lt;/span&gt; Ultra II were at 24€, I decided to &lt;span style="font-weight: bold;"&gt;try it now!&lt;/span&gt;&lt;br /&gt;I already had a 1.8 inch &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;IDE&lt;/span&gt; to compact flash adapter (bought earlier  &lt;a href="http://www.addonics.com/"&gt;here&lt;/a&gt;), in hardware terms it is really plug and play! The BIOS and the computer think that they have a normal (although not &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;hitachi&lt;/span&gt;) 4GB hard drive.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SX4Yh1ql_EI/AAAAAAAAASI/hbmW9qRHPBk/s1600-h/sany0154.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SX4Yh1ql_EI/AAAAAAAAASI/hbmW9qRHPBk/s320/sany0154.jpg" alt="" id="BLOGGER_PHOTO_ID_5295697181454761026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I managed to install &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Suse&lt;/span&gt; 10.3 and perform all the updates, it had to be a small install to fit in 4GB but enough to run the familiar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;KDE&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;OpenOffice&lt;/span&gt;. The installation goes slower than with the normal hard drive, but once you get to the Network update speed is about the same.&lt;br /&gt;Then I edited the file /etc/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;fstab&lt;/span&gt; as according to &lt;a href="http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Install_To_CompactFlash"&gt;this page&lt;/a&gt;.&lt;br /&gt;Here's what I did:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;su&lt;br /&gt;vi /etc/fstab&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then edited the line with the line&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;xxxdisk-idxxxxx / ext3 relatime,errors=remount-ro 0 1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;adding the noatime option. Normally every time you read a file, the time is written back to the drive. The noatime option disables this.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;xxxdisk-idxxxxx / ext3 relatime,errors=remount-ro 0 1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Then added the following lines. They move most temporary files to a ram disk.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;tmpfs /tmp tmpfs defaults,noatime 0 0&lt;br /&gt;tmpfs /var/run tmpfs defaults,noatime 0 0&lt;br /&gt;tmpfs /var/log tmpfs defaults,noatime 0 0&lt;br /&gt;tmpfs /var/lock tmpfs defaults,noatime 0 0&lt;br /&gt;tmpfs /var/tmp tmpfs defaults,noatime 0 0&lt;br /&gt;tmpfs /var/lib/dhcp3 tmpfs defaults,noatime 0 0&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I did not write the line for Mozilla &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Firefox&lt;/span&gt; because I am not sure if &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Novell&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Suse&lt;/span&gt; whatever have changed the temporary directory. Another site that looks like having good information is &lt;a href="http://www.iezzi.ch/archives/3"&gt;this one&lt;/a&gt;.&lt;br /&gt;After the installation and configuration I tested the hard drives for read speed, and the Compact Flash does not come very far behind! But the big test is endurance rather than speed. Here are the screenshots, the top one reports on the current X40 (with magnetic &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;hard drive&lt;/span&gt;), the bottom one the test on the compact flash and the listing of the /etc/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;fstab&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SX4YhGU5weI/AAAAAAAAAR4/VXKLkkTaxK8/s1600-h/sany0145.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SX4YhGU5weI/AAAAAAAAAR4/VXKLkkTaxK8/s320/sany0145.jpg" alt="" id="BLOGGER_PHOTO_ID_5295697168747315682" border="0" /&gt; &lt;/a&gt;As &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;SU&lt;/span&gt; you must run the command:&lt;br /&gt;&lt;blockquote&gt;# &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;hdparm&lt;/span&gt; -t /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;dev&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;sda&lt;/span&gt;1&lt;br /&gt;&lt;br /&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;dev&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;sda&lt;/span&gt;1:&lt;br /&gt;Timing buffered disk reads:   56 MB in  3.08 seconds =  18.21 MB/sec&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SX4YhTD6VLI/AAAAAAAAASA/QDmhAlpL9Zw/s1600-h/sany0147.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SX4YhTD6VLI/AAAAAAAAASA/QDmhAlpL9Zw/s320/sany0147.jpg" alt="" id="BLOGGER_PHOTO_ID_5295697172165711026" border="0" /&gt;&lt;/a&gt;The CF disk reported 14 MB/s, which is 22% less... I still think it is not a big gap as with a bigger investment €€€ one could get better transfer rates (there are 8GB cards on the market advertising 30MB/s and more).&lt;br /&gt;&lt;br /&gt;I think a good idea would be to have a mixed system on the same card, a compact flash on one side and a 1&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Gb&lt;/span&gt; dram on the other (for temp files, var, log, etc). One of the adapters that I found has a second connector on the back of the card, maybe it could be used with a small &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;microcontroller&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;FPGA&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;CPLD&lt;/span&gt; to connect to a cheap &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;SDRAM&lt;/span&gt; and provide a second volatile disk for all the changing data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-5518387986093667949?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/5518387986093667949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=5518387986093667949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5518387986093667949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/5518387986093667949'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/linux-on-compact-flash.html' title='Linux on Compact Flash'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SX4Yh1ql_EI/AAAAAAAAASI/hbmW9qRHPBk/s72-c/sany0154.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6227812333461960144</id><published>2009-01-26T20:26:00.002+01:00</published><updated>2009-01-26T21:59:21.901+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>S620 fan "repair"</title><content type='html'>Some years ago (2004) I bought my second computer, at  the time I wanted a &lt;span style="font-weight: bold;"&gt;very small desktop&lt;/span&gt; computer with parallel and serial port (for my electronics projects), a reasonable number of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;USB&lt;/span&gt; ports (3), audio line in/out and phones/mic, DVD-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CDRW&lt;/span&gt;, good amount of RAM 768MB and a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Celeron&lt;/span&gt; D.&lt;br /&gt;&lt;br /&gt;I found the &lt;a href="http://www.ipcmax.com/product_info.php?cPath=29_277&amp;amp;products_id=67"&gt;S620&lt;/a&gt;, it was small computer with acceptable performance, just what I wanted! The computer is now Ana's computer, she uses it to browse the web, store and edit her photos, update her &lt;a href="http://anacrafts.blogspot.com/"&gt;blog&lt;/a&gt; and working from home. The computer has two shortcomings, one is that I have to reboot after a save to BIOS (the computer locks), the other is the fan noise. The really noticeable problem of the computer is the fan noise, maybe if I could fit a bit more RAM and a slower processor this could be solved. After a full day of work one could really feel that casing was warm and the Fan working hard.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SX4KfN5D4pI/AAAAAAAAARg/eLtVj3neFRE/s1600-h/sany0136.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SX4KfN5D4pI/AAAAAAAAARg/eLtVj3neFRE/s320/sany0136.jpg" alt="" id="BLOGGER_PHOTO_ID_5295681743255495314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When we came back from our Christmas holidays I noticed that the computer's Fan stopped working. Ana reported that the computer would start (very silently) but would never completely boot Windows. I tried booting &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;linux&lt;/span&gt; and then the over temperature event was sent to the console  and the computer stopped booting, after this "hint" I placed my hand on the Fan exit and noticed that no air was flowing! Surely it is a fan fault!! or so I thought... I rushed to buy one only and waited... After placing the new fan the system still did not work!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SX4Kfezws3I/AAAAAAAAARo/PXSiZ_aq8Q4/s1600-h/sany0139.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SX4Kfezws3I/AAAAAAAAARo/PXSiZ_aq8Q4/s320/sany0139.jpg" alt="" id="BLOGGER_PHOTO_ID_5295681747796669298" border="0" /&gt;&lt;/a&gt;I removed the Fan and examined it, and tried it with an external power supply... it worked!! Tried the old fan and it also worked! Then I measured the fan's output pins on the Motherboard, and the power pin had a voltage increase as temperature of the processor was increasing (checked using the BIOS monitor). When the fan was connected this voltage would drop and the fan would not start.&lt;br /&gt;I suspected that "somehow" the output driver to the fan entered shutdown thinking it had a heavy load.&lt;br /&gt;I decided to create a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;NPN&lt;/span&gt;(BDX33)  emitter follower (a.k.a voltage follower), using the hard drive's power supply to supply more current and about the same voltage to the fan. The transistor was "fused" to the fan case using the soldering iron going through the case and the hole in the transistors plate.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SX4KhtBytaI/AAAAAAAAARw/M64EjvK8hCo/s1600-h/sany0140.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SX4KhtBytaI/AAAAAAAAARw/M64EjvK8hCo/s320/sany0140.jpg" alt="" id="BLOGGER_PHOTO_ID_5295681785973355938" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6227812333461960144?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6227812333461960144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6227812333461960144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6227812333461960144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6227812333461960144'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/s620-fan-repair.html' title='S620 fan &quot;repair&quot;'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/SX4KfN5D4pI/AAAAAAAAARg/eLtVj3neFRE/s72-c/sany0136.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8848508888941845238</id><published>2009-01-25T22:48:00.000+01:00</published><updated>2009-01-25T22:48:24.660+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='bikes'/><title type='text'>Kronan lighting</title><content type='html'>My Kronan is a simple bike with simple "extras",  the headlamp is a filament bulb powered a dynamo, a  simple LED tail light and a Kronan bycicle bell.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SXzZ3aga4SI/AAAAAAAAARQ/riAEnHYWu8Y/s1600-h/sany0122.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SXzZ3aga4SI/AAAAAAAAARQ/riAEnHYWu8Y/s320/sany0122.jpg" alt="" id="BLOGGER_PHOTO_ID_5295346807912194338" border="0" /&gt;&lt;/a&gt;Since I installed the front cargo fork I had to reroute the power from the dynamo to the alternative location of the headlamp (on the other fork arm).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ3HMtumI/AAAAAAAAARI/TAfesSpyDBM/s1600-h/sany0124.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ3HMtumI/AAAAAAAAARI/TAfesSpyDBM/s320/sany0124.jpg" alt="" id="BLOGGER_PHOTO_ID_5295346802729269858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I noticed that there is a light sensor and when I leave the bike in a shed or I stop the tail light turns off after some time. But my current problem is that sometimes during a long route the light turns permanently off. I had to open the box and see!!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ2_h-jmI/AAAAAAAAARA/iToczEnOqzo/s1600-h/sany0131.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ2_h-jmI/AAAAAAAAARA/iToczEnOqzo/s320/sany0131.jpg" alt="" id="BLOGGER_PHOTO_ID_5295346800670969442" border="0" /&gt;&lt;/a&gt;Apparently there's a transistor, a light sensor (top, back of the PCB), a red LED (transparent), a capacitor (bottom, back of the PCB)  and an embedded IC. The IC has a blob of plastic (next to the capacitor) over it so no chance of knowing what it is. My current possible culprits are:&lt;br /&gt;the battery connection that has oxidized or the light sensor is not correctly placed and the sensor is influenced by the LED.&lt;br /&gt;Currently I just opened the box, cleaned the contacts and straightened the sensor but I doubt that was the last time I had this problem.&lt;br /&gt;&lt;br /&gt;I also had some time so I decided to check if I had any noticeable &lt;a href="http://www.sheldonbrown.com/chains.html"&gt;chain stretch&lt;/a&gt;, I folded a new one over the current one while breaking and checked for any big difference after 10 links... so far, everything looks similar (i.e. no noticeable stretch).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ3eIMV6I/AAAAAAAAARY/Gc3rFKlf6GM/s1600-h/sany0121.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SXzZ3eIMV6I/AAAAAAAAARY/Gc3rFKlf6GM/s320/sany0121.jpg" alt="" id="BLOGGER_PHOTO_ID_5295346808884320162" border="0" /&gt;&lt;/a&gt;I found more sites (&lt;a href="http://www.kronowit.com/bicycling/chainstretch.html"&gt;here&lt;/a&gt;, &lt;a href="http://www.sheldonbrown.com/brandt/chain-care.html"&gt;here&lt;/a&gt;, and even in &lt;a href="http://en.wikipedia.org/wiki/Bicycle_chain"&gt;Wikipedia&lt;/a&gt;) giving instructions on how to check for chain stretch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8848508888941845238?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8848508888941845238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8848508888941845238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8848508888941845238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8848508888941845238'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/kronan-lighting.html' title='Kronan lighting'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SXzZ3aga4SI/AAAAAAAAARQ/riAEnHYWu8Y/s72-c/sany0122.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4045088407466009660</id><published>2009-01-25T19:48:00.010+01:00</published><updated>2009-02-18T20:56:39.223+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Pea Soup (Erweten soep)</title><content type='html'>We tried out "the famous Dutch pea soup" at one of the few really good places in the Hague "'t Hof van Eten", a small place but excellent food for brunches and breakfasts and a kindness of service that you're just not used to in Holland, then we also found another fantastic place "Le Gourmet" serving homemade pea soup, old style Dutch bistro where they serve the pea soup with two slices of rye bread and ham....&lt;br /&gt;We decided to give it a go and do it ourselves... I found a really simple recipe on the net and we were off...&lt;br /&gt;The ingredients are (for about 5 litres of soup):&lt;br /&gt;- 750g-1kg of dried split peas;&lt;br /&gt;- 1 leek;&lt;br /&gt;- 250g of Bacon;&lt;br /&gt;- a couple of carrots;&lt;br /&gt;- one onion;&lt;br /&gt;- a big "Rookwurst";&lt;br /&gt;- one Celeriac root and some celery leaves;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PittWmnYzvg/SYdnbV_IQVI/AAAAAAAAAUE/pYzZTjWW78E/s1600-h/sany0076.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5298317206080733522" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_PittWmnYzvg/SYdnbV_IQVI/AAAAAAAAAUE/pYzZTjWW78E/s320/sany0076.jpg" border="0" /&gt;&lt;/a&gt;Get a kilo of dried split peas and soak them in water.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SYdnbjjO8xI/AAAAAAAAAUM/wYg7Q5aIu0Y/s1600-h/sany0082.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5298317209721828114" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SYdnbjjO8xI/AAAAAAAAAUM/wYg7Q5aIu0Y/s320/sany0082.jpg" border="0" /&gt;&lt;/a&gt;Cut the Celeriac root, carrots and bacon into small cubes. Put the bacon in the pan, add some olive oil and let the bacon cook for 2 minutes. Then put the peas, Celeriac and carrots in a big pan with arround 3 litres of water (yep, soup for a week...), and let it boil for about an hour.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SYdncLGKDEI/AAAAAAAAAUc/YqTSctLaDSo/s1600-h/sany0089.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5298317220337290306" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_PittWmnYzvg/SYdncLGKDEI/AAAAAAAAAUc/YqTSctLaDSo/s320/sany0089.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Then add the leek in small pieces, the rookwurst and let cook for about 20 minutes... Et voila... Dutch pea soup.&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SYdncX-_bdI/AAAAAAAAAUk/kAuv0iCp2Ps/s1600-h/sany0112.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5298317223796895186" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SYdncX-_bdI/AAAAAAAAAUk/kAuv0iCp2Ps/s320/sany0112.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4045088407466009660?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4045088407466009660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4045088407466009660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4045088407466009660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4045088407466009660'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/pea-soup-erweten-soep.html' title='Pea Soup (Erweten soep)'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PittWmnYzvg/SYdnbV_IQVI/AAAAAAAAAUE/pYzZTjWW78E/s72-c/sany0076.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-6077393026666434482</id><published>2009-01-10T20:23:00.009+01:00</published><updated>2009-01-13T22:17:23.765+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><title type='text'>gEDA, Spice and small circuit simulation</title><content type='html'>In my "quest" for a suitable Electronic Design Automation set of tools in Linux, I wanted to test the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ngspice&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;gEDA&lt;/span&gt;. I started by reading &lt;a href="http://geda.seul.org/wiki/geda:csygas"&gt;this&lt;/a&gt; tutorial.&lt;br /&gt;I designed a simple single transistor amplifier and draw the basic circuit in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;gschem&lt;/span&gt;. The circuit is a commonly called &lt;a href="http://en.wikipedia.org/wiki/Bipolar_transistor_biasing"&gt;fixed bias circuit with emitter resistor&lt;/a&gt;, for transistor I used a general purpose BC548B.&lt;br /&gt;For drawing the schematic one should use the symbols in the spice library and draw the circuit as usual with the following cares:&lt;br /&gt;- you must remember to place a ground in one of the nodes.&lt;br /&gt;- if you want you can (and should) give numbers to nodes you want to keep track, this is done by editing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;netname&lt;/span&gt; of node, later it is easy to find and plot the voltages of each node.&lt;br /&gt;- it is better to create a separate file with the models of the semiconductors you use, to use it in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;gschem&lt;/span&gt; edit the model attribute and add a file attribute with the library path and name. I found out that using a big library of models and using only one model is not efficient and prone to errors, and most of the libraries need some adjustment regarding the model parameters. It is better to create a specific library file in the current directory (like models.lib) with only the models needed for the simulation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SWm8uxPa5kI/AAAAAAAAAQo/nMWl9Fsvil4/s1600-h/amp-1"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SWm8uxPa5kI/AAAAAAAAAQo/nMWl9Fsvil4/s320/amp-1" alt="" id="BLOGGER_PHOTO_ID_5289966749001377346" border="0" /&gt;&lt;/a&gt;For converting the schematic into a spice &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;netlist&lt;/span&gt;, one must resort to some trickery. I created the following bash script to create it for me, it does a design rule check and then converts the schematic to a spice &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;netlist&lt;/span&gt;, then immediately runs &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ngspice&lt;/span&gt;.&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;gnetlist&lt;/span&gt; -g &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;drc&lt;/span&gt;2 $1.sch -o $1.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;drc&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;gnetlist&lt;/span&gt; -g spice-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;sdb&lt;/span&gt; $1.sch -o $1.net&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;ngspice&lt;/span&gt; $1.net&lt;/blockquote&gt;My bash scripting talent isn't great, but it should give an idea of what you need to do. This script expects one argument, the schematic file name without the extension (.sch).&lt;br /&gt;Once in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;ngspice&lt;/span&gt; you can run the circuit interactively with :&lt;blockquote style="color: rgb(0, 153, 0);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;tran&lt;/span&gt; 10u 10m&lt;br /&gt;plot v(1),v(103)&lt;/blockquote&gt;I didn't found out how to save a plot, so I used a screen snapshot and cut the edges of the picture in GIMP, but here is the final result.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SWnLMTycwHI/AAAAAAAAAQw/cKf-fxdIZuQ/s1600-h/wave.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 251px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SWnLMTycwHI/AAAAAAAAAQw/cKf-fxdIZuQ/s320/wave.png" alt="" id="BLOGGER_PHOTO_ID_5289982649654100082" border="0" /&gt;&lt;/a&gt;There is some delay and some distortion in one part of the wave and the gain is quite small. The base appears to saturate during the high side and then appears to take its time coming out of saturation. The delay is introduced by the decoupling capacitors (input and output) and the voltage gain is limited by the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Rc&lt;/span&gt;/Re to 5, but then further divided by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Rc&lt;/span&gt; parallel with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;R&lt;span style="font-style: italic;font-size:78%;" &gt;L&lt;/span&gt;&lt;/span&gt;, for a total voltage gain of about 2.5.&lt;br /&gt;The charging of the decoupling capacitors is responsible for the apparent lack of gain in the first half wave.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-6077393026666434482?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/6077393026666434482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=6077393026666434482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6077393026666434482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/6077393026666434482'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/geda-spice-and-small-circuit-simulation.html' title='gEDA, Spice and small circuit simulation'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SWm8uxPa5kI/AAAAAAAAAQo/nMWl9Fsvil4/s72-c/amp-1' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-1358771735336925119</id><published>2009-01-02T18:27:00.002+01:00</published><updated>2009-01-05T22:56:42.921+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Porto'/><title type='text'>Porto Free Wi-Fi...</title><content type='html'>During this Christmas and New Year's break I went back to Oporto, my home town. I needed to keep connected to the internet in a quasi-regular mode. I found some free-WiFi hotspots that I can recommend, they are located mostly in the city center close to the old universities.&lt;br /&gt;Here is a list of caffees and places were Free Wi-Fi is available:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cafeprogresso.net/Index/"&gt;Café Progresso&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.planobporto.com/"&gt;Plano B&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.parquenascente.pt/"&gt;Centro Comercial Parque Nascente&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cidadesurpreendente.blogspot.com/2006/05/no-caf-aviz_25.html"&gt;Café Aviz&lt;/a&gt; (ask for the password at the counter)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.hotfrog.pt/Empresas/Cafe-Ceuta-Lda"&gt;Café Ceuta&lt;/a&gt; (ask for the password at the counter)&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=matosinhos&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=29.854268,56.601563&amp;amp;ie=UTF8&amp;amp;ll=41.179817,-8.694391&amp;amp;spn=0.013824,0.027637&amp;amp;z=15"&gt;Café Praia do Titan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.contagiarte.pt/"&gt;Contagiarte&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I know for sure that there are many more, if you read this and know of one, please tell me and give me a link(google-location or website) and I'll update the list.&lt;br /&gt;Another thing when it rains in Porto it really RAINS, beware...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SWKBtQ-jTqI/AAAAAAAAAQg/3RBa-i7pEIw/s1600-h/sany0057.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SWKBtQ-jTqI/AAAAAAAAAQg/3RBa-i7pEIw/s320/sany0057.jpg" alt="" id="BLOGGER_PHOTO_ID_5287931527137808034" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-1358771735336925119?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/1358771735336925119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=1358771735336925119' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1358771735336925119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/1358771735336925119'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2009/01/porto-free-wi-fi.html' title='Porto Free Wi-Fi...'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SWKBtQ-jTqI/AAAAAAAAAQg/3RBa-i7pEIw/s72-c/sany0057.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-8265218167897601215</id><published>2008-12-22T23:30:00.008+01:00</published><updated>2009-01-02T18:27:12.838+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>AMD, Vantis, Lattice CPLDs</title><content type='html'>Many years ago in a far distant galaxy... I bought from AMD the MACH CPLD starter kit, it was small experiment board and a parallel port ISP programmer. Since then the company changed name once and was bought by Lattice. The software "Design Direct" ran in Microsoft Windows 95, I managed to make it work in XP despite the hard disk serial number protection and I've been using it with a MACH131SP for the USBKeyboard.&lt;br /&gt;&lt;br /&gt;The reason I'm using the MACH131SP is because last year I bought a box of about 100 in Ebay, so now I have "stock" for the years to come... I had to buy an adaptor for the TQFP 100 in order to WireWrap a simple circuit, the one in the picture was bought in Japan. I soldered the CPLD by hand, it is not very dificult but you need a good soldering iron, good solder, a clean board and a steady hand.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5282910847918531922" style="margin: 0px auto 10px; display: block; width: 320px; height: 240px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_PittWmnYzvg/SVCrbRY95VI/AAAAAAAAAQI/Dcnu67_LK4k/s320/SANY0334.JPG" border="0" /&gt; The circuit included a 78L05 to regulate the supply voltage, but I had to bypass it since the CPLD consumes 75mA and the 78L05 limit is 100mA. With most of the inputs floating the CPLD forces the 78L05 into foldback and quasi-shutdown.&lt;br /&gt;The other connector is the 10 pin In System Programmable connector (JTAG), from it I can program a plurality of devices in a JTAG chain.&lt;br /&gt;&lt;br /&gt;For connecting power and the ISP connections I used Wire Wrap technique, while for the USBKeyboard circuit I used a special enameled wire. With the Wire Wrap soldering the pins is not mandatory as long as you use correctly the wrapping tool. &lt;img id="BLOGGER_PHOTO_ID_5282914193282203490" style="margin: 0px auto 10px; display: block; width: 320px; height: 240px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SVCud_10f2I/AAAAAAAAAQQ/vajfzPnZDfQ/s320/SANY0330.JPG" border="0" /&gt;With the enameled wire a special pen is used to lay the wire, wrapping around the pins you need to connect and then solder must be applied for some time (and temperature) breaking the enameled protection and soldering to the pins.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5282914196414976818" style="margin: 0px auto 10px; display: block; width: 320px; height: 240px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_PittWmnYzvg/SVCueLgu0zI/AAAAAAAAAQY/WbatN4q6O1M/s320/SANY0338.JPG" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-8265218167897601215?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/8265218167897601215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=8265218167897601215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8265218167897601215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/8265218167897601215'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/12/amd-vantis-lattice-cplds.html' title='AMD, Vantis, Lattice CPLDs'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SVCrbRY95VI/AAAAAAAAAQI/Dcnu67_LK4k/s72-c/SANY0334.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7278621316219416851</id><published>2008-12-22T23:18:00.006+01:00</published><updated>2008-12-23T09:59:35.716+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>Mini85 has left the building...</title><content type='html'>I decided to dismantle the Mini85 circuit to gain some desktop area for the next year. It was the biggest and more complex breadboard project I've ever done. I did not manage to build it in three standard breadboards, but I still find it small enough. With a single PAL (maybe a 16V8) I'm pretty sure it could fit the three boards.&lt;br /&gt;The next step is use what I've learned from this Mini85 project add it to the PCB design and USBKeyboard and build a eurocard (100x160mm) CP/M computer.&lt;br /&gt;Here is his last picture in this format...&lt;img id="BLOGGER_PHOTO_ID_5282907143595364978" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_PittWmnYzvg/SVCoDptgEnI/AAAAAAAAAQA/fbU5qL67aD8/s320/SANY0341.JPG" border="0" /&gt;Mini85 "will be back" soon... in PCB format...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7278621316219416851?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7278621316219416851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7278621316219416851' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7278621316219416851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7278621316219416851'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/12/mini85-has-left-building.html' title='Mini85 has left the building...'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SVCoDptgEnI/AAAAAAAAAQA/fbU5qL67aD8/s72-c/SANY0341.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7005965252612561232</id><published>2008-12-21T18:28:00.005+01:00</published><updated>2008-12-21T21:42:31.573+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Joules thief circuit</title><content type='html'>Last weekend I started some experiments with the "&lt;a href="http://wiki.waggy.org/dokuwiki/electronics/joulethief"&gt;Joules thief&lt;/a&gt;" circuit. The circuit is very simple to make and it should work first time, if not exchange the connections of one of the windings. It works down to 1.2V but it probably works down to 1V. It should be possible to design this circuit with higher efficiency once some of the circuits components are better defined.&lt;br /&gt;Here's a picture of my Joules Thief circuit with a white LED...&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SU6Ev3-OvcI/AAAAAAAAAP4/pbawK7V-D3Q/s1600-h/sany0315.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SU6Ev3-OvcI/AAAAAAAAAP4/pbawK7V-D3Q/s320/sany0315.jpg" alt="" id="BLOGGER_PHOTO_ID_5282305370965851586" border="0" /&gt;&lt;/a&gt;Some parameters can be determined experimentally, like saturation of the inductor  (max ampere turn),  gain of the transistor, the frequency of oscillation can be controlled with a capacitor on the base circuit. I've also experimented with a solar cell powering the circuit, but the it needs to be under a strong light.&lt;br /&gt;One of my project ideas was to build an "daylight extender" with a two or three white LEDs, a Ni-Cd battery and a light sensor, maybe with a microcontroller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7005965252612561232?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7005965252612561232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7005965252612561232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7005965252612561232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7005965252612561232'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/12/joules-thieve-circuit.html' title='Joules thief circuit'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SU6Ev3-OvcI/AAAAAAAAAP4/pbawK7V-D3Q/s72-c/sany0315.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-4719371559657469060</id><published>2008-12-21T10:07:00.010+01:00</published><updated>2009-07-07T18:10:51.756+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='agriculture'/><title type='text'>Christmas, Winter Solstice and Chili pepper</title><content type='html'>Christmas is coming soon! Yesterday were spent the afternoon baking cookies and looking for some last minute presents. Every present is now wrapped and ready to pack. I still have some important things to do in the run up, like cleaning and a major overhaul of the bike(s), packing, cleaning the house etc., but with decent planning we'll be fine!&lt;br /&gt;Today is the winter &lt;a href="http://en.wikipedia.org/wiki/Solstice"&gt;&lt;span style="text-decoration: underline;"&gt;solstice&lt;/span&gt;&lt;/a&gt;, the shortest day (daylight) of the year! It is time to celebrate... From now on the days can only get bigger, although it can still get colder... brrr.... It is also the start of the &lt;a href="http://en.wikipedia.org/wiki/Winter"&gt;Winter &lt;/a&gt;season! We already had the first snow fall in late November, but with only two centimeters of snow... maybe later it gets more interesting.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SU4jCNBRpKI/AAAAAAAAAPw/w9Btc27czSk/s1600-h/sany0255.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SU4jCNBRpKI/AAAAAAAAAPw/w9Btc27czSk/s320/sany0255.jpg" alt="" id="BLOGGER_PHOTO_ID_5282197933713892514" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;And now for something completely different...&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;Our indoor "three vase garden" has been going on. We planted parsley, basil and chili peppers in three vases before this spring. This year, Spring was actually quite warm but Summer was pretty lame, and although our plants grew and some flourished (basil and chili peppers) they did it quite late in the summer. Mid September I had to take the vases indoor as the conditions outside deteriorated. When inside I tried some hand pollination (as I have no bees or flying insects at home) with a cotton bud and as a result I managed to get some basil seeds and to my surprise, &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;one chili&lt;/span&gt;!&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PittWmnYzvg/SU4iYWSodOI/AAAAAAAAAPo/bIzSu-UJ_a0/s1600-h/sany0289.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_PittWmnYzvg/SU4iYWSodOI/AAAAAAAAAPo/bIzSu-UJ_a0/s320/sany0289.jpg" alt="" id="BLOGGER_PHOTO_ID_5282197214648104162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;This week it changed color! it has gone &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;red&lt;/span&gt;!  I have some projects to extend the light time and control the moisture in the earth, something similar to the &lt;a href="http://www.instructables.com/id/Garduino_Gardening_Arduino/"&gt;garduino&lt;/a&gt; project ... but more autonomous and without a full blown arduino and minimal feedback to the user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-4719371559657469060?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/4719371559657469060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=4719371559657469060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4719371559657469060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/4719371559657469060'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/12/christmas-winter-equinox-and-chili.html' title='Christmas, Winter Solstice and Chili pepper'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PittWmnYzvg/SU4jCNBRpKI/AAAAAAAAAPw/w9Btc27czSk/s72-c/sany0255.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-7524239907057732436</id><published>2008-12-07T21:40:00.008+01:00</published><updated>2008-12-09T21:57:35.944+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kicad'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='gEDA'/><title type='text'>Creating a PCB with gEDA</title><content type='html'>I always wanted to try out the &lt;a href="http://www.geda.seul.org/"&gt;gEDA tools&lt;/a&gt; for producing PCBs and schematics in the Linux environment.&lt;br /&gt;The ongoing mini85 (8085) project is to big for a first try, there are many packages that are not standard in gEDA, many schematic symbols that also do not come standard, there are many ICs in the schematic, these are too many variables to control for a first time.&lt;br /&gt;I needed something smaller, where I could fully test the tools. I decided to use my USBHID Flight simulator control for this project. I would also try out other things  like adding a MACH131SP because it is a SMD component, programmable via a ISP connector (also test the software) and test the package outline of a DB9 connector, the power connector and USB B connector.&lt;br /&gt;I want to send the board for fabrication, most of the PCB fabrication houses need a gerber file (none accepts pcb format), but not many details appear in the &lt;a href="http://geda.seul.org/wiki/geda:gsch2pcb_tutorial"&gt;official tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The schematic editor has a reasonable sized library, but if a symbol is needed the procedure is quite fast, I used tragesym and the tutorial is &lt;a href="http://www.geda.seul.org/wiki/geda:tragesym_tutorial"&gt;here&lt;/a&gt;. I redesigned the symbol for the Atmel AVR AT90S2313 (also ATtiny2313), because I prefer to have direct access to the VCC and GND pins and I don't like the crystal oscillator and the reset input in the bottom. Here is the first page of the schematic.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/ST7bnYtuvKI/AAAAAAAAAPg/rr29ay80hus/s1600-h/USBKeys-1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/ST7bnYtuvKI/AAAAAAAAAPg/rr29ay80hus/s320/USBKeys-1.png" alt="" id="BLOGGER_PHOTO_ID_5277897283020438690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;For converting to PCB I downloaded a library from &lt;a href="http://www.luciani.org/geda/pcb/pcb-footprint-list.html"&gt;jluciani&lt;/a&gt;, it seems very complete... I still have to understand how to use it properly and in conjunction standard libraries. It needs a small modification of the command line of gsch2pcb.&lt;code&gt;    &lt;/code&gt;&lt;blockquote&gt;&lt;/blockquote&gt;    gsch2pcb --use-files --elements-dir ~/footprints &lt;em&gt;SCHEMATIC_NAME&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For now I think the footprints provided are suficient, but I'll probably need to draw new footprints for some older PGA microprocessors (when the time comes)...&lt;br /&gt;Another way will be to try the same system with &lt;a href="http://www.lis.inpg.fr/realise_au_lis/kicad/"&gt;kicad&lt;/a&gt;, it also appears to be a good (free) design tool for linux. It has an extra that for now I don't really need which is the 3D view, but who knows latter...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-7524239907057732436?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/7524239907057732436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=7524239907057732436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7524239907057732436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/7524239907057732436'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/12/creating-pv.html' title='Creating a PCB with gEDA'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PittWmnYzvg/ST7bnYtuvKI/AAAAAAAAAPg/rr29ay80hus/s72-c/USBKeys-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-880673156671610062</id><published>2008-11-18T22:34:00.015+01:00</published><updated>2008-11-23T13:50:13.371+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>USB keyboard - Flight simulator control</title><content type='html'>I wanted to help &lt;a href="http://lab.guilhermemartins.net/"&gt;friend&lt;/a&gt; building control panel for a flight simulator "on the cheap". I'm not much into gaming scene but it sounded a fun project, and I could use it for other projects.&lt;div style="text-align: justify;"&gt;The first idea that came to mind was to "hack" or "cannibalize" keyboard controller and connect it to switches. Guilherme also mentioned some sort of visual feedback when the switch is activated. For switches I thought of rocker switches, they look like made to be "air borne" all the time. I passed the "word" that I needed a keyboard to all my friends, and waited...  Alex had a folding keyboard that wasn't working  anymore, he gave it to me to be "sacrificed"... "may God have mercy on its soul"...&lt;/div&gt;&lt;br /&gt;I opened the keyboard and separated the membrane,  I marked lines and columns with letters and numbers respectively.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SSiEhvsEdXI/AAAAAAAAAOw/SwSdmifEBF4/s1600-h/sany0121.jpg"&gt;&lt;img style="cursor: pointer; width: 315px; height: 235px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SSiEhvsEdXI/AAAAAAAAAOw/SwSdmifEBF4/s200/sany0121.jpg" alt="" id="BLOGGER_PHOTO_ID_5271609079109023090" border="0" /&gt; &lt;/a&gt;&lt;/div&gt;Then I wrote and identified all the keys in the membrane, so I could build a list of correspondence between key and of column, line.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SSiGuae8jWI/AAAAAAAAAO4/kA2CciI_x00/s1600-h/sany0123.jpg"&gt;&lt;img style="cursor: pointer; width: 311px; height: 235px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SSiGuae8jWI/AAAAAAAAAO4/kA2CciI_x00/s320/sany0123.jpg" alt="" id="BLOGGER_PHOTO_ID_5271611495778389346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;Then I identified one line and one particular column, line is marked black and column is marked red. I marked the key "Q".&lt;br /&gt;Then I wired a switch to the keyboard on the "Q" contacts, the second contact would be used to power the LED when the switch was activated.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SSiGvTKg50I/AAAAAAAAAPI/0blzSE97lHA/s1600-h/sany0133.jpg"&gt;&lt;img style="cursor: pointer; width: 304px; height: 228px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SSiGvTKg50I/AAAAAAAAAPI/0blzSE97lHA/s320/sany0133.jpg" alt="" id="BLOGGER_PHOTO_ID_5271611510993512258" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;  &lt;/div&gt; &lt;/div&gt;Well, it didn't worked out exactly as expected... I toggled the switch and "W" appeared... connected the black wire on the wrong line...&lt;br /&gt;&lt;div style="text-align: justify;"&gt;There was another problem, once the switch is activated it keeps writing Ws, not what I intended. I would need some more electronics to translate a toggle of the switch to a single key press...&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;Then I decided to try another alternative, build my own USB keyboard controller. I knew of a firmware only implementation with AVR micro controllers &lt;a href="http://www.obdev.at/products/avrusb/index.html"&gt;here&lt;/a&gt;, since I had some AVRs in the components box I decided to give it a try.&lt;br /&gt;I started with the &lt;a href="http://www.obdev.at/products/avrusb/hidkeys.html"&gt;HIDKeys&lt;/a&gt; project, but since I didn't have a ATmega8 I had to change the project for the ATtiny2313. I started with a breadboard version of the project once the software started running OK (being recognized by the PC), I build a small prototype board.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SSiMdZCAqYI/AAAAAAAAAPQ/i0FyN3Tnv3M/s1600-h/sany0233.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_PittWmnYzvg/SSiMdZCAqYI/AAAAAAAAAPQ/i0FyN3Tnv3M/s320/sany0233.jpg" alt="" id="BLOGGER_PHOTO_ID_5271617800400578946" border="0" /&gt; &lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Development was done on the PC (SUSE linux platform) with avr-gcc and for the programming I used the AVR-ISP mk 2 USB programmer. The source is not final and there are still no switches and output indicators, as soon as I finish something I'll publish it.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PittWmnYzvg/SSiMdZCAqYI/AAAAAAAAAPQ/i0FyN3Tnv3M/s1600-h/sany0233.jpg"&gt; &lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PittWmnYzvg/SSiNw6NftGI/AAAAAAAAAPY/M9pUq3uDiuM/s1600-h/sany0213.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_PittWmnYzvg/SSiNw6NftGI/AAAAAAAAAPY/M9pUq3uDiuM/s320/sany0213.jpg" alt="" id="BLOGGER_PHOTO_ID_5271619235236263010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&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/1311381797415896809-880673156671610062?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/880673156671610062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=880673156671610062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/880673156671610062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/880673156671610062'/><link rel='alternate' type='text/html' href='http://bitsnbikes.blogspot.com/2008/11/usb-keyboard-flight-simulator-control.html' title='USB keyboard - Flight simulator control'/><author><name>João Silva</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_PittWmnYzvg/SZx79Qc52-I/AAAAAAAAAVc/Ulrp73ibxSE/S220/sany0279.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PittWmnYzvg/SSiEhvsEdXI/AAAAAAAAAOw/SwSdmifEBF4/s72-c/sany0121.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1311381797415896809.post-3975342688912920459</id><published>2008-11-02T21:13:00.008+01:00</published><updated>2008-11-02T22:17:14.317+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cp/m'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='8085'/><title type='text'>Formating a floppy in Mini85</title><content type='html'>My list of softwear and hardware tasks is becomming shorter by the day. That is the number of new tasks added during the week is less than the tasks I finish during the weekend...&lt;br /&gt;This weekend I finished the formating function and the display help function. On the hardware I changed the regulated power supply by a home build switching power supply, I've also changed the Motor on timer to 30 seconds to reduce wear on the floppies.&lt;br /&gt;I've also created a task lisk on the blog's front page so it's easy to keep track of the TO DO list on the Mini85. I think it is a good idea, to keep a todo list for each project while it is running.I'll keep a list alive and maintained until a new project comes along, then I'll do a new one.&lt;br /&gt;The format routine had a few details, the interrupt routine had to be changed to support the read/write operations and format operations.&lt;br /&gt;&lt;br /&gt;Two pictures of the switching power supply, pretty standard. An LM2575-5.0 simple switcher, a RENCO 330uH inductor with IRMS 3 Amp capability (an old sample I had) and a schottky diode 1N5819 (here the diode is only capable of IRMS 1A)...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://2.bp.blogspot.com/_PittWmnYzvg/SQ4WwmzrhnI/AAAAAAAAAMI/CHSsVAaouC0/s1600-h/SANY0022.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5264170038749529714" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SQ4WwmzrhnI/AAAAAAAAAMI/CHSsVAaouC0/s200/SANY0022.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_PittWmnYzvg/SQ4XJlnbmnI/AAAAAAAAAMQ/1GSV7K1O9g0/s1600-h/SANY0024.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5264170467926448754" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://2.bp.blogspot.com/_PittWmnYzvg/SQ4XJlnbmnI/AAAAAAAAAMQ/1GSV7K1O9g0/s200/SANY0024.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;a href="http://2.bp.blogspot.com/_PittWmnYzvg/SQ4XJlnbmnI/AAAAAAAAAMQ/1GSV7K1O9g0/s1600-h/SANY0024.JPG"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1311381797415896809-3975342688912920459?l=bitsnbikes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bitsnbikes.blogspot.com/feeds/3975342688912920459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1311381797415896809&amp;postID=3975342688912920459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1311381797415896809/posts/default/3975342688912920459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/131138179741589
