<?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-6130801149335973761</id><updated>2011-08-29T21:17:33.243-07:00</updated><category term='source'/><category term='arm'/><category term='people'/><category term='work'/><category term='avr'/><title type='text'>Andu Goes West</title><subtitle type='html'>Rare glimpes into the bright side of life. Each new post is a joy to read.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-4040000293788424613</id><published>2009-05-07T05:36:00.001-07:00</published><updated>2009-05-07T05:49:27.973-07:00</updated><title type='text'>WPF: boolean to visibility converter</title><content type='html'>Hi Folks,&lt;br /&gt;&lt;br /&gt;recently I had the pleasure to remove home-brewn converters named VisibilityOfBoolean and VisibilityOfChecked and started using System.Windows.Controls.&lt;span style="font-weight: bold;"&gt;BooleanToVisibilityConverter &lt;/span&gt;instead.&lt;br /&gt;&lt;br /&gt;Example of usage in XAML, experienced reader fills in the details:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;BooleanToVisibilityConverter key="VisibilityOfBool" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and later:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Visibility="{Binding ElementName=checkboxVisible, Path=IsChecked, Converter={StaticResource VisibilityOfBool}}"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Easy as a pie. I only wish there was an equally easy way to invert a boolean value!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-4040000293788424613?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/4040000293788424613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=4040000293788424613' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4040000293788424613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4040000293788424613'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2009/05/wpf-boolean-to-visibility-converter.html' title='WPF: boolean to visibility converter'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-5789032343549365513</id><published>2009-04-28T01:51:00.000-07:00</published><updated>2009-04-28T02:11:12.655-07:00</updated><title type='text'>Windows Presentation Foundation - a fresh breeze in user interface programming</title><content type='html'>It has been very refreshing to get used to write user interfaces in a markup-language (XAML) and program the behind-the-scenes behaviour in another file (C# code).&lt;br /&gt;&lt;br /&gt;I am experimenting with the following style, which has not been possible with most of the previous user interface technologies:&lt;br /&gt;1. In the C# code, expose all the data required by user interface as dependency properties. In addition, avoid setting properties of the user interface controls directly.&lt;br /&gt;2. In the XAML file, bind the properties of the controls to the dependency properties declared in the C# code.&lt;br /&gt;3. Hint: style triggers and converters can be used to implement dynamic user interface.&lt;br /&gt;&lt;br /&gt;So far it seems to work fine. The C# code is pretty much independent of the user interface and one can extend the user interface without tinkering with the code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-5789032343549365513?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/5789032343549365513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=5789032343549365513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/5789032343549365513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/5789032343549365513'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2009/04/windows-presentation-foundation-fresh.html' title='Windows Presentation Foundation - a fresh breeze in user interface programming'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-4162219319231865434</id><published>2008-04-27T12:06:00.000-07:00</published><updated>2008-04-27T12:09:58.533-07:00</updated><title type='text'>Mechanical stuff</title><content type='html'>Today we (me + brother + uncle) replaced an engine on my car with another one. The present engine was damaged because of a problem between the chair and the steering wheel.&lt;br /&gt;&lt;br /&gt;It was refreshening experience to use wrenches and screwdrivers after a pause of many years... Especially cumbersome was to remember the correct turning direction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-4162219319231865434?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/4162219319231865434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=4162219319231865434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4162219319231865434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4162219319231865434'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2008/04/mechanical-stuff.html' title='Mechanical stuff'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-4911940090597525402</id><published>2008-02-23T07:20:00.000-08:00</published><updated>2008-02-24T00:57:00.153-08:00</updated><title type='text'>EVK1100: OLED display refresh rate over SPI</title><content type='html'>A nice &lt;a style="font-style: italic;" href="http://www.sparkfun.com/commerce/product_info.php?products_id=712"&gt;128x128 OLED display&lt;/a&gt; have been collecting dust in my drawer - but not anymore! Since the sparkling fun site has collected all documentations including driver datasheet and sample code, it was easy.  To make it even easier I opted for serial connection, shorting BS1 and BS2 on the &lt;a style="font-style: italic;" href="http://www.sparkfun.com/commerce/product_info.php?products_id=763"&gt;carrier board&lt;/a&gt; to ground and connecting to port SPI1 as follows:&lt;br /&gt;* D0 - SCK .&lt;br /&gt;* D1 - MOSI.&lt;br /&gt;* D/C# - LED2 (silkscreen says LED3) on EVK1100.&lt;br /&gt;* CS - CS[3] aka PA20.&lt;br /&gt;* RESET# - LED3 (silkscreen says LED4) on EVK1100.&lt;br /&gt;&lt;br /&gt;OLED display running a demo drawing random circles:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sparkfun.com/commerce/images/Main-OLED-0.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.sparkfun.com/commerce/images/Main-OLED-0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The carrier board - it helped a lot on prototyping by including a boost converter required for OLED display and providing coarse enough connector area.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sparkfun.com/commerce/images/Main-OLED-Breakout-0.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.sparkfun.com/commerce/images/Main-OLED-Breakout-0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Demos are all good and nice, but the real question is &lt;span style="font-style: italic;"&gt;what is the refresh rate of this beauty&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Theoretical maximum framerate while writing directly to display RAM is calculated as follows:&lt;br /&gt;* frame size in pixels = 132*132 = 17424 pixels.&lt;br /&gt;* frame size in bits = (3*8)*(size in pixels) = 418 176 bits.&lt;br /&gt;* SPI speed = 15 Mbps.&lt;br /&gt;* framerate = 15 000 000 (bits per second) / 418 176 (bits per frame) = 35.9 frames per second.&lt;br /&gt;&lt;br /&gt;A very simple test was made which gradually increased background intensity in 64 steps - from white to black and the time to display 640 frames was measured to be 20.8 seconds.  This corresponds to 30.7 frames per second, which is only slightly below theoretical maximum. Considering it was achieved with simple polling SPI it is not bad at all.&lt;br /&gt;&lt;br /&gt;Combined with second framebuffer (using 51 kilobytes SDRAM out of 32 768 available) this OLED makes a beautiful display unit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-4911940090597525402?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/4911940090597525402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=4911940090597525402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4911940090597525402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4911940090597525402'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2008/02/oled-display-refresh-rate-over-spi.html' title='EVK1100: OLED display refresh rate over SPI'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-5115774890969729039</id><published>2008-02-15T07:07:00.000-08:00</published><updated>2008-02-15T07:13:33.322-08:00</updated><title type='text'>EVK1100: adding a stepper motor</title><content type='html'>Added &lt;a style="font-style: italic;" href="http://www.sparkfun.com/commerce/product_info.php?products_id=8368"&gt;stepper motor driver&lt;/a&gt; to the EVK1100 prototyping area.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sparkfun.com/commerce/images/EasyDriverV3-01-L.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.sparkfun.com/commerce/images/EasyDriverV3-01-L.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Connections were made as follows:&lt;br /&gt;* VCC to USB VCC&lt;br /&gt;* separated 78L05 output from the board and connected logic VCC to 3.3V VCC&lt;br /&gt;* STP - LED1&lt;br /&gt;* DIR - LED2&lt;br /&gt;&lt;br /&gt;Steps like a charm!&lt;br /&gt;&lt;br /&gt;It was a good idea to connect stepper to the LED-s as it allowed visually watch the inputs to the stepper motor driver. However, for normal speeds the blinking frequency of LED1 was too high for a human eye to recognize.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-5115774890969729039?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/5115774890969729039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=5115774890969729039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/5115774890969729039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/5115774890969729039'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2008/02/evk1100-adding-stepper-motor.html' title='EVK1100: adding a stepper motor'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-118146867824731157</id><published>2008-02-14T13:55:00.000-08:00</published><updated>2008-02-23T11:09:44.316-08:00</updated><title type='text'>EVK1100: SPI @ 15 Mbaud.</title><content type='html'>It's good to see you after long time... especially with good news.&lt;br /&gt;&lt;br /&gt;In the meantime I have been playing with EVK1100, an AVR32 development kit from Atmel.  See for yourself at the &lt;a style="font-style: italic;" href="http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4114"&gt;Atmel EVK1100 website&lt;/a&gt;, the list of features is quite long... I have to admit, this is a truly wonderful beast with the exception that &lt;a style="font-style: italic;" href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=58573"&gt;almost all the pins are in use&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My goal is to connect it to a &lt;a style="font-style: italic;" href="http://www.micron.com/products/partdetail?part=MT9M001C12STM"&gt;Micron MTM9001&lt;/a&gt;, which is a 1280x1024 monochromatic CMOS image sensor and get at least 40 rows from it at 15 fps. In other words, I want to see these two mated:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.atmel.com/dyn/resources/prod_images/atevk1100.gif"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.atmel.com/dyn/resources/prod_images/atevk1100.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.micron.com/appobjects/images/products//part_mt9m001.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.micron.com/appobjects/images/products//part_mt9m001.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The image sensor has parallel interface with the allowed clock range 1...50MHz, however, the microcontroller is a absent of fast parallel peripherials and I am not exactly fond of digging through a few hundred thousand interrupts each second. Fortunately, the small number of rows permits use of one of the many serial interfaces on board provided that the transfer rate is at least 12 Mbaud. This speed easily rules out traditional USART-s and I am left with either SPI or SSC (serial synchronous interface), of which I prefer SPI. Ethernet would be even faster, but let's not be overly clever. All of these built-in peripherials are connected to DMA and thus the CPU is free to save the world or perform SETI (whichever is required first) during video capture.&lt;br /&gt;&lt;br /&gt;Thus, the first concern is whether SPI is able to perform at the required speed. Datasheet simply states that SPI can be clocked at speeds up to the PBA (Peripherial Bus). Given that my PBA clock is 30 MHz, it would be more than plenty. However, life has given me one or two lessons about the value of these pesky little facts in the datasheets and I have to admit I am not in a position to be teached one more time. Thus I set out to find if the SPI can be really used at the required speeds.&lt;br /&gt;&lt;br /&gt;Speed test requires two SPI interfaces, in other words, both of EVK1100. These two are connected as follows:&lt;br /&gt;* SPI0/slave - can be reached from the connector; it is not connected to any on-board peripherials. Let me note that the screen silk has MISO/SCK swapped, watch out.&lt;br /&gt;* SPI1/master - connected to SD/MMC socket, LCD, on-board AT45 data flash.&lt;br /&gt;Obviously the Peripherial DMA is required.&lt;br /&gt;&lt;br /&gt;For the sending end I created 1024 elements buffer, filled with consequental numbers in the range 0...1023. This buffer is quite small and fits nicely into SRAM, thus ensuring maximum possible transfer speed.&lt;br /&gt;&lt;br /&gt;The receiving buffer was placed in the SDRAM, since it consisted of 300 "frames", each of size 32000 elements.&lt;br /&gt;&lt;br /&gt;I first tried at 1 000 000 Mbaud, since it seemed like a 'safe' speed. As predicted, everything worked seamlessly. Second try was at half the PBA clock, 15 000 000 Mbaud and again, success.&lt;br /&gt;&lt;br /&gt;In order to cut this chain of successes, I tried at the maximum speed possible, 30 000 000 Mbaud and observered lightning fast transfer and indeed, the verifying step failed at the first byte.&lt;br /&gt;&lt;br /&gt;Lessons learned:&lt;br /&gt;* SPI operation in master and slave modes.&lt;br /&gt;* Peripherial DMA.&lt;br /&gt;* Last but not least, SPI is suitable for connecting image sensor.&lt;br /&gt;&lt;br /&gt;The camera to SPI interface is now in the works. Since it takes some time, I have time to learn how to use the USB for communication with PC and why not use it to send some pretty images to the PC?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-118146867824731157?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/118146867824731157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=118146867824731157' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/118146867824731157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/118146867824731157'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2008/02/evk1100-spi-15-mbaud.html' title='EVK1100: SPI @ 15 Mbaud.'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-6176472776616220557</id><published>2007-07-12T12:08:00.000-07:00</published><updated>2007-10-24T05:11:49.550-07:00</updated><title type='text'>Quickies</title><content type='html'>From now on my preference will be operas, cinemas and theatres, since they are less crowded, less noisy, food is better and everything is cheaper than in the teenager-oriented beer parties.&lt;br /&gt;&lt;br /&gt;The ATmega16 board I have worked with many weeks is almost coming together. We have the stepper nicely running, light intensity regulation works fine and the reflex sensor is on the right level (installed reflector on the rotating platform). Customer shall be happy again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-6176472776616220557?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/6176472776616220557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=6176472776616220557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/6176472776616220557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/6176472776616220557'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/07/quickies.html' title='Quickies'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-992340808688268100</id><published>2007-07-07T05:00:00.000-07:00</published><updated>2007-07-07T05:06:30.760-07:00</updated><title type='text'>Production</title><content type='html'>We will keep separate room for production. I spent three hours assembling all the equipment and tools required for optics assembly. If some were lost, it would have taken even more time.&lt;br /&gt;&lt;br /&gt;We will complete the assembly instructions.  The need was verified by redoing calibration again and again because of minor errors. A nice checklist would have saved a lot of time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-992340808688268100?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/992340808688268100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=992340808688268100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/992340808688268100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/992340808688268100'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/07/production.html' title='Production'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-7343451007568782385</id><published>2007-07-05T08:02:00.001-07:00</published><updated>2007-07-05T08:07:58.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Microstepping</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bEUYAEFAols/Ro0IgdA8-sI/AAAAAAAAAAM/nQSuTHFGzRU/s1600-h/microstepping.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_bEUYAEFAols/Ro0IgdA8-sI/AAAAAAAAAAM/nQSuTHFGzRU/s320/microstepping.png" alt="" id="BLOGGER_PHOTO_ID_5083728908008618690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Microstepping lets steppers work much faster and more reliably, not to mention smoother ride :P&lt;br /&gt;&lt;br /&gt;The TCA3727 (looks like it will be obsolete shortly) has the following nice diagram explaining microstepping currents.&lt;br /&gt;&lt;br /&gt;Stepping table is as follows:&lt;br /&gt;&lt;pre&gt;#define I10 _BV(STEPPER_I10_PIN)&lt;br /&gt;#define I11 _BV(STEPPER_I11_PIN)&lt;br /&gt;#define PH1 _BV(STEPPER_PH1_PIN)&lt;br /&gt;#define I20 _BV(STEPPER_I20_PIN)&lt;br /&gt;#define I21 _BV(STEPPER_I21_PIN)&lt;br /&gt;#define PH2 _BV(STEPPER_PH2_PIN)&lt;br /&gt;&lt;br /&gt;static const u08&lt;br /&gt;stepper_steps[] PROGMEM =  {&lt;br /&gt; I10 | I11 |   0 | PH2 |   0 |   0,  // 0&lt;br /&gt;   0 | I11 | PH1 | PH2 |   0 |   0,  // 1&lt;br /&gt; I10 |   0 | PH1 | PH2 |   0 |   0,  // 2&lt;br /&gt;   0 |   0 | PH1 | PH2 |   0 |   0,  // 3&lt;br /&gt;   0 |   0 | PH1 | PH2 | I20 |   0,  // 4&lt;br /&gt;   0 |   0 | PH1 | PH2 |   0 | I21,  // 5&lt;br /&gt;   0 |   0 | PH1 | PH2 | I20 | I21,  // 6&lt;br /&gt;   0 |   0 | PH1 |   0 |   0 | I21,  // 7&lt;br /&gt;   0 |   0 | PH1 |   0 | I20 |   0,  // 8&lt;br /&gt;   0 |   0 | PH1 |   0 |   0 |   0,  // 9&lt;br /&gt; I10 |   0 | PH1 |   0 |   0 |   0,  // 10&lt;br /&gt;   0 | I11 | PH1 |   0 |   0 |   0,  // 11&lt;br /&gt; I10 | I11 | PH1 |   0 |   0 |   0,  // 12&lt;br /&gt;   0 | I11 |   0 |   0 |   0 |   0,  // 13&lt;br /&gt; I10 |   0 |   0 |   0 |   0 |   0,  // 14&lt;br /&gt;   0 |   0 |   0 |   0 |   0 |   0,  // 15&lt;br /&gt;   0 |   0 |   0 |   0 | I20 |   0,  // 16&lt;br /&gt;   0 |   0 |   0 |   0 |   0 | I21,  // 17&lt;br /&gt;   0 |   0 |   0 |   0 | I20 | I21,  // 18&lt;br /&gt;   0 |   0 |   0 | PH2 |   0 | I21,  // 19&lt;br /&gt;   0 |   0 |   0 | PH2 | I20 |   0,  // 20&lt;br /&gt;   0 |   0 |   0 | PH2 |   0 |   0,  // 21&lt;br /&gt; I10 |   0 |   0 | PH2 |   0 |   0,  // 22&lt;br /&gt;   0 | I11 |   0 | PH2 |   0 |   0  // 23&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;#undef I10&lt;br /&gt;#undef I11&lt;br /&gt;#undef PH1&lt;br /&gt;#undef I20&lt;br /&gt;#undef I21&lt;br /&gt;#undef PH2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When doing it step-by-step, some steps seem to be less "powerful" than others. It doesn't run _very_ smoothly on higher speeds. Perhaps some tweaking with step timings is neede in order to achieve really smooth operation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-7343451007568782385?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/7343451007568782385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=7343451007568782385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/7343451007568782385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/7343451007568782385'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/07/microstepping.html' title='Microstepping'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_bEUYAEFAols/Ro0IgdA8-sI/AAAAAAAAAAM/nQSuTHFGzRU/s72-c/microstepping.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-3944969287062436174</id><published>2007-07-05T05:33:00.000-07:00</published><updated>2007-10-24T05:07:17.878-07:00</updated><title type='text'>Bugger lost it :)</title><content type='html'>Got this bugger to work. Turned out that the debugging output interfered with the timing of communications.&lt;br /&gt;&lt;br /&gt;The mitutoyo cable was misconnected, thus I reconnected it and &lt;span style="font-style: italic;"&gt;presto&lt;/span&gt; - all works fine!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-3944969287062436174?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/3944969287062436174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=3944969287062436174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/3944969287062436174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/3944969287062436174'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/07/got-this-bugger-to-work.html' title='Bugger lost it :)'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-2931949131551830792</id><published>2007-07-04T22:58:00.000-07:00</published><updated>2007-10-24T05:05:52.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>Harvard Architecture Lesson</title><content type='html'>AVR has &lt;a href="http://en.wikipedia.org/wiki/Harvard_architecture"&gt;Harvard architecture&lt;/a&gt;. The program and data memory are totally separate entities. However, pointers to program memory have the same type as pointers to data memory.&lt;br /&gt;&lt;br /&gt;This solved my yesterdays mysterious printouts. I was passing "const char*" to a function that was expecting "const prog_char *".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-2931949131551830792?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/2931949131551830792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=2931949131551830792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/2931949131551830792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/2931949131551830792'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/07/avr-distinguishes-between-data-and.html' title='Harvard Architecture Lesson'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-3862674167781611670</id><published>2007-06-30T01:27:00.000-07:00</published><updated>2007-07-05T05:32:38.774-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='people'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Farewell</title><content type='html'>I managed to finish firmware yesterday. Good!&lt;br /&gt;&lt;br /&gt;Yesterday afternoon I had a long farewell lunch at the airport with our guest from France. He is a rather smart guy, who had been staying at the Institute for a month trying frantically to use our main product for real and succeeeding in that. Despite all the problems; including starting working week later than planned. I always felt that we were not treating him nicely because we had been busy doing other thing and not going out for lunch or giving him too little support using our products. However, much to my surprise he said that compared to his previous stay in German (three months) we were very friendly and supportive. In fact, he invited me to visit France and I promised to do so.&lt;br /&gt;&lt;br /&gt;Beforehand I was very reluctant to spend some extra time, but now it looks like time well spent. Time spent with our clients is rarely time wasted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-3862674167781611670?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/3862674167781611670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=3862674167781611670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/3862674167781611670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/3862674167781611670'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/06/i-managed-to-finish-firmware-yesterday.html' title='Farewell'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-8686128738534184406</id><published>2007-06-29T08:22:00.001-07:00</published><updated>2007-10-24T05:02:29.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'></title><content type='html'>Today I still have my hands at the same firmware I had on Monday. The spec is four pages long and I made an improvement today, which will be implemented tomorrow - FIVE DAYS LATER.&lt;br /&gt;&lt;br /&gt;It is time to improve my spec-writing skills and reap the benefits of thinking before diving straight into the code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-8686128738534184406?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/8686128738534184406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=8686128738534184406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/8686128738534184406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/8686128738534184406'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/06/today-i-still-have-my-hands-at-same.html' title=''/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-1730744205273709802</id><published>2007-06-28T02:52:00.000-07:00</published><updated>2007-06-28T02:55:59.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>One-liner (almost) CRC.</title><content type='html'>Dallas iButton 8-bit CRC calculation.&lt;br /&gt;Source: &lt;a href="http://www.maxim-ic.com/appnotes.cfm/appnote_number/27"&gt;http://www.maxim-ic.com/appnotes.cfm/appnote_number/27&lt;/a&gt;&lt;br /&gt;Polynomial:  x^8 + x^5 + x^4 + 1 (0x8C)&lt;br /&gt;Initial value: 0x00&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;uint8_t&lt;br /&gt;_crc_ibutton_update(uint8_t crc, uint8_t data)&lt;br /&gt;{&lt;br /&gt; uint8_t i;&lt;br /&gt; crc = crc ^ data;&lt;br /&gt; for (i = 0; i &amp;lt; 8; ++i) {&lt;br /&gt;  crc = (crc &amp;lt;&amp;lt; 1) ^ ((crc &amp; 0x01) * 0x8C);&lt;br /&gt; }&lt;br /&gt; return crc;&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-1730744205273709802?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/1730744205273709802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=1730744205273709802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/1730744205273709802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/1730744205273709802'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/06/one-liner-almost-crc.html' title='One-liner (almost) CRC.'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-4008527774120240358</id><published>2007-06-28T01:24:00.002-07:00</published><updated>2007-06-28T02:13:41.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><title type='text'>64 bits and timers on AVR</title><content type='html'>Inclusion of 64-bit multiplication and division increases code size by 10 kilobytes on an AVR ATmega8. Reworked the formula to avoid uint64_t-s.&lt;br /&gt;&lt;br /&gt;Timer-based stepper movement is just great. Compared to _delay_1 or _delay_ms it offers following benefits:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Frees CPU up for other tasks.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delay lengths are can be easily specified in milli- or microseconds.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It's not hard. I prepare a list of 'actions' to execute beforehand and set the timer top as follows:&lt;br /&gt;&lt;pre&gt;/** Set up timer 1 (16-bit), frequency = F_CPU/(timertop+1). */&lt;br /&gt;#define setup_timer1(timertop) do {        \&lt;br /&gt; OCR1A  = (timertop); /* set top */      \&lt;br /&gt; /*  Mode 4 - CTC with Prescaler 1 */      \&lt;br /&gt; TCCR1B = (1&amp;lt;&amp;lt;WGM12)|(1&amp;lt;&amp;lt;CS10);        \&lt;br /&gt; TCNT1 = 0; /* reset counter */        \&lt;br /&gt; TIMSK |= (1&amp;lt;&amp;lt;OCIE1A); /* enable output-compare int */  \&lt;br /&gt;} while (0)&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Calculate timertop for setup_timer1.&lt;br /&gt; */&lt;br /&gt;static uint16_t&lt;br /&gt;timertop_of( const uint16_t length,&lt;br /&gt;    const uint16_t time_ms)&lt;br /&gt;{&lt;br /&gt; const uint16_t timertop = (((uint32_t)time_ms) * (F_CPU/100) / 10) / length - 1;&lt;br /&gt; return timertop;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/** Current action index. */&lt;br /&gt;static int8_t action_index = -1;&lt;br /&gt;/** Actions are executed from back to front. */&lt;br /&gt;static ACTION actions[5];&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The interrupt service routine chews through the list of actions:&lt;br /&gt;&lt;pre&gt;SIGNAL(SIG_OUTPUT_COMPARE1A)&lt;br /&gt;{&lt;br /&gt; if (action_index&gt;=0) {&lt;br /&gt;  ACTION* act = &amp;actions[action_index];&lt;br /&gt;  move_1_step(act-&gt;step_direction);&lt;br /&gt;  if (--(act-&gt;countdown) == 0) {&lt;br /&gt;   --action_index;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The experienced reader can fill out the details...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-4008527774120240358?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/4008527774120240358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=4008527774120240358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4008527774120240358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/4008527774120240358'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/06/inclusion-of-64-bit-multiplication-and.html' title='64 bits and timers on AVR'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6130801149335973761.post-7808031138071744627</id><published>2007-06-27T07:36:00.000-07:00</published><updated>2007-06-28T02:12:52.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><title type='text'>ARM power consumption</title><content type='html'>ARM7TDMI core takes at least 15mA when running on 3.6864 MHz. AT91SAM7S256.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6130801149335973761-7808031138071744627?l=andu-goes-west.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andu-goes-west.blogspot.com/feeds/7808031138071744627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6130801149335973761&amp;postID=7808031138071744627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/7808031138071744627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6130801149335973761/posts/default/7808031138071744627'/><link rel='alternate' type='text/html' href='http://andu-goes-west.blogspot.com/2007/06/arm7tdmi-core-takes-at-least-15ma-when.html' title='ARM power consumption'/><author><name>Andu</name><uri>http://www.blogger.com/profile/00343924518564969219</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://194.204.26.104/~andrei/andu_o_matic2.jpg'/></author><thr:total>0</thr:total></entry></feed>
