<?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-8882473525658674684</id><updated>2012-02-16T22:32:59.037+01:00</updated><category term='driver losses'/><category term='embedded world'/><category term='raw audio'/><category term='bering uclibc'/><category term='SMB'/><category term='rtos'/><category term='spinning'/><category term='bug'/><category term='PORT'/><category term='angle measurement'/><category term='baudrate'/><category term='DSPIC'/><category term='assembler'/><category term='registers'/><category term='undefined reference to'/><category term='I2C'/><category term='audio'/><category term='programmable fuse'/><category term='detection'/><category term='SSV'/><category term='job'/><category term='SSV esom'/><category term='magnet'/><category term='FTP'/><category term='microchip DSPIC'/><category term='registration'/><category term='angle meter'/><category term='compaq'/><category term='difference'/><category term='mp3 decoding'/><category term='C30 USART error'/><category term='java'/><category term='works'/><category term='absolute'/><category term='sizingcode'/><category term='webservices'/><category term='core'/><category term='incomplete whiepapers'/><category term='hate'/><category term='PIC'/><category term='cdce913'/><category term='iMovie6'/><category term='mpg123'/><category term='USB'/><category term='C30'/><category term='speex library'/><category term='playing'/><category term='output'/><category term='Legal robbers'/><category term='patent'/><category term='conpact-flash'/><category term='mips'/><category term='ancient'/><category term='desktop'/><category term='rotor'/><category term='modem installation problem'/><category term='40'/><category term='retrochute'/><category term='unexpected clicks'/><category term='clock sweeping'/><category term='8710p'/><category term='slaba kvaliteta'/><category term='network'/><category term='si3000'/><category term='ubuntu'/><category term='EEPROM'/><category term='error'/><category term='account'/><category term='hall'/><category term='tethering'/><category term='return'/><category term='capacity'/><category term='support'/><category term='acceleration'/><category term='tutor'/><category term='most safe data'/><category term='ARM'/><category term='LCD'/><category term='LTC6904'/><category term='mplab'/><category term='GNU'/><category term='bullshit'/><category term='does not work'/><category term='30f4011'/><category term='octopus'/><category term='gol'/><category term='RMS calculation'/><category term='GUI'/><category term='leading'/><category term='16 bit timer'/><category term='encoder'/><category term='512'/><category term='invalid'/><category term='ios'/><category term='cross compilation'/><category term='candle'/><category term='interrupt on change'/><category term='Motor analysis'/><category term='transitions'/><category term='handheld'/><category term='DVD'/><category term='blocked'/><category term='18F'/><category term='useless'/><category term='mighty mouse'/><category term='update'/><category term='bemf'/><category term='rox'/><category term='embedded'/><category term='cross'/><category term='QT'/><category term='LONG'/><category term='command-q'/><category term='dual battery'/><category term='mp3 encoder'/><category term='programmable oscillator'/><category term='composer'/><category term='COM'/><category term='fade'/><category term='size'/><category term='smart battery'/><category term='post'/><category term='microchip.configuration bits verification error'/><category term='smart charger'/><category term='trick'/><category term='sucks'/><category term='scroller'/><category term='kernel'/><category term='USART'/><category term='gcc'/><category term='weird'/><category term='ssd card reader'/><category term='external procedures'/><category term='communications'/><category term='VS2005'/><category term='writing'/><category term='garmin'/><category term='LINK30'/><category term='entry point not found'/><category term='problem'/><category term='program memory writing'/><category term='C against assembly'/><category term='passing'/><category term='macos'/><category term='3d'/><category term='C'/><category term='LIN'/><category term='update fraud'/><category term='chords'/><category term='usblib'/><category term='iMovie'/><category term='cflags'/><category term='stupidity'/><category term='HTTP'/><category term='eSom'/><category term='iphone'/><category term='windows xp'/><category term='voice compression'/><category term='BLDC'/><category term='nintendo'/><category term='parachute'/><category term='software reset'/><category term='PC'/><category term='linux embedded'/><category term='firmware'/><category term='interception'/><category term='guitar'/><category term='self-signed'/><category term='stepper'/><category term='low level driving'/><category term='X11'/><category term='angle encoder'/><category term='get'/><category term='iMac'/><category term='LTC1821'/><category term='microchip PIC'/><category term='simulation'/><category term='updted'/><category term='tracking'/><category term='r6040'/><category term='DAC'/><category term='parameters'/><category term='LTC1608'/><category term='bash'/><category term='correct'/><category term='oracle'/><category term='3 phase'/><category term='visual studio'/><category term='removing'/><category term='AEAS-7000'/><category term='disappointment'/><category term='partialy damaged UART'/><category term='VNC server'/><category term='building'/><category term='emulation'/><category term='system()'/><category term='movie'/><category term='xcode'/><category term='Balluff'/><category term='grapher'/><category term='looping'/><category term='24h'/><category term='speech recognition'/><category term='software'/><category term='Hengstler'/><category term='twin DAC'/><category term='EU'/><category term='GPS'/><category term='certificate'/><category term='tick'/><category term='linear senzor'/><category term='stop-motion'/><category term='itunes'/><category term='prehodi'/><category term='hp'/><category term='recursion'/><category term='tcp ip stack'/><category term='LTC1760'/><category term='dll'/><category term='analyzer'/><category term='apple'/><category term='converter'/><category term='does java work?'/><category term='slovenia'/><category term='30F6014'/><category term='30f'/><category term='SPI'/><category term='RAM'/><category term='flaming'/><category term='help'/><category term='gnome'/><category term='string'/><category term='g30'/><category term='charging'/><category term='bad calling convention'/><category term='download'/><category term='bad DLL calling convention'/><category term='cheaper'/><category term='LAT'/><category term='graphics library'/><category term='idiotism'/><category term='installer class'/><category term='motor tracking'/><category term='simultaneous'/><category term='compiz'/><category term='DCI'/><category term='linear regression'/><category term='driving'/><category term='24j'/><category term='RAM upgrade'/><category term='linux'/><category term='iMovie HD'/><category term='Microchip'/><category term='decoding'/><category term='appstore'/><category term='software bug'/><category term='senzor'/><category term='iban'/><category term='soap'/><category term='YAFT'/><category term='bad quality'/><category term='core bug'/><category term='long merging'/><category term='zero-pass'/><category term='configure'/><category term='bad result'/><category term='dodajanje prehodov'/><category term='not closing applications'/><category term='openbox'/><category term='brake'/><category term='position'/><category term='Embedded world expo'/><category term='keytool'/><category term='Linear technology'/><category term='vb6'/><category term='ALSA'/><category term='Clock Pro'/><category term='mplab-x'/><category term='iDVD'/><category term='fixed'/><category term='spinning analyzer'/><category term='upload'/><category term='flame'/><category term='global warranty'/><category term='GPS Trainer'/><category term='command line'/><category term='traffic'/><category term='failure'/><category term='brushless motor'/><category term='rfId'/><category term='AD'/><category term='tbf'/><category term='sampling'/><category term='heating'/><title type='text'>Developer problems</title><subtitle type='html'>Here I intend to publish all my software work, including  problems I will have while implementing it. Also, there might be some posts added with no respect to the main subject. I apologise for that in advance.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default?start-index=101&amp;max-results=100'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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>140</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-5791150210253592200</id><published>2011-12-21T08:00:00.009+01:00</published><updated>2012-01-06T04:34:37.652+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nintendo'/><category scheme='http://www.blogger.com/atom/ns#' term='retrochute'/><category scheme='http://www.blogger.com/atom/ns#' term='handheld'/><title type='text'>Retrochute support page</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-T3kXrSAr6xk/TvGEdGzIGuI/AAAAAAAAB8Q/6x5Fmm30d-0/s1600/icon_large.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 114px; height: 114px;" src="http://4.bp.blogspot.com/-T3kXrSAr6xk/TvGEdGzIGuI/AAAAAAAAB8Q/6x5Fmm30d-0/s400/icon_large.png" alt="" id="BLOGGER_PHOTO_ID_5688473439921773282" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Application icon&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;T&lt;/span&gt;&lt;/span&gt;his time you are in a role of paratrooper saver. It is you (and your boat) that can save those poor souls from shark jaws.&lt;br /&gt;&lt;br /&gt;Game is another remake of Nintendo's handheld game &lt;span style="font-weight: bold;"&gt;Parachute&lt;/span&gt;. It has two game modes and slitghtly differs from my first remake of handheld game called &lt;span style="font-weight: bold;"&gt;Octopus&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Those three buttons on the right (top-down):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Game A mode&lt;/li&gt;&lt;li&gt;Game B mode&lt;/li&gt;&lt;li&gt;Time mode&lt;/li&gt;&lt;/ul&gt;Game center support provides two leaderboards - one for each game mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-0NUT6JjOeG8/TvGEWZkNLPI/AAAAAAAAB8E/GO9EzxsRa0w/s1600/Screenshot2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/-0NUT6JjOeG8/TvGEWZkNLPI/AAAAAAAAB8E/GO9EzxsRa0w/s400/Screenshot2.png" alt="" id="BLOGGER_PHOTO_ID_5688473324700380402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Screenshot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please report issues under comments.&lt;br /&gt;&lt;br /&gt;Application is available on AppStore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5791150210253592200?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5791150210253592200/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5791150210253592200' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5791150210253592200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5791150210253592200'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/12/retrochute-support-page.html' title='Retrochute support page'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-T3kXrSAr6xk/TvGEdGzIGuI/AAAAAAAAB8Q/6x5Fmm30d-0/s72-c/icon_large.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-4512621116254797612</id><published>2011-12-17T21:09:00.004+01:00</published><updated>2011-12-17T21:13:21.597+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ios'/><category scheme='http://www.blogger.com/atom/ns#' term='nintendo'/><category scheme='http://www.blogger.com/atom/ns#' term='parachute'/><title type='text'>Retrochute</title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;I&lt;/span&gt; present my new iOS project; it is another handheld remake, but redesigned from my first attempt.&lt;br /&gt;&lt;br /&gt;Currently it is in 'demo' phase.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/D-PTPLXYkw0" allowfullscreen="" frameborder="0" height="315" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Comming soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4512621116254797612?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4512621116254797612/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4512621116254797612' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4512621116254797612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4512621116254797612'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/12/retrochute.html' title='Retrochute'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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://img.youtube.com/vi/D-PTPLXYkw0/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-1313889743558454745</id><published>2011-12-14T18:02:00.005+01:00</published><updated>2011-12-14T20:52:06.530+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='parameters'/><category scheme='http://www.blogger.com/atom/ns#' term='passing'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='installer class'/><title type='text'>Visual studio setup project: passing parameters to custom installer class</title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;W&lt;/span&gt;ell, after quite a time I have an interesting topic.&lt;br /&gt;&lt;br /&gt;Let's say you've created a setup project in MS visual studio. That will give you MSI file, but with some limitation in creating process. Suppose you need some custom actions?&lt;br /&gt;&lt;br /&gt;You can implement your own installer class with custom actions, that is explained in many places. You can run external programs within installation procedure (as well as at unistall step.)&lt;br /&gt;&lt;br /&gt;But suppose you would like to configure installation procedure &lt;span style="font-style: italic; font-weight: bold;"&gt;at runtime&lt;/span&gt;? How can you do that? With command line parameters.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/279e0aea-077c-4150-89ae-55d8494def1b"&gt;Here&lt;/a&gt; is an example that worked for me. But it took me some before I figured out all parts of underlying mechanism and spice it up.&lt;br /&gt;&lt;br /&gt;It's rather tricky. In custom action's &lt;span style="font-style: italic;"&gt;CustomActionData&lt;/span&gt; property you &lt;span style="font-weight: bold;"&gt;must&lt;/span&gt; specify &lt;span style="font-weight: bold; font-style: italic;"&gt;all&lt;/span&gt; parameters you expect (see &lt;a href="http://www.codeproject.com/KB/install/command_lines_setups.aspx"&gt;this&lt;/a&gt; link's figure 4). If you don't, you won't get any data from command line at all.&lt;br /&gt;&lt;br /&gt;In 'command line' instalation procedure you specify custom parameters like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;param_name=param_value&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You cannot pass just parameter name!&lt;br /&gt;&lt;br /&gt;In code (VB), you get parameter's value like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;String paramVal = this.Context.Parameters.Item("param_name")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is wise to check a presence of parameter with &lt;span style="font-style: italic;"&gt;ContainsKey&lt;/span&gt; function first.&lt;br /&gt;&lt;br /&gt;The point is, that mechanism (if parameter is specified in &lt;span style="font-style: italic;"&gt;customActionData&lt;/span&gt; property) &lt;span style="font-weight: bold;"&gt;always&lt;/span&gt; reports that parameter exists. It is it's value that counts.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you set parameter value in command line, than you will get that value.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If you ommit parameter entirely, you will &lt;span style="font-style: italic; font-weight: bold;"&gt;not&lt;/span&gt; get &lt;span style="font-style: italic;"&gt;Nothing&lt;/span&gt;, but empty string!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It took me couple of hours to figure that out; I did not find any info on that...&lt;br /&gt;&lt;br /&gt;Hope this 'elps some.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1313889743558454745?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1313889743558454745/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1313889743558454745' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1313889743558454745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1313889743558454745'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/12/visual-studio-setup-project-passing.html' title='Visual studio setup project: passing parameters to custom installer class'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2849121616577304234</id><published>2011-08-16T21:37:00.018+02:00</published><updated>2011-11-12T07:24:22.972+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='octopus'/><category scheme='http://www.blogger.com/atom/ns#' term='nintendo'/><category scheme='http://www.blogger.com/atom/ns#' term='handheld'/><title type='text'>Retropus support page</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-DCX5gs_hS9E/TkrelfDVTYI/AAAAAAAABuk/U0hoPxZB8aQ/s1600/icon114.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 114px; height: 114px;" src="http://3.bp.blogspot.com/-DCX5gs_hS9E/TkrelfDVTYI/AAAAAAAABuk/U0hoPxZB8aQ/s400/icon114.png" alt="" id="BLOGGER_PHOTO_ID_5641566218806971778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Application icon&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:180%;"&gt;&lt;b&gt;&lt;i&gt;T&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;his is a remake of ancient handheld game from 80's.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You are in a role of diver diving for treasure. But you have a lethal octopus on your way - it will kill you if it catches you. You move your diver with LEFT and RIGHT buttons. When you reach treasure chest press RIGHT again to grab some treasure. You must then return with treasure onboard the boat - without treasure you cannot board it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your diver will not just wait onboard to be 'pushed' into the sea. He will jump over board by himself when possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-Ik5Xwuu_pZ4/Tr4QUjN-rRI/AAAAAAAAB4g/EO6VgXm7Ow8/s1600/Screenshot6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-Ik5Xwuu_pZ4/Tr4QUjN-rRI/AAAAAAAAB4g/EO6VgXm7Ow8/s400/Screenshot6.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5673990525770706194" style="cursor: pointer; width: 400px; height: 267px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;iPhone screenshot of version 3.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Game has two modes. &lt;b&gt;A&lt;/b&gt; mode starts slow, &lt;b&gt;B&lt;/b&gt; mode is faster. Game speed increases with score.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Time button displays local time when game is not running.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If  you are logged into game canter it's shortcut icon will appear and score will be sent to leaderboard. If  game is paused and user is switched, game will reset. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Report issues under comments, please.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Application update is available on iTunes AppStore.&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/8882473525658674684-2849121616577304234?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2849121616577304234/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2849121616577304234' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2849121616577304234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2849121616577304234'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/08/retropus-support-page.html' title='Retropus support page'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-DCX5gs_hS9E/TkrelfDVTYI/AAAAAAAABuk/U0hoPxZB8aQ/s72-c/icon114.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-2439829337103228923</id><published>2011-06-19T21:07:00.028+02:00</published><updated>2011-07-13T10:28:31.528+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chords'/><category scheme='http://www.blogger.com/atom/ns#' term='tutor'/><category scheme='http://www.blogger.com/atom/ns#' term='playing'/><category scheme='http://www.blogger.com/atom/ns#' term='leading'/><category scheme='http://www.blogger.com/atom/ns#' term='guitar'/><title type='text'>Chord Tutor support page: update</title><content type='html'>&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-HelJIxhT3Iw/TgFoHYEQeRI/AAAAAAAABo8/Y33KM1VkLzc/s1600/icon_114.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 114px; height: 114px;" src="http://1.bp.blogspot.com/-HelJIxhT3Iw/TgFoHYEQeRI/AAAAAAAABo8/Y33KM1VkLzc/s400/icon_114.png" alt="" id="BLOGGER_PHOTO_ID_5620888285863770386" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;i&gt;AppStore Icon&lt;/i&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;I&lt;/span&gt;&lt;/b&gt; have began learning to play a guitar some time ago. However, I still have problems with left hand coordination and reading guitar tabs at the same time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I came up with this solution. I developed a program that can animate sequence of chords in a song. While playing a chord, next chord begins dropping down one tick before it must be played. Chords are also color-labeled so are easier to recognize and memorize. Open chords (base note, minor and 7) are colored by default. You can assign your own color to &lt;i&gt;any&lt;/i&gt; chord, even default one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a movie of a concept proof:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;iframe src="http://www.youtube.com/embed/YvCZZumcUQ0" allowfullscreen="" frameborder="0" height="349" width="425"&gt;&lt;/iframe&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Final version is slightly modified:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-rx3fZouvY4Y/TgdZEK0RK4I/AAAAAAAABqk/jkzMuGgbrhg/s1600/Screenshot%2BFilePlay3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-rx3fZouvY4Y/TgdZEK0RK4I/AAAAAAAABqk/jkzMuGgbrhg/s400/Screenshot%2BFilePlay3.png" alt="" id="BLOGGER_PHOTO_ID_5622560587953286018" style="cursor: pointer; width: 267px; height: 400px; " border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-AZA9oAnkSWk/TgdYNrDlyAI/AAAAAAAABqM/k60IU7q5gEE/s1600/Screenshot%2BFilePlay2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-AZA9oAnkSWk/TgdYNrDlyAI/AAAAAAAABqM/k60IU7q5gEE/s400/Screenshot%2BFilePlay2.png" alt="" id="BLOGGER_PHOTO_ID_5622559651714680834" style="cursor: pointer; width: 267px; height: 400px; " border="0" /&gt;&lt;/a&gt; &lt;a href="http://1.bp.blogspot.com/-4h8jcdIal_Q/TgdYx--sQ0I/AAAAAAAABqc/MN1C7Z5_Pdk/s1600/Screenshot%2BfileSelect2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-4h8jcdIal_Q/TgdYx--sQ0I/AAAAAAAABqc/MN1C7Z5_Pdk/s400/Screenshot%2BfileSelect2.png" alt="" id="BLOGGER_PHOTO_ID_5622560275538133826" style="cursor: pointer; width: 267px; height: 400px; " border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Song name and tempo are read from file. You can change tempo when you're not 'running' file. After you touch '&lt;b&gt;GO!&lt;/b&gt;' you have 6 ticks to prepare for playing. Tempo ticks are marked with green indicator. Application also displays next 4 chords that are to be played. You can also mark chord with comment that is displayed above chord sequence like &lt;i&gt;refrain&lt;/i&gt; or &lt;i&gt;verse&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Song file format is simple and you can adopt your guitar tabs easily. Bellow is an example:  Tammy Wynette's 'Stand By Your Man' written for this application and also displayed in screenshots. I think chord sequence should be mostly correct (but I am not much of the musician myself) - I checked it with original YouTube spot comparison. Save this text with acc (do not use capitals) extension and upload it into application file space through iTunes application file sharing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;document spec="chordplayer"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;track name="Stand By Your Man" tempo="53"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;div&gt;    &amp;lt;colors&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;color chord="C#m" r="255" g="20" b="147"/&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;color chord="C#" r="205" g="105" b="180"/&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;color chord="C#7" r="255" g="131" b="250"/&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;color chord="F#" r="0" g="199" b="140"/&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;/colors&amp;gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chords&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;!-- FIRST --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="4" comment = "First"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="Bm" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="B" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;!-- SECOND --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="4" comment = "Second"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="Bm" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;!-- REF --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2" comment = "Refrain"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="4"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#m" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="Bm" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#7" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="F#" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#m" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="Bm" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="C#7" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="F#" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="2"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="E" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="A" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;chord name="D" tacts="1"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;/chords&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&amp;lt;/document&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then simply open file in application, hit &lt;b&gt;Go!&lt;/b&gt; and begin playing guitar. With this utility following chords while playing guitar should be easier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Info ver.1.0&lt;/b&gt;: (no more available) colorization worked with open chords (base note, minor and 7). 'Unassigned' chords were grey.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Info ver.2.0&lt;/b&gt;:(current version) you can specify your own color scheme for chords with &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;color&lt;/span&gt; HTML elements. Should you select a chord that has color assigned by default then it's color will be replaced with new one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope you will find this utility useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please report issues under comments.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Application update is available on AppStore.&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/8882473525658674684-2439829337103228923?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2439829337103228923/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2439829337103228923' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2439829337103228923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2439829337103228923'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/06/iphone-guitar-chord-helper.html' title='Chord Tutor support page: update'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-HelJIxhT3Iw/TgFoHYEQeRI/AAAAAAAABo8/Y33KM1VkLzc/s72-c/icon_114.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3499747793785175708</id><published>2011-06-05T10:15:00.030+02:00</published><updated>2011-06-22T21:59:09.669+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='support'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS Trainer'/><title type='text'>GPS Trainer2 support page</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-KzvfI00wT-4/TgFo6T_4ibI/AAAAAAAABpM/dOBrlI1kVQI/s1600/iconB114.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 114px; height: 114px;" src="http://1.bp.blogspot.com/-KzvfI00wT-4/TgFo6T_4ibI/AAAAAAAABpM/dOBrlI1kVQI/s400/iconB114.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5620889160945011122" /&gt;&lt;/a&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;AppStore Icon&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;I&lt;/span&gt;&lt;/b&gt;f you're looking for instructions of how to use iOS GPS Trainer application, this is the right place.&lt;br /&gt;&lt;br /&gt;Application should be easy to use. It's core idea is that you can track your path for later use in Google Earth's KML format, but besides that, tracks are also timed so next time you will be able to 'compete' with yourself and hopefully watch your 'ghost from last run' falling behind you.&lt;br /&gt;&lt;br /&gt;Stored tracks are accessible from iTunes. When you select this application they will appear on list. After they are stored on computer they can be opened in Google Earth with double click.&lt;br /&gt;&lt;br /&gt;There is also a file named '&lt;span style="font-style: italic; font-family:courier new;"&gt;settings&lt;/span&gt;'. If you delete it, units format will be miles until changed and file will be created again. You cannot delete tracks from applicaiton, you can delete them from iTunes.&lt;br /&gt;&lt;br /&gt;Each track has two files: KML (coordinates) and SPD (timing marks). You need both for 'ghost' mode. You can rename these files - but their names must match exactly - letter by letter, space by space. File names are also capital letters-dependant!&lt;br /&gt;&lt;br /&gt;You can also upload tracks from other users on your device and compete with their ghosts. In this case they must give you KML and SPD file of their track and after you put them on your iPhone through iTunes you can compete immediately.&lt;br /&gt;&lt;br /&gt;Track are named in following manner:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;day_month_year_hour_minute_second&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Track is saved only if at least one coordinate has been recorded.&lt;br /&gt;&lt;br /&gt;When you start the application, you see map window with signal quality indicator (red or green light), distance displayed and settings button:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-_ElQo0CFWck/TetB0GJJuNI/AAAAAAAABlc/ih68SrA-q3g/s1600/Screenshot%2B2011.06.05%2B10.12.22.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/-_ElQo0CFWck/TetB0GJJuNI/AAAAAAAABlc/ih68SrA-q3g/s400/Screenshot%2B2011.06.05%2B10.12.22.png" alt="" id="BLOGGER_PHOTO_ID_5614653723705456850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Zooming factor can be set with 'expand' gesture and will remain so until changed.&lt;br /&gt;&lt;br /&gt;When you touch settings button, you enter Settings screen:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-QomjtVtiVn8/Tes7lt44pnI/AAAAAAAABlM/6z4MvYKKMSg/s1600/Screenshot%2B2011.06.05%2B10.12.37.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://4.bp.blogspot.com/-QomjtVtiVn8/Tes7lt44pnI/AAAAAAAABlM/6z4MvYKKMSg/s400/Screenshot%2B2011.06.05%2B10.12.37.png" alt="" id="BLOGGER_PHOTO_ID_5614646879606842994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On this screen you can:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;set units format, &lt;/li&gt;&lt;li&gt;start tracking,&lt;/li&gt;&lt;li&gt;display your current location&lt;/li&gt;&lt;li&gt;start competing with ghost&lt;/li&gt;&lt;li&gt;load previously saved track onto map&lt;/li&gt;&lt;li&gt;go back to map without changes&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Set Units Format&lt;br /&gt;&lt;/span&gt;You can choose between kilometers or miles.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Tracking Start&lt;/span&gt;&lt;br /&gt;When you flip tracking switch to ON you go to 'tracking' mode. Application starts saving coordinates as soon as GPS signal is strong enough. Your recorded path is visible on map until you choose some other mode or flip tracking switch to OFF.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;You should use following procedure list (it's easy as 1,2,3):&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;trigger tracking (flip Tracking switch to ON)&lt;/li&gt;&lt;li&gt;Run, run, run... and finish your track&lt;/li&gt;&lt;li&gt;stop tracking (flip Tracking switch to OFF)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;and you'll have a track recorded. It will be visible on the track list next time you open settings page.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Display your current location&lt;/span&gt;&lt;br /&gt;You can see where you are, but any tracking or track viewing mode is suspended and curret track is saved.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Start competing with ghost&lt;/span&gt;&lt;br /&gt;You must select track from track list and GPS signal must be strong enough. There are two runner silhouetts displayed: ghosted one is your selected track, black one is your current location. You start with total track distance whitch decreaes with your movement. Path is tracked and therefore saved automaticaly - until you flip Tracking switch to OFF or choose other mode.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-GO-OnIucCVQ/Tf1xTIIaG9I/AAAAAAAABoM/VIp-ZIpu_mU/s1600/ScreenshotGH.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-GO-OnIucCVQ/Tf1xTIIaG9I/AAAAAAAABoM/VIp-ZIpu_mU/s400/ScreenshotGH.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5619772483442449362" style="cursor: pointer; width: 267px; height: 400px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Loading saved track&lt;/span&gt;&lt;br /&gt;This is static representation of saved track. Path with start and stop pins is displayed. You must select track from list before you can use this mode.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are no audio messages in this application (saving battery as much as possible). If tracing is ON, track is stored even if iPhone is deactivated - as long as application is active.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Report issues under comments, please.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Marjan Mrak&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Application is available on AppStore.&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/8882473525658674684-3499747793785175708?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3499747793785175708/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3499747793785175708' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3499747793785175708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3499747793785175708'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/06/gps-trainer-support-page.html' title='GPS Trainer2 support page'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-KzvfI00wT-4/TgFo6T_4ibI/AAAAAAAABpM/dOBrlI1kVQI/s72-c/iconB114.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-5061665666648860863</id><published>2011-06-02T07:26:00.008+02:00</published><updated>2011-06-04T21:34:09.286+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='registration'/><category scheme='http://www.blogger.com/atom/ns#' term='iban'/><category scheme='http://www.blogger.com/atom/ns#' term='appstore'/><category scheme='http://www.blogger.com/atom/ns#' term='invalid'/><category scheme='http://www.blogger.com/atom/ns#' term='account'/><title type='text'>8th wonder of the world</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;...i.e.: Apple responded in less than an hour.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Since I plan to sell my iOS apps (and hopefully earn some pocket allowance) I had to fix financial aspects with Apple. Which means registering my bank account @ allmighty fruit.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Just couldn't do it! Utility kept informing me that my IBAN is invalid.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Googling gave some incomplete answers and I began steaming. But then enlightment came: I will contact Apple and wait a couple of weeks (so I have read). What else could I do?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Imagine my surprise then when I got response half  an hour later! I was to send my IBAN so Apple accountants would 'decode' it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;That was B4 I went sleeping. Believe it or not - this morning complete answer was waiting in my e-mail and problem was fixed.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I still cannot believe myself.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Solution:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;My IBAN looks like this (I come from Urope):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;SI56 XXXX XBBB BBBB BXX&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;My bank's account were numbers marked with 'B'.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I hope that this will save you too.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Ava, Apple! That sure was a nice surprise.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5061665666648860863?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5061665666648860863/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5061665666648860863' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5061665666648860863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5061665666648860863'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/06/8th-wonder-of-world.html' title='8th wonder of the world'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4130791662164176005</id><published>2011-05-27T05:25:00.001+02:00</published><updated>2011-05-27T14:08:16.383+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS'/><title type='text'>My own GPS tracker</title><content type='html'>IPhone is amazing (I am sure you hear lots of that lots of times). But look what I have conceived in a matter of days (this is actual screenshot from iPhone):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-v5-G1ySB53Q/TdNMuvFaBNI/AAAAAAAABiw/EioZ6rihxbQ/s1600/iphone.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-v5-G1ySB53Q/TdNMuvFaBNI/AAAAAAAABiw/EioZ6rihxbQ/s400/iphone.png" alt="" id="BLOGGER_PHOTO_ID_5607910326803236050" style="cursor: pointer; width: 267px; height: 400px; " border="0" /&gt;&lt;/a&gt;  &lt;a href="http://2.bp.blogspot.com/-IpJTqJo7LUs/Td-ShZXvXNI/AAAAAAAABk4/YHlHL_0GuPc/s1600/Screenshot4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-IpJTqJo7LUs/Td-ShZXvXNI/AAAAAAAABk4/YHlHL_0GuPc/s400/Screenshot4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5611364763170725074" style="cursor: pointer; width: 267px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;First impression and redesign. Red light - accuracy not good (yet)!&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With a small help of Apple development support - it took us 6 days to find out that I didn't read GPS peripheral documentation thourougly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Decoration has been created with Inkscape and Gimp. Useful tools indeed. And &lt;i&gt;truly&lt;/i&gt; free!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This creation stores GPS coordinates directly into KML files which are accessible over iTunes and can then be opened straight into Google Earth.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4130791662164176005?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4130791662164176005/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4130791662164176005' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4130791662164176005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4130791662164176005'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/05/my-own-gps-tracker.html' title='My own GPS tracker'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-v5-G1ySB53Q/TdNMuvFaBNI/AAAAAAAABiw/EioZ6rihxbQ/s72-c/iphone.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-7158703457360312856</id><published>2011-05-05T22:12:00.004+02:00</published><updated>2011-05-05T22:34:42.226+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mplab-x'/><category scheme='http://www.blogger.com/atom/ns#' term='failure'/><title type='text'>Microchip released cross-platform MPLAB IDE - first impressions</title><content type='html'>&lt;span style="font-size:180%;"&gt;A&lt;/span&gt;nd last, for tha matter.&lt;br /&gt;&lt;br /&gt;I don't know who was man in charge for that project but if I was his boss I would release &lt;span style="font-style: italic; font-weight: bold;"&gt;him&lt;/span&gt; @once.&lt;br /&gt;&lt;br /&gt;So what does 'cross platform' means to microchip?&lt;br /&gt;&lt;br /&gt;Well, I am macOS user and I expected at least an MPLAB for windows duplicate. But what did (not anymore) allmighty microchip coocked up? Java. Java!? For microcontroller software development and programmer interaction? Nobody does that. Nobody would dare to do that.&lt;br /&gt;&lt;br /&gt;IDE is based on NetBeans. Therefore it is painfully slow, irresponsive and irritable and does not even remotley resembles, fucntions or looks like original MPLAB. Just wait till customers open multiple projects at one time (it is possible to do that, right?) - it will take IDE a whole minute to load, scan projects and check TODO's...&lt;br /&gt;&lt;br /&gt;Microchip MBAs, face it: you blew it.&lt;br /&gt;&lt;br /&gt;I have a (better) suggetion for you: if you want to expand to other computer platforms you should try to convince potential customers into virtualization software use - I recommend VMWare. I use MPLAB, C30 and C18 in that way and evereything works better than on actual PC with windows. It will save you many support calls (you weren't very good at it anyway) and a bad karma.&lt;br /&gt;&lt;br /&gt;Maybe people will use this new MPLAB-X. I definetly will not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7158703457360312856?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7158703457360312856/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7158703457360312856' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7158703457360312856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7158703457360312856'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/05/microchip-released-cross-platform-mplab.html' title='Microchip released cross-platform MPLAB IDE - first impressions'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8199276477854594598</id><published>2011-05-04T02:31:00.006+02:00</published><updated>2011-05-27T07:52:55.620+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sizingcode'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>To bite the sourly Apple</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;b&gt;I&lt;/b&gt;&lt;/span&gt;n my country there is an above saying which means &lt;i&gt;inevitable has to be done&lt;/i&gt;. Yes, I have sublimed allmighty fruit and pay. And got access to my own iPhone for 100$. But I tell you, it still kinda hurts down there...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, I wrote a &lt;a href="http://marjandeveloperelectro.blogspot.com/2011/03/updated-iphone-application-sizingcode.html"&gt;utility for UCStech's SizingCode system&lt;/a&gt;. Providing &lt;a href="http://www.sizingcode.com/"&gt;SizingCode&lt;/a&gt; code and &lt;/div&gt;&lt;div&gt;&lt;div&gt;shoe model code application queries server for best suitable shoe size. It was running in simulator at the time.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a 'real world' demonstration movie:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/dvsx2qksQBo" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see, there is not much difference - if any - with simulator. Remakable, I admit.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8199276477854594598?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8199276477854594598/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8199276477854594598' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8199276477854594598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8199276477854594598'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/05/to-bite-sourly-apple.html' title='To bite the sourly Apple'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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://img.youtube.com/vi/dvsx2qksQBo/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-1833374368761002531</id><published>2011-04-22T18:36:00.004+02:00</published><updated>2011-04-22T18:47:09.528+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disappointment'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>You want to be an apple developer in EU? Impossible!</title><content type='html'>I don't know how to write this without flaming. But read on and think about.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I &lt;b&gt;&lt;i&gt;WANT&lt;/i&gt;&lt;/b&gt; to develop applications for iOS. Since it is impossible without paying apple 100$, I was forced to acquire visa card.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apple requires my personal data to be  &lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style=" ;font-size:x-large;"&gt;faxed&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; to them in order to complete so called 'enrollment process'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My country &lt;i&gt;&lt;b&gt;is&lt;/b&gt;&lt;/i&gt; a member of EU (or is it?). But apparently not for apple. I asked them for explanation - after 14 days still no answer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I must be dreaming. In 2011 there is still paperwork at apple's.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The company I work for also wanted to acquire certificate for ios app development. It has now been nearly two months since and still - no certificate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lemme check how things are running on android...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1833374368761002531?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1833374368761002531/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1833374368761002531' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1833374368761002531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1833374368761002531'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/04/you-want-to-be-apple-developer-in-eu.html' title='You want to be an apple developer in EU? Impossible!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2814968768242558102</id><published>2011-04-13T18:47:00.003+02:00</published><updated>2011-04-13T19:02:56.506+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stop-motion'/><category scheme='http://www.blogger.com/atom/ns#' term='composer'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>Stop-motion home-made on Apple</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;E&lt;/b&gt;&lt;/span&gt;ver wanted or tried to make movie from sequence of images? I did try several times but since there was no easy-use and free tool around, I had to wait till Apple to took my courage and made something of my own.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And this is the result:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/vTi9bx7tkwU" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Inspiration was found in an apple developer example where entire procedure is being automated. But it was a weird mixture of cocoa and C (apple calls it &lt;b&gt;jam&lt;/b&gt; and is not buildable by today-tools) so it was not of much use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I persisted and again it was not THAT difficult - I used QuickTime library for the very first time, mind you! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although I am &lt;i&gt;not&lt;/i&gt; an Apple advocate I cannot help myself but to admire their sense for simplifying complex programming tasks. To create something like this in any windows development environment? To append image to a movie with a single line of code? Mission Impossible, I guess...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This application is far from finished - it's more like a 'proof of concept', but still I am thrilled. A good 4 hours &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;!&lt;/span&gt;wasted. :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yours...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2814968768242558102?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2814968768242558102/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2814968768242558102' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2814968768242558102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2814968768242558102'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/04/stop-motion-home-made-on-apple.html' title='Stop-motion home-made on Apple'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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://img.youtube.com/vi/vTi9bx7tkwU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3269330985916741618</id><published>2011-04-09T05:14:00.003+02:00</published><updated>2011-04-09T05:37:12.251+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='USART'/><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><title type='text'>Handling errors on PIC USART</title><content type='html'>This time it's about importance of checking USART errors. Kinda late, but better late than never.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a story:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had to connect a linux program and a PIC over RS232, but since linux machine did not have RS232 connector I was forced to use USB2RS232 converter, for which linux drivers were included into kernel.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, PIC refused to work - after linux program was closed, it stopped responding and only reset helped. However PIC worked flawlessly from windows hyper terminal. Program also worked on Suse linux virtual machine in macOS - where it was being developed - I was able to close it, reopen it - no problems, PIC continued to respond. But when program was closed on ASUS's EEPC (the very same USB2RS232 converter was used!) it was all over for PIC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After some 4 hours of testing I only thought about checking status bits of USART receiver. It turned out that bit for buffer overrun was set and USART stopped receiving data. When I inserted code for bit reset in case of being set, problems disappeared.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can only assume that linux drivers for USB converter need some polishing. I don't know the internals, but it looks like when configuration of port (&lt;i&gt;termios&lt;/i&gt; structure) was restored on program  exit, USB converter got mad...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another word about parallels virtualization application on apple machine: it sucks! I was using it for Suse linux 10 emulation. It worked, but it was a pain in the... : only ancient USB keys of 128MB size were recognized, X-server worked only with 4:3 proportion... VMWare Fusion &lt;b&gt;is&lt;/b&gt; another story. USB storage devices - no prob, X-server - any window size can be set, a whole damn linux machine works as it was installed on disk, not being virtualized. Works like a charm!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Forget parallels! Use VMWare Fusion!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3269330985916741618?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3269330985916741618/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3269330985916741618' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3269330985916741618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3269330985916741618'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/04/handling-errors-on-pic-usart.html' title='Handling errors on PIC USART'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8377750238154056303</id><published>2011-03-18T10:11:00.004+01:00</published><updated>2011-03-18T11:43:37.462+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sizingcode'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>An updated iPhone application: SizingCode assistant</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;b&gt;Y&lt;/b&gt;&lt;/span&gt;ou can learn more about SizingCode&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;™&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Georgia;font-size:12px;"&gt; &lt;/span&gt;system on &lt;a href="http://www.ucstech.eu/"&gt;UCS Systems webpage&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to get acquainted with iOS animation possibilities, I have developed an iOS assistant app as shoe size advisor, which can be used any time anywhere - with internet connectivity, of course. &lt;a href="http://marjandeveloperelectro.blogspot.com/2011/03/soap-on-iphone-or-imac-perfectly.html"&gt;Previous post&lt;/a&gt; was my starting point.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is my creation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7Bb6maj31Fo?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/7Bb6maj31Fo?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At starting page, SizingCode and shoe model code have been already typed. On the right side of the movie a GlassFish AS window is visible - as a proof that iPhone is communicating with it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When 'Do Matching' button is hit, both codes are sent to server where matching calculation takes place. Results are then displayed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On a second app's window SizingCode profile details are displayed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After that another matching is performed, but with different shoe model.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Can you imagine implementig such GUI with java technologies and within web browsers? Without immense processing power and resources?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yours...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8377750238154056303?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8377750238154056303/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8377750238154056303' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8377750238154056303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8377750238154056303'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/03/updated-iphone-application-sizingcode.html' title='An updated iPhone application: SizingCode assistant'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2844187818789157137</id><published>2011-03-12T18:36:00.009+01:00</published><updated>2011-03-14T18:06:06.079+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='ios'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>SOAP on iPhone or iMac? Perfectly possible!</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;I&lt;/b&gt;&lt;/span&gt;t's XCode and WebServices over SOAP protocol this time.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are many web services that are available over SOAP protocol. This combination is nice thing, because it offers XML specification for every method (including parameters and response) that web service implements (WSDL). They are available over URL so that most java development environments generates pojo classes and methods automatically.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;XCode however does not. Apple offers Eclipse plugin called WebObjects, but it is java stuff.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I put myself to test: can I write SOAP client?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It actually wasn't &lt;b&gt;&lt;i&gt;that&lt;/i&gt;&lt;/b&gt; difficult. Apple offers XML document parser and HTTP connection classes. For XML parsing I used following classes:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;NSXMLDocument&lt;/li&gt;&lt;li&gt;NSXMLElement&lt;/li&gt;&lt;li&gt;NSArray and&lt;/li&gt;&lt;li&gt;NSXMLNode&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;You will need them for SOAP response - to get your method results from XML... when (if) we reach that point...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, start with WebService implementation in NetBeans. Yes, NetBeans! Google '&lt;i&gt;netbeans webservices tutorial&lt;/i&gt;' for help. Implement one simple method: &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;getMessage&lt;/span&gt; that takes no parameters and returns string "&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Hello&lt;/span&gt;" - enough for start. You can test it over right-clicked menu option "&lt;i&gt;Test Web Service&lt;/i&gt;" in NetBeans. Safari will open, and you'll get a page with a button for WebService method invocation. Click it and you should get something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-VrvhxgUN05U/TXuxc46Wq_I/AAAAAAAABfE/ZHotRku_mcY/s1600/safarsoap.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/-VrvhxgUN05U/TXuxc46Wq_I/AAAAAAAABfE/ZHotRku_mcY/s400/safarsoap.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5583251272927456242" style="cursor: pointer; width: 372px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;You have both SOAP request and response available. Believe me, you'll need it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, Cocoa client now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For direct POST request you'll need &lt;a href="http://allseeing-i.com/ASIHTTPRequest/"&gt;those&lt;/a&gt; libraries. Follow instructions. You can invocate WebService call like this (click on image to zoom it):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-m94AHc6GVw0/TXuxdemOn6I/AAAAAAAABfM/W3Ne589QjmY/s1600/xcodesoap.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/-m94AHc6GVw0/TXuxdemOn6I/AAAAAAAABfM/W3Ne589QjmY/s400/xcodesoap.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5583251283043590050" style="cursor: pointer; width: 400px; height: 320px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You get the idea? This is a raw POST request with SOAP envelope in it. It is easy to replace method parameters in that manner. &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;StringWithFormat&lt;/span&gt; enables formatted string generation - like &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;printf&lt;/span&gt; with '&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;%s&lt;/span&gt;' to put variable values in it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And result? There you have it:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-iBgeEpIh2rM/TX5KAY1SqUI/AAAAAAAABfk/-w9UY-YL8UU/s1600/clientboth.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/-iBgeEpIh2rM/TX5KAY1SqUI/AAAAAAAABfk/-w9UY-YL8UU/s400/clientboth.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5583981958512421186" style="cursor: pointer; width: 400px; height: 206px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see, response on the &lt;b&gt;right&lt;/b&gt; side is equal to one we got from testing. Yes, we can communicate with web services over SOAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Response on the &lt;b&gt;left&lt;/b&gt; side is received from servlet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Of course that way is inconvenient - if web services implementation would change. But I had no time to search for XCode class-generators from WSDL data. Perhaps some of you already did?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2011/03/13, P.S.:&lt;/b&gt; Communication over servlet already works on iPhone, too(feel free to compare results):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-QQWyI6MCkcY/TX5KAXj4i9I/AAAAAAAABfs/bLv83-GzxRQ/s1600/ifon.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/-QQWyI6MCkcY/TX5KAXj4i9I/AAAAAAAABfs/bLv83-GzxRQ/s400/ifon.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5583981958170971090" style="cursor: pointer; width: 206px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Remember: those are native macOS and iOS excutables, not half-compiled stuff, so they're faster than java stuff. And in hands of a skilled designer (which I am not!) they could and they would look much nicer and responsive than java spring stuff...&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2844187818789157137?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2844187818789157137/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2844187818789157137' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2844187818789157137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2844187818789157137'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/03/soap-on-iphone-or-imac-perfectly.html' title='SOAP on iPhone or iMac? Perfectly possible!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/-VrvhxgUN05U/TXuxc46Wq_I/AAAAAAAABfE/ZHotRku_mcY/s72-c/safarsoap.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3548693079878168640</id><published>2011-01-29T10:44:00.003+01:00</published><updated>2011-01-29T11:26:08.440+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='post'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='g30'/><category scheme='http://www.blogger.com/atom/ns#' term='upload'/><category scheme='http://www.blogger.com/atom/ns#' term='get'/><title type='text'>Making Motorola G30 upload and download files from server</title><content type='html'>It's been long time since last post.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This time it's Motorola's G30 GPRS modem and downloading / uploading file over HTTP protocol. Modem implements TCP/IP stack, so you can communicate over WWW with ease. Consult G30 datasheet for details, please!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Getting it done is quite easy - once you get the hang of it. :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Server side was implemented within HTTP servlet running on GlassFish server...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wait a minute! Java?! Yeah, it was finally java time (blushed face). If you ever wanted to start exploring HTTP server world there is nothing else but &lt;a href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt; I can recommend. It's simplicity and self-intuitivness has convinced even me; after all those years I have finally discovered IDE that was usable for EJB, WS and even JPA development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway - HTTP server is now operable and is capable of serving (GET request) and accepting (POST request) files.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;G30 from Motorola has TCP/IP stack implemented alright, but after two days of development I am not sure either my GPRS network is too occupied, or maybe G30 still needs some more development. Too many times I had to cut-off power supply in order to reset it and make it operable... Because I tried say 5 times to connect to APN without success, but after cold-boot modem connected promptly... On the other hand GlassFish was running flawlessly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sending data from G30 over TCP/IP is easy; just encode every byte into two-digit HEX format string, merge all bytes together and send them using appropriate AT commands.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AT+MIPCALL to establish GPRS connection&lt;/div&gt;&lt;div&gt;AT+MIPOPEN to connect to remote server&lt;/div&gt;&lt;div&gt;AT+MIPSEND and AT+MIPPUSH to send data, and &lt;/div&gt;&lt;div&gt;AT+MIPCLOSE to close connection to remote host - if server didn't close it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Modem notifies data arrival asynchronously and client side must intercept it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Downloading and uploading files is then all a matter of GET and PUT requests...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System is usable, but production software should be written very well indeed. Speaking from my experiences it is quite easy for modem part to get stucked and stalled...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yours...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3548693079878168640?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3548693079878168640/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3548693079878168640' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3548693079878168640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3548693079878168640'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2011/01/making-motorola-g30-upload-and-download.html' title='Making Motorola G30 upload and download files from server'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5219164868754826315</id><published>2010-09-11T19:42:00.004+02:00</published><updated>2010-09-11T20:05:36.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tethering'/><category scheme='http://www.blogger.com/atom/ns#' term='works'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>iPhone tethering finally works legally in slovenia!</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;T&lt;/span&gt;oday I experienced nirvana, I guess.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imagine that something you extremly desired became reality. That's what happened today.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I connected iPhone to my iMac this morning and updated it, I gone trying to activate tethering (again). And behold, tethering activation instead of pesky "For tethering contact your carrier" dialog appeared for the very first time. Wow! And I was finally and immediately able to use my iPhone as modem on my apple machines.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just hope I ain't dreamin' and tethering won't disappear. Again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bu I would really love to know what was the reason for this major shift. Apple, or my mobile operator?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is still one major limitation left: iTunes are still disabled in slovenia. Let me remind you that Slovenia is a member of EU, but all we get is B-class Apple stuff (our gready merchants, and I speak from the &lt;b&gt;very personal&lt;/b&gt; experiences!) and app-store instead of iTunes. (sigh)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Slovenia (so we were told) was once a top hit on an international list of countries being accused of software piracy. Is this still excuse for Apple to treat it like it's somewhere in the middle of Sahara desert? We got BSA now, we got piracy convicitons and prosecutions, believe me. We got USA-shaped laws and regulations here firmly. Because they bring money. (sigh again)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ava, Apple. Just grant me one wish more, will ya?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your slovenian advocate,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Me&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5219164868754826315?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5219164868754826315/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5219164868754826315' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5219164868754826315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5219164868754826315'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/09/iphone-tethering-finally-works-legally.html' title='iPhone tethering finally works legally in slovenia!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5971922826353823471</id><published>2010-09-10T08:27:00.003+02:00</published><updated>2010-09-10T08:50:31.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='recursion'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><title type='text'>Recursion on PIC in assembler</title><content type='html'>Have you ever wondered how to implement recursion in assembler on PIC microcontroller?&lt;br /&gt;&lt;br /&gt;I did and I have done it. Well on 18F family, but I think code should be totaly portable.&lt;br /&gt;&lt;br /&gt;PIC 18F family has a hardware stack limitation of 31 subprogram calls. It is not usefull for recursion; above all: stack does not store local variables each time function calls itself.&lt;br /&gt;&lt;br /&gt;Enters you. When processor enters function being recursed&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;point hardware stack pointer (STKPTR register) to second location of hardware stack (value 0x01)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;store TOSH and TOSL registers on stack&lt;/li&gt;&lt;li&gt;initialise local variables on stack&lt;/li&gt;&lt;li&gt;put parameter value on stack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;let function call itself&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Use incremental stack pointer and stack counter (now you should know what they're there for). Function would pick up parameter from stack, initialise some variables (if any), and do an what it you wouuld have it.&lt;br /&gt;&lt;br /&gt;When you return from funciton, do&lt;br /&gt;&lt;ol&gt;&lt;li&gt;point hardware stack pointer (STKPTR register) to second location of hardware stack (again, value 0x01)&lt;/li&gt;&lt;li&gt;load TOSH and TOSL registers from stack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;put return value on stack&lt;/li&gt;&lt;li&gt;do a return&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Your own stack pointer is now decremental and you have to use indirect addressing.&lt;br /&gt;&lt;br /&gt;With such approach you are limited only by a size of RAM. Price you pay are additional instructions (with one local variable there should be some 25-30 additional instructions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C-compiled program use that method, but their stack is more of a 'general' type I guess, and their stack-management code is therefor larger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5971922826353823471?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5971922826353823471/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5971922826353823471' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5971922826353823471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5971922826353823471'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/09/recursion-on-pic-in-assembler.html' title='Recursion on PIC in assembler'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3970146462412275165</id><published>2010-09-07T20:31:00.007+02:00</published><updated>2010-09-08T06:19:43.541+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Non-Preemptive Kernel on PIC</title><content type='html'>&lt;span style="font-size:180%;"&gt;T&lt;/span&gt;'was a shot in the dark. First one hit air itself. But I was able to hit big one with the second.&lt;br /&gt;&lt;br /&gt;Principle?&lt;br /&gt;&lt;br /&gt;I used TIMER0 as task swapper. Two tasks were running.&lt;br /&gt;&lt;br /&gt;I tried in C first because of structs and bigger data types. Stupid me did not realize that I will destroy C's stack by directly addressing PCLATH and PCL and STKPTR registers (there is no way to switch tasks without resetting hardware stack using my approach). So kernel worked for some time, than poor PIC crashed. Yo, Billy boy, did you implement kernel 'my way' (or I did it your's)  when you rolled out windows 3.x? Heck, I even implemented priority levels. It all worked realy nice untill collapse. It collapsed in MPLAB simulator and in real life.&lt;br /&gt;&lt;br /&gt;Therefore it had to be assembler. Same thing; timer0 as task swapper, two tasks. But no software stacks this time. Task1 set RD0 to 1 and set/reset RD1 in a lopp after that. Task 2 reset RD0, set/reset RD2 in a loop and was sending 2 characters over USART.&lt;br /&gt;&lt;br /&gt;Demo is on the image bellow:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/TIaHjTMVrqI/AAAAAAAABPI/FgeMA97gYE4/s1600/simulator_jpeg.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 236px;" src="http://3.bp.blogspot.com/_3OLOidqItrY/TIaHjTMVrqI/AAAAAAAABPI/FgeMA97gYE4/s400/simulator_jpeg.jpg" alt="" id="BLOGGER_PHOTO_ID_5514243834278948514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was quite amazed. I used 18f4550 with 20MHz chrystal and PLL without prescaller in simulator. Bytes sent over USART in each taks2's loop are not equal and are being sent sequentially. Their sequence was correct all the time, so task switching worked errorless. Tasks were switching in 1.6mS with timer0 as 8bit counter being prescalled at 1:8.&lt;br /&gt;&lt;br /&gt;Then I set timer0 prescaller to 1:2. Tasks were now switching at 102uS, and USART was able to send 3 bytes in that time (1 and a half pair of them). Again, byte sequence was errorless.&lt;br /&gt;&lt;br /&gt;How I did it? With use of TOS and STKPTR registers. When timer0 interrupt is triggered, you can read where processor left off (TOS regsters) and use this value as task-return-path. Also, set STKPTR register to 1 so it will point to first location of hardware stack after &lt;span style="font-style: italic;"&gt;retfie&lt;/span&gt; in task,  allthough task would be running in a subrutine - implementation of separate program stack for each task is however obvious then).&lt;br /&gt;&lt;br /&gt;Regards...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3970146462412275165?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3970146462412275165/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3970146462412275165' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3970146462412275165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3970146462412275165'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/09/non-preemptive-kernel-on-pic.html' title='Non-Preemptive Kernel on PIC'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/TIaHjTMVrqI/AAAAAAAABPI/FgeMA97gYE4/s72-c/simulator_jpeg.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3043770266277519092</id><published>2010-09-02T08:57:00.003+02:00</published><updated>2010-09-08T07:37:22.445+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tethering'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='flaming'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>iphone and tetherning in slovenia</title><content type='html'>Slovenia is a member of EU. But not for apple.&lt;br /&gt;&lt;br /&gt;Apple still won't allow us slovenians to purchase from itunes (no movies, no muzak). We are therefore FORCED into illegal doings. Yeah, download torentz, baby!&lt;br /&gt;&lt;br /&gt;I have legally purchased iphone. Unlocked one. And I still cannot use it as modem. No tethering. I don't want to jailbreak it. Stupid me?&lt;br /&gt;&lt;br /&gt;Tetherning cannot be used because iphone won't allow it if there is something missing from carrier. Therefore both, apple and carrier are guilty.&lt;br /&gt;&lt;br /&gt;We are still enough stupid in slovenia to buy apple stuff at full price, allthough we cannot take advantage of all it's fuctionalities.&lt;br /&gt;&lt;br /&gt;I live in a idiot nation! &lt;span style="font-size:78%;"&gt;Therefore I myself am an idiot...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3043770266277519092?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3043770266277519092/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3043770266277519092' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3043770266277519092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3043770266277519092'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/09/iphone-and-tetherning-in-slovenia.html' title='iphone and tetherning in slovenia'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3161689722127172093</id><published>2010-08-28T17:24:00.007+02:00</published><updated>2010-08-28T17:39:26.961+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='traffic'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='interception'/><title type='text'>Intercepting subnet traffic</title><content type='html'>Can you imagine how dificult would be writing a windows program that could read traffic from particular subnet?&lt;br /&gt;&lt;br /&gt;Very much, thank you!&lt;br /&gt;&lt;br /&gt;In linux however it is a matter of a script and a small portion of C code.&lt;br /&gt;&lt;br /&gt;I played my game within ubuntu first, then bering followed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;You can get source &lt;a href="http://backreference.org/page/5/"&gt;here&lt;/a&gt;. This page contains complete example.&lt;br /&gt;&lt;br /&gt;There was a difference between 2.6 and 2.4 kernel.&lt;br /&gt;&lt;br /&gt;In 2.6 kernel just create virtual network card with&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;openvpn --mktun --dev tun1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ip link set tun1 up&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ip addr add 10.99.0.1/24 dev tun1&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and you can 'attach' program to it later on.&lt;br /&gt;&lt;br /&gt;Kernel 2.4 however creates virtual interface by itself and you must attach to it dynamicaly. You cannot attach your program to pre-created virtual network interface allthough it's free.&lt;br /&gt;&lt;br /&gt;Once your program is attached, use 'read' function to read from device and wait for data and 'write' function to return data into network. You can intercept all subnet addresses - except the one of virtual interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3161689722127172093?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3161689722127172093/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3161689722127172093' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3161689722127172093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3161689722127172093'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/08/intercepting-subnet-traffic.html' title='Intercepting subnet traffic'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3400655463341740281</id><published>2010-08-13T18:04:00.009+02:00</published><updated>2010-08-18T06:02:19.325+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='building'/><category scheme='http://www.blogger.com/atom/ns#' term='r6040'/><category scheme='http://www.blogger.com/atom/ns#' term='bering uclibc'/><title type='text'>Building Bering uClibC from scratch</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;What an adventure!&lt;br /&gt;&lt;br /&gt;Here I am sitting infront of my mac and wathching magic: ssh console of my own-built Bering uclibc distro. Magic, maan!&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;It all started when I got excited about idea of VPN, OpenVPN, to be exact. We did some tests in my company, and I was impressed. For some time, I had a project in my head that would be using VPN to accesss multiple GPRS-linked devices simultneously over VPN, but it would have to work without mains power. So: no PC or industrial machines, but small consumption sollution.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Enters &lt;/span&gt;&lt;a href="http://www.ssv-comm.de/en/products/esom2586.php"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;eSom from SSV&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. It is built arround Vortex86DX chip, which is basically a PC, but with some 6W or 8W consumption. Just add RAM and BIOS chips, and you have a PC. And I had it. It has CF interface which is seen to it as an IDE controller, but it can also be booted from USB. Checked. It has linux installed, but it is classic distro.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I could ofcourse leave linux be, but three reasons persuaded me to replace it:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;amount of disk space needed (nearly 4GB)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;flash file system would be quickly destroyed (you know linuxes &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;and&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; windows scratching disks all the time!)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I really wanted a RAM based file system that would be unpacked from flash disk &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Enters &lt;/span&gt;&lt;a href="http://leaf.sourceforge.net/bering-uclibc/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Bering uClibC&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I have read an article in local IT magazine about easily deployable mini linux WEB server based on Bering and I decided to try it myself. Instructions were well written, and after couple of hours I had an operable Bering distro with serial-link console.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;But then I got stuck. Vortex has RDC's R6040 ethernet card embedded, and Bering's kernel (2.4.34) have no support for it. I had two choices:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;get driver from someone&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;or&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;build driver myself&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;First option gave no results: Bering support forum looks like it's dead and one guy said that the first reference to the matter was my prevoius post. So I boldly went where I haven't been yet: to build Bering's build tool which is called - a &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;buildtool&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;It looked nicely from beginning. Buildtool is composed mainly of perl scripts that should take care of everything. They should, because on my ubuntu Hardy they didn't. It took me some 24 hours of braintwisting to come up with an idea to give it another try on older distro. Debian Etch on virtual machine.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;But just at that time, repository path for Bering has been changed. Since I am not much in perl, it again took me some thinking and searching to figure out where settings for servers and repository paths are. But finally, buildtool was installed and operable.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I then requested kernel package to be built (&lt;i&gt;buildtool build kernel&lt;/i&gt;) to test kernel building. Perls scripts behaved well and in a matter of minutes kernel modules appeared. After that I inserted &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;r6040.c&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; into &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;/drivers/net &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;and&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;fixed&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; Makefile&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. But since sources were from 2.6.30 kernel, they didn't want to be built. Fortunately I was able to dug out sorces for 2.4. kernel and above (sorry, forgot to save link, I just copied text into file), and was able to build a driver. And shit worked! For system to load it at boot time, I had to add it into drivers package and register it into modules list.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Next thing: firewall. Leaf bering uclibc is designed to be a firewalled router, and with eSom having just one ethernet card, everything obsolete had to be removed from firewall configurations (it consists of multiple files). Also, firewall has closed everything by default. I was configuring such service for the very first time. With help of instructions from another Bering article it all went well and after an hour or so there it was: linux that takes 4MB (yes, MEGABYTES) of disk space and is using RAM as it's filesystem. With SSH access, firewall and openVPN server (that is yet to be configured, but instuctions for that also exists).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Heureca!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;P.S.: OpenVPN is up and running. This Bering stuff is amazing and really useful!&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/8882473525658674684-3400655463341740281?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3400655463341740281/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3400655463341740281' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3400655463341740281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3400655463341740281'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/08/building-bering-uclibc-from-scratch.html' title='Building Bering uClibC from scratch'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-9136863637881256629</id><published>2010-06-06T20:53:00.004+02:00</published><updated>2010-06-06T21:10:17.462+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bering uclibc'/><title type='text'>Bering uclibc 3.1 installation</title><content type='html'>&lt;span style="font-size:180%;"&gt;I&lt;/span&gt; have written about SSV's &lt;a href="http://marjandeveloperelectro.blogspot.com/2009/09/linux-embedded-with-x-server-and.html"&gt;eSom embedded linux&lt;/a&gt; board with Xserver. When I came across &lt;a href="http://leaf.sourceforge.net/bering-uclibc/"&gt;this thingy&lt;/a&gt;, I immediately wanted to test it.&lt;br /&gt;&lt;br /&gt;And what am I talking about? This is linux distro that can be run from a floppy disk. It has a compressed filesystem which unpacks itself into RAM, so it cannot be corrupted by uploading files and is therefore quite safe in this manner. It has all necessary packages to become a firewalled router or WEB server. It is PC compatible, but I guess it could be built for any platform.&lt;br /&gt;&lt;br /&gt;I successfully installed it on compact flash card and run it, but now I am stuck with dead ethernet driver. Berng's list of supported network cards is very limited and 'my' ehernet driver included is not supported. My first try would be driver building for RDC 6040 ethernet driver (embedded into Vortex chip), but again I am stuck, because environment  and toolchain build procedure went wrong; installation perl script seems to be a problem. And since I am perl dummy...&lt;br /&gt;&lt;br /&gt;Anyway, maybe you should check yourself if Bering uclibc would be of any use to you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-9136863637881256629?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/9136863637881256629/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=9136863637881256629' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/9136863637881256629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/9136863637881256629'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/06/bering-uclibc-31-installation.html' title='Bering uclibc 3.1 installation'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-7066700905127139067</id><published>2010-04-02T13:40:00.004+02:00</published><updated>2010-04-02T13:53:47.464+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><category scheme='http://www.blogger.com/atom/ns#' term='partialy damaged UART'/><title type='text'>Crippled UART on 24HJ</title><content type='html'>&lt;span style="font-size:180%;"&gt;N&lt;/span&gt;o, this time it is not a core bug or akind. But it took me two days to realize what was going on.&lt;br /&gt;&lt;br /&gt;I was assigned to implement fastest exchange of data between serveral PIC devices possible. I choosed 'star' topografy - one master, many slaves, with data being exchanged over UART.&lt;br /&gt;&lt;br /&gt;4 bytes of data were transfered at a time. Master did it allright, but slave refused to accept it - sometimes it did it, sometimes not.&lt;br /&gt;&lt;br /&gt;Never in my life I came across something like this. I have determined, that data recepted is being wrong, but since this was irregulary, I did not dear to accuse UART reception. You can imagine how many times I went over my communication rutines...&lt;br /&gt;&lt;br /&gt;But as Sherlock have said: "When you eliminate the impossible, whatever remains - however improbable - must be the truth." With that in mind I wrote a test program: master was sending sequential data, slave checked it. It turned out that UART reception on one PIC has been crippled indeed: reception worked untill PIC's roles were exchanged.&lt;br /&gt;&lt;br /&gt;Is there any lession in this post? I don't know.&lt;br /&gt;&lt;br /&gt;Till next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7066700905127139067?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7066700905127139067/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7066700905127139067' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7066700905127139067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7066700905127139067'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/04/crippled-uart-on-24hj.html' title='Crippled UART on 24HJ'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1988366684601302704</id><published>2010-02-01T07:23:00.003+01:00</published><updated>2010-02-01T07:32:35.079+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mips'/><category scheme='http://www.blogger.com/atom/ns#' term='baudrate'/><category scheme='http://www.blogger.com/atom/ns#' term='40'/><category scheme='http://www.blogger.com/atom/ns#' term='24h'/><category scheme='http://www.blogger.com/atom/ns#' term='correct'/><title type='text'>24HJ family can work on 40MIPS and with correct baudrate</title><content type='html'>&lt;span style="font-size:180%;"&gt;A&lt;/span&gt;fter prolonged examination of datasheets and copy-pasting of the code provided there I am able to declare, that DSPIC24HJ256 works on 80MHz system clock (with 10Mhz chrystal)  and 1.25Mb baud rate (and of course higher - we successfully tried 5Mb) can be achieved.&lt;br /&gt;&lt;br /&gt;My own BRA (brain random access) capabilities must be limited, because I am not able to apprehend 24HJ oscillator design :) . There are three oscillator control registers (prescaling, postscaling, and X) that do the job.&lt;br /&gt;&lt;br /&gt;Anyway, things run as they should and our work continues. At 40MIPS. Hooray!&lt;br /&gt;&lt;br /&gt;Regards...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1988366684601302704?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1988366684601302704/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1988366684601302704' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1988366684601302704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1988366684601302704'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/02/24hj-family-can-work-on-40mips-and-with.html' title='24HJ family can work on 40MIPS and with correct baudrate'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4502430138526209124</id><published>2010-01-27T07:39:00.005+01:00</published><updated>2010-01-27T07:55:19.715+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='24j'/><category scheme='http://www.blogger.com/atom/ns#' term='24h'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>Microchip's 24H and 24F family</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;I&lt;/span&gt;n a light of a promissing 40Mips of 24H family, my team decided that it’s time to upgrade our mNet protocol's communication speed. Currently we use speed of 1.25Mb, but it is used on 18F devices at their maximum speed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We were able to achieve 1.25Mb on 24F family. But in order to do that we had to sacrifice processing power. 24F family can run up to 32MHz CPU clock, which yields 16Mips. But with it it is inpossible to achieve compatible baudrate. The closest thing to 1,25Mb is 7,5MHz input clock being PLL’ed. But to implement such clock would be a heavy task.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enters 24H family, with 40Mips processing power. But!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What were (first) results of our tests? In short: CPU clock with PLL was out of phase with pheripherials. 80Mips can be achieved allright, but then USART’s baude rate is inconsistant (I guess that timers would also be problematical), and differs from baud rate calculations. It was therefore impossible to use USART at high speeds with processor clock being PLL-ed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We could achieve constant and correct baud rates at 40MHz external oscillator clock (20Mips). But processing power is then at only half of it’s maximum. We were able to achieve some 5Mbit baud rate though...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, if you want strong processing power, you can use PLL. But if you have asynchronous communications onboard, you won't be able to use it and you will have to provide external clock - which is limited.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The final word about this matter has not been said. If anyone knows better - comments and updates are most welcome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another dissapointment is so called ‘starter kit’ for 24H family. It consists of a single board, which has JTAG debugger and programmer implemented with 18F device. Board has no test points or connectors (except for JTAG bus) so it cannot be used for experimenting target processor’s hardware - we could not even attach a wire on IC's pins.There are also a b/w display (OLED), and 3D movement senzor on board. And a speaker. Software consists of several games and demonstrations, and I was &lt;b&gt;&lt;i&gt;not&lt;/i&gt;&lt;/b&gt; able to find them on a companion CD. Microchip's JTAG debugger is less reliable than Real ICE - which cannot be used since the only connector on board is just USB connector. If you want to do some real experimenting, you will have to purchase  Explorer16 kit; it is more expensive, but at least of some use. Or you'll have to make your own test board. This one is pretty much useless.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regards...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4502430138526209124?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4502430138526209124/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4502430138526209124' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4502430138526209124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4502430138526209124'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2010/01/microchips-24h-and-24f-family.html' title='Microchip&apos;s 24H and 24F family'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-7837955720901934695</id><published>2009-12-30T08:26:00.006+01:00</published><updated>2009-12-30T14:21:30.072+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='LCD'/><category scheme='http://www.blogger.com/atom/ns#' term='ssd card reader'/><title type='text'>Reading SD card and displaying JPEG images stored on it</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;I&lt;/span&gt;n my previous post I was describing my travel of pain over microchip offroads. But it is all bygone now.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can actually recommend the whole damn thing! Its responsive, it is fast. This LCD controller can also read SD cards not just display images (it was primarily developed for mobile phones), so it is of some very good use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3OLOidqItrY/SzsBWDZ4dlI/AAAAAAAAA34/o9Gsi_5xN-8/s1600-h/demoSDJPG.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_3OLOidqItrY/SzsBWDZ4dlI/AAAAAAAAA34/o9Gsi_5xN-8/s400/demoSDJPG.jpg" alt="" id="BLOGGER_PHOTO_ID_5420928054853138002" style="cursor: pointer; width: 400px; height: 300px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A photo above shows entire system, on which JPEG images are being slide-showed. Images (that were taken with digital camera) are stored on SD card. I can assure you, that everything works quite nice. Although I successfully compiled demo project from microchip, but it did not work after programming (there were warnings about missing function declarations), so I created my own project, fixed all suspicious warnings and succeeded. Watching a movie on this thing is not possible, but 16MIPS was enough for a simple EAP (embedded application pages) browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Graphics GUI elements library and driver for controller &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2608&amp;amp;page=1&amp;amp;param=en532061&amp;amp;redirects=Graphics"&gt;are available for free&lt;/a&gt; as sources.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For once I truly &lt;i&gt;can&lt;/i&gt; recommend this solution. ICs are cheep, but they do their job and will be adequate to most of your needs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Your tester...&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7837955720901934695?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7837955720901934695/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7837955720901934695' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7837955720901934695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7837955720901934695'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/12/reading-sd-card-and-displaying-jpeg.html' title='Reading SD card and displaying JPEG images stored on it'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SzsBWDZ4dlI/AAAAAAAAA34/o9Gsi_5xN-8/s72-c/demoSDJPG.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-4747729828724969696</id><published>2009-12-19T07:17:00.007+01:00</published><updated>2009-12-19T18:08:06.516+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics library'/><category scheme='http://www.blogger.com/atom/ns#' term='gol'/><title type='text'>Microchip graphics salvation/solution</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;W&lt;/span&gt;hich I could not make it work for a stupid reason: hardware.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microchip is offering a GUI solution implemented with it's 16 or 32-bit processors. You can download libraries (including USB, graphics, TCP stack and SSD card access) and demo programs for free on &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2608&amp;amp;param=en532067"&gt;this page&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System I am currently working on is composed of Explorer16 processor board, SSD1926 LCD controller board and G240320LTSW LCD display board with touch panel.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Demo application I was able to try (only with 24F128 processor, because my C30 compiler does not recognise 24F256 processor) works great. GUI is fast, responsive and widget-equipped. But it all ended just there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For 5 hours I was trying to make graphics library 'alive' on my own. Some time ago I was able to use TCP/IP stack library - implementing ethernet client using help file provided - after some 2 hours of study, and fixing some microchip mistakes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really wanted to start from scrach, because demo program uses 90% of 24F128 program memory. I used project called &lt;i&gt;GOLDemo PIC24&lt;/i&gt; as a base, in which microchip redefined the 'easy' word - project itself is composed of some 12 source files (excluding library sources), and bit less quantity of headers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had exactly the same project settings as demo has. I was able to build my project &lt;b&gt;&lt;i&gt;without errors or warnings&lt;/i&gt;&lt;/b&gt;. I could initialise LCD controller and made display cleared and white. But I could not get a single widget to be displayed on screen - only a pair of lines instead of a button.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I gave up. Then I tried it for the last time. I assebled modules together and powered up. I immediately noticed that LCD was not displaying nothing. Then I pushed cards together more firmly, and after power-on, button suddenly appeared. Now touch panel is activated too, and button is responding to touches.  And I still cannot explain what went wrong.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Till next time...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4747729828724969696?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4747729828724969696/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4747729828724969696' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4747729828724969696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4747729828724969696'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/12/microchip-graphics-salvationsolution.html' title='Microchip graphics salvation/solution'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6943335938193134554</id><published>2009-12-06T13:29:00.009+01:00</published><updated>2010-01-01T09:21:12.578+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='global warranty'/><category scheme='http://www.blogger.com/atom/ns#' term='YAFT'/><category scheme='http://www.blogger.com/atom/ns#' term='EU'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple support in slovenia</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;I&lt;/span&gt;s this possible?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have purchased an iPhone, in Italy, part of EU - it cannot be bought in slovenia, which is part of EU also (I think because of the monopoly of slovenian nokia and phony-ericsson resellers - official reason however is that iPhone cannot be bought in our banana republic &lt;i&gt;because it's battery is irreplaceable&lt;/i&gt;). You can purchase iphone in all surrounding countries - austria(locked), italy(locked and unlocked), croatia(locked), but for hungary I am not sure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After OFFICIAL iPhone update tethering option has disappeared from it's settings, and I cannot get a straight answer what was the cause: apple's fault, or my mobile operator's incapability.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I asked for an answer from slovenian official apple reseller, all they had to say was: "we don't sell iPhones, so we don't give a shit about iPhones. You would have to buy it from us!".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looks like I am forced to jailbreak the iPhone to get what is rightfully mine. And for Christ sake, mobile phones for 20EUR can be used for tethering, but iPhone not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My friend has also bought iMac. But in slovenia, keyboards are taken out of computer packages and are replaced by a sheet of paper which states that there is no keyboard although a record of it exists on a bill. Since this warning is stored inside of the box, you can only read it when you take computer out. We must therefore pay another 30EUR to get official apple keyboard if we want it - which above all has different key layout as PC keyboard; a real nonsense to me. It is however much easier to set any keyboard layout user requests in macOS on macs than in windows on PCs. Anyway, my friend was not aware of this (nobody warned him), and when he brought computer home, he had to purchase a PC keyboard before he could use it... I have sworn I will not buy an apple computer in my country because of a second-class quality merchandise (my first imac broke after one month - network interface. My macbook had deformed case. My friend's macbook had no-working backspace key. My second imac is not so quiet as it could be. I dear not to take it to repair, because i would have to wait a whole month for it. And so on and so on.) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mind you: Italy is in EU. Also is slovenia (at least it is supposed to be, although I doubt about it!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What is a apple's global warranty then? Yet another lie from their tie-man (YAFT)?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Has anybody got an answer? Please comment!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6943335938193134554?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6943335938193134554/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6943335938193134554' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6943335938193134554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6943335938193134554'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/12/apple-support-in-slovenia.html' title='Apple support in slovenia'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1461763810607745419</id><published>2009-10-27T21:20:00.007+01:00</published><updated>2009-10-28T16:27:00.119+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='VNC server'/><title type='text'>If you have linux system without graphic chip?</title><content type='html'>There is solution for GUI on it, especially if your platform is X86 compatible!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is &lt;a href="http://qt.nokia.com/products/platform/qt-for-embedded-linux"&gt;QT embedded&lt;/a&gt; that I am talking about. And how does it work? Framework can be compiled in such manner that applications can run as stand-alone VNC servers. One aplication initiates server and others coexist, or every application runs it's own VNC server instance on succesive port number (5900, 5901 etc.).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it works! I have just compiled latest debian release working as text-mode-only system, have built qt embedded, all under two hours, run application as VNC server, connected with client from another system and success!, application is alive and running.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please see &lt;a href="http://qt.nokia.com/doc/main-snapshot/qt-embedded-vnc.html"&gt;this&lt;/a&gt; page and do check out!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We were dying to try this approach for &lt;a href="http://www.dilnetpc.com/dnp0069.htm"&gt;SSV's DNP9200&lt;/a&gt; modules, but compiler is not on QT's list of supported platforms. Misfortune indeed!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am however developing something similar - remote GUI over network protocol - very fast and secure (SSL encrypted on demand).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Till next time...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1461763810607745419?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1461763810607745419/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1461763810607745419' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1461763810607745419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1461763810607745419'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/10/if-you-have-linux-system-without.html' title='If you have linux system without graphic chip?'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3312191641431203849</id><published>2009-10-03T09:53:00.003+02:00</published><updated>2009-10-03T09:57:47.372+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSV esom'/><category scheme='http://www.blogger.com/atom/ns#' term='fixed'/><title type='text'>Problem solved - SSV linux embedded works as new</title><content type='html'>&lt;a href="http://marjandeveloperelectro.blogspot.com/2009/09/problems-with-ssv-esom-development-kit.html"&gt;My mistake&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;I despered attempts to increase free space on file system I copied &lt;span style="font-weight: bold;"&gt;/bin&lt;/span&gt; folder from rot partition onto second disk - compact flash.&lt;br /&gt;&lt;br /&gt;It is strange however, that all worked - even after couple of reboots.&lt;br /&gt;&lt;br /&gt;Mouse is now working also. &lt;span style="font-style: italic;"&gt;psmouse&lt;/span&gt; driver should be loaded, not just &lt;span style="font-style: italic;"&gt;usbmouse&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3312191641431203849?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3312191641431203849/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3312191641431203849' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3312191641431203849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3312191641431203849'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/10/problem-solved-ssv-linux-embedded-works.html' title='Problem solved - SSV linux embedded works as new'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-274238953090639069</id><published>2009-10-01T05:34:00.003+02:00</published><updated>2009-10-01T05:48:00.138+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slovenia'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='itunes'/><title type='text'>Shame for Apple</title><content type='html'>I live in slovenia. My country is a  member of European Union. It is located between Italy, Austria, Hungary and Croatia, countries that are more known then ours. Why is it so, I will not discuss here.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I like Apple, allthough lesser latley.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looks however, that Slovenia does not exists for Apple. Or better to say: for Apple, Slovenia is somewhere in Sahara desert. Near Timbuktu (I am sure that for Apple Timbuktu is more known than Slovenia).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why do I think so?&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Slovenian people cannot purchase anything from iTunes with exception for applications for iPod. &lt;/li&gt;&lt;li&gt;after nearly two years since its apperance, iPhone still cannot be purchased officialy in Slovenia.&lt;/li&gt;&lt;li&gt;It is funny, that computers, ipods, and other stuff can be bought with ease.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This is something very mysterious , because there is are no apparent reasons for those statements above. I cannot ask apple directly, and apple shops  (wannabe stores) in Slovenia don't know what to answer. Same goes with our two main mobile phone distributors. Allthough there was a mess with 'ipod batteries which owner cannot replace by him or herself, which is illegal in this country'...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Who is to blame? Apple's revenge for some unknown reason? Or is it so, that in European union 'we are all equal', but some of us are little bit less? Or is it simply my country idiotism? I still don't know.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Perhaps it is time to get out of equality?&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/8882473525658674684-274238953090639069?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/274238953090639069/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=274238953090639069' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/274238953090639069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/274238953090639069'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/10/shame-for-apple.html' title='Shame for Apple'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3506788611599575166</id><published>2009-09-28T09:09:00.003+02:00</published><updated>2009-09-28T09:21:03.566+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='eSom'/><category scheme='http://www.blogger.com/atom/ns#' term='conpact-flash'/><category scheme='http://www.blogger.com/atom/ns#' term='SSV'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>Problems with SSV eSom development kit</title><content type='html'>Looks like I screwed up something; after my experiments to make USB mouse alive, linux suddenly gave up booting, saying that kernel cannot run init. I passed location of init explicitly, but kernel was still unable to start init.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am still waiting for response from SSV, but I wanted to continue with experimenting. So I installed debian etch from CD, drive was connected on USB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Installation went fine, but I installed console-mode only, no X11 server and desktop.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First I had to make network alive. I had to recompile r6040 driver (orignal kernel had different version tag and I was not able to &lt;i&gt;insmod&lt;/i&gt; driver into new installation). This is well described on internet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, internet was accessible. It was time for X11. &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;apt-get install xorg&lt;/span&gt; took care of that. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Touch panel and video card (Volari) driver? I copied them from original installation and now all is working, including USB mouse, touch panel, and USB keyboard.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;System is far from optimized (there are many obsolete programs installed), but this was only test to check how GUI works. Remember, system has only 180MB RAM, so KDE or GNOME are out of question. OpenBoy and ROX were installed again and they work. Also, full console mode is available, so... Usefull, usefull...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Best regards,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Marjan&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3506788611599575166?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3506788611599575166/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3506788611599575166' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3506788611599575166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3506788611599575166'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/09/problems-with-ssv-esom-development-kit.html' title='Problems with SSV eSom development kit'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1597383769956756241</id><published>2009-09-24T03:22:00.002+02:00</published><updated>2009-09-24T03:25:37.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cheaper'/><category scheme='http://www.blogger.com/atom/ns#' term='linux embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>Linux embedded GUI developers kit is now only 250EUR</title><content type='html'>You should realy &lt;a href="http://www.ssv-comm.de/en/news.php"&gt;check out this offer&lt;/a&gt;! Price is now halved!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have described testing and my first impressions of the system being offered &lt;a href="http://marjandeveloperelectro.blogspot.com/2009/09/linux-embedded-with-x-server-and.html"&gt;here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Marjan&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/8882473525658674684-1597383769956756241?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1597383769956756241/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1597383769956756241' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1597383769956756241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1597383769956756241'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/09/linux-embedded-gui-developers-kit-is.html' title='Linux embedded GUI developers kit is now only 250EUR'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3463191803808170429</id><published>2009-09-24T03:06:00.004+02:00</published><updated>2009-09-24T03:22:35.390+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='self-signed'/><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='keytool'/><title type='text'>Certificate generation: problems with keytool on linux</title><content type='html'>Have you every tried to generate self-signed certificate but you got mysterious errors like 'java.lang.io:invalid character'? I sure did. And I solved it only yesterday.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What was the cause? Java. By default, there was some strange version of java installed on our company servers, and &lt;b&gt;java&lt;/b&gt; and &lt;b&gt;keytool&lt;/b&gt; links in &lt;i&gt;/usr/bin&lt;/i&gt; folder were pointing to a location somewhere in &lt;i&gt;/etc&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I deleted those symbolic links, downloaded java from sun and installed it (into (&lt;i&gt;/usr/java&lt;/i&gt; folder by default), and relinked &lt;b&gt;java&lt;/b&gt; and &lt;b&gt;keytool&lt;/b&gt; from &lt;i&gt;/usr/java/java_version/bin&lt;/i&gt; into &lt;i&gt;/usr/bin&lt;/i&gt; folder, certificate generation and signing began to work as they should.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope this helps anybody.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yours trully...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3463191803808170429?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3463191803808170429/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3463191803808170429' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3463191803808170429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3463191803808170429'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/09/certificate-generation-problems-with.html' title='Certificate generation: problems with keytool on linux'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1408498032028592692</id><published>2009-09-18T21:48:00.007+02:00</published><updated>2009-09-24T03:33:06.507+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='openbox'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='X11'/><title type='text'>Linux embedded GUI with X server and desktop</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;I&lt;/span&gt; have noticed many linux embedded systems with GUIs on Embedded World expo this year. And today I have tested &lt;a href="http://www.ssv-comm.de/en/products/esom2586.php"&gt;this&lt;/a&gt; beast, which is composed of a PC motherboard-in-chip with RAM, FLASH and BIOS chips.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In original, GUI is implemented with X11 server and JAVA (1.6) which is using X11 library for direct communication with X11 server. On boot, java demo application is started where some capabilities of the system and it's settings are presented. Distribution is standard x86 debian etch. You have nearly 500MB of free space by default, so installing window manager (openBox) and desktop (ROX) was not a problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It took me a day or so to reconfigure it as I wanted it to be. And here is final result after reconfiguration:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SrPloitwQzI/AAAAAAAAAsM/35ij37YFrIY/s1600-h/IMG_1831.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_3OLOidqItrY/SrPloitwQzI/AAAAAAAAAsM/35ij37YFrIY/s400/IMG_1831.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5382898464314114866" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;openBox window manager with ROX desktop.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now desktop is loaded automaticaly, USB keyboard works (mouse not yet), and there is still 200MB space left. I activated compact-flash interface and connected a 4GB card, so there is more than enoguh room left now...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes, linux GUIs have arrived. Windows CE, watch out!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Best regards,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Marjan&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1408498032028592692?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1408498032028592692/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1408498032028592692' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1408498032028592692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1408498032028592692'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/09/linux-embedded-with-x-server-and.html' title='Linux embedded GUI with X server and desktop'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SrPloitwQzI/AAAAAAAAAsM/35ij37YFrIY/s72-c/IMG_1831.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-8818376916128913107</id><published>2009-07-31T16:08:00.004+02:00</published><updated>2009-09-22T21:24:19.488+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='30f'/><category scheme='http://www.blogger.com/atom/ns#' term='tbf'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><category scheme='http://www.blogger.com/atom/ns#' term='I2C'/><title type='text'>DSPIC30F  I2C device cannot handle transmission of two successive packects</title><content type='html'>Another DSPIC issue.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried to control CDCE913 with DSPIC today. I tried first with library rutines, could not make it work. Then I used plain C statements - I was able to send one packet of data (with start and stop condition etc.). Software is made in such way that for every CDCE register a packet of data must be sent, but at second packet DSPIC's I2C module refused to work - it stuck on &lt;i&gt;transmit buffer full&lt;/i&gt; (TBF) bit. Please note that first packet 'went through' OK and CDCE recieved it and responded on it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried then in assembler. Same ol', same ol'. And after two hours I figured out that after each sent packet I2C device must be each time reinitialized, if I want to transmit more than one package. I could not make it send more than one packet in succession otherwise.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another bug in DSPIC core? I opt for that!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But after extensive studiing above error was eliminated. Or was it newer release of DSPIC? It happened at the same time...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8818376916128913107?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8818376916128913107/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8818376916128913107' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8818376916128913107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8818376916128913107'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/07/dspic30f-i2c-device-cannot-handle.html' title='DSPIC30F  I2C device cannot handle transmission of two successive packects'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6296211242089828501</id><published>2009-07-31T08:26:00.004+02:00</published><updated>2009-07-31T08:38:07.354+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='undefined reference to'/><category scheme='http://www.blogger.com/atom/ns#' term='C30'/><category scheme='http://www.blogger.com/atom/ns#' term='LINK30'/><title type='text'>Linking C30 libraries in GNU manner</title><content type='html'>Have you ever been met with MPLAB's  &lt;span style="font-style: italic;"&gt;undefined reference to..&lt;/span&gt;. error? Here's the cause: LINK30 could not find library; it had to be explicitly stated in LINK30's command line.&lt;br /&gt;&lt;br /&gt;I was implementing a C30 application that is using I2C device on DSPIC 30F6014A. There are C30 libraries for that, but simply including header files does not suffy. You must use GNU's C compiler &lt;span style="font-style: italic;"&gt;-l&lt;/span&gt; switch, which defines library you want to link. It took me about 15 minutes to figure that out. Without internet. :)&lt;br /&gt;&lt;br /&gt;In order to solve this, in &lt;span style="font-style: italic;"&gt;project -&gt; build options -&gt; project -&gt; MPLAB LINK30 tab&lt;/span&gt; instead of using &lt;span style="font-style: italic;"&gt;inherit global settings&lt;/span&gt; option check &lt;span style="font-style: italic;"&gt;Use alternate settings&lt;/span&gt; and add &lt;span style="font-style: italic;"&gt;-lP30F6014A&lt;/span&gt; (supplement with processor of your choice) at the end of line. This will explicitly link requred library and project will be built.&lt;br /&gt;&lt;br /&gt;I could not test yet if library is of any use. Test is about to be performed.&lt;br /&gt;&lt;br /&gt;Hope this helps anyone.&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6296211242089828501?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6296211242089828501/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6296211242089828501' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6296211242089828501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6296211242089828501'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/07/linking-c30-libraries-in-gnu-manner.html' title='Linking C30 libraries in GNU manner'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5557701119716035514</id><published>2009-07-21T07:14:00.005+02:00</published><updated>2009-07-21T07:40:50.148+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='system()'/><category scheme='http://www.blogger.com/atom/ns#' term='return'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='external procedures'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Reading stdout while doing system() call in C</title><content type='html'>I am quite convinced, that in your programmers career you wanted to run a program within program and intercept it's output. In C, it means system() function usage and capturing called program's &lt;span style="font-style: italic;"&gt;stdout&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I tried this myself but I failed. Besides, we were implementing  this within oralcle external procedures and we could not fix 'cannot return string over char pointer' thing.&lt;br /&gt;&lt;br /&gt;We have been trying various stuff, but after couple of hours I came across this solution of first problem:&lt;br /&gt;&lt;br /&gt;here are sources of two programs. Second one calls the first one.&lt;br /&gt;&lt;br /&gt;First one, that outputs something:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include &lt;stdio.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;int main(int argc, char *argv[]){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;printf("Oh yeah, baby!");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the second one, that intercepts previous output:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt;&lt;br /&gt;char buf[128];&lt;br /&gt;int br;&lt;br /&gt;&lt;br /&gt;FILE *fp;&lt;br /&gt;fp=popen("./first","r");&lt;br /&gt;br = fread(buf,1,128,fp); //we must terminate string at the end (in linux OS), and we need&lt;br /&gt;//number of bytes read for that&lt;br /&gt;pclose(fp);&lt;br /&gt;&lt;br /&gt;buf[br] = 0; //terminate string&lt;br /&gt;printf("First outputs: %s\n",buf);&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the Oracle problem? It turned out, that database server actually caches external procedures, so we were unsuccessful at whatever we tried to fix. Only when we logged out of server and logged back in, procedures cache was cleared and then our changes worked. It took us a day to figure this out.&lt;br /&gt;&lt;br /&gt;Amazing though, that in macOS X there was no need to null-terminate output by hand.&lt;br /&gt;&lt;br /&gt;Hope this helps anyone.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5557701119716035514?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5557701119716035514/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5557701119716035514' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5557701119716035514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5557701119716035514'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/07/reading-stdout-while-doing-system-call.html' title='Reading stdout while doing system() call in C'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5408231533324193066</id><published>2009-07-12T11:22:00.003+02:00</published><updated>2009-07-12T11:34:55.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPI'/><category scheme='http://www.blogger.com/atom/ns#' term='software reset'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>DSPIC SPI is weird after software reset</title><content type='html'>Another strange behavour of DSPIC pheripherial.&lt;br /&gt;&lt;br /&gt;I have implemented measuring system in such way so that PIC resets itself after data transfer is complete.&lt;br /&gt;&lt;br /&gt;It does. And enitre system should be re-initialized. It clears SPI control and status registers after reset. However, SPI does not appear to be working properly after  initialisation and everything else.&lt;br /&gt;&lt;br /&gt;Solution? Simple. I just have to turn SPI off and after one NOP it has to be turned back on (bit 15 on SPIxCON). Only then, SPI worked after software reset.&lt;br /&gt;&lt;br /&gt;I hope this helps somebody.&lt;br /&gt;&lt;br /&gt;Your's trully...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5408231533324193066?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5408231533324193066/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5408231533324193066' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5408231533324193066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5408231533324193066'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/07/dspic-spi-is-weird-after-software-reset.html' title='DSPIC SPI is weird after software reset'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1058740640009502653</id><published>2009-06-25T12:32:00.012+02:00</published><updated>2009-07-03T11:43:12.730+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bemf'/><category scheme='http://www.blogger.com/atom/ns#' term='motor tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='Motor analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='hall'/><category scheme='http://www.blogger.com/atom/ns#' term='angle meter'/><category scheme='http://www.blogger.com/atom/ns#' term='brake'/><title type='text'>Motor tracking with coil BEMFs reading</title><content type='html'>We have successfully added coil BEMF sampling into our motor measuring system. So now our (brushless) motor measurement system is capable of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sampling rotor position (with angle encoder), 100.000 times per second&lt;/li&gt;&lt;li&gt;sampling BEMF (with 16bit signed AD), 100.000 times per second&lt;/li&gt;&lt;li&gt;sampling HALL switching with accurancy of 1uS (curently 3 senzor inputs - expandable up to 16 inputs)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Besides that, system has also these advantages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;all measurements are synchronised&lt;/li&gt;&lt;li&gt;system is linux (data gatherning) and embedded linux (measurement modules) based and fully customizable at assembly time or later in production via software updates.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;it is fully scalable - customer just adds modules (BEMF,  HALL or AD) into the system and registers them&lt;br /&gt;&lt;/li&gt;&lt;li&gt;raw measured data is accesible over network - via windows share&lt;/li&gt;&lt;li&gt;raw data is CSV - formatted in a form of samples - one sample per 100.000th of second, except for HALL module - it has 1.000.000 samples per second. Customer can even specify either hall switching data is sample - based, or time - based.&lt;/li&gt;&lt;li&gt;AD module also outputs BEMFs RMS voltage&lt;br /&gt;&lt;/li&gt;&lt;li&gt;because of linux, system is very reliable and secure&lt;/li&gt;&lt;li&gt;data can be copied from the system on external USB drive or network as backup - this feature is totaly customizable.&lt;/li&gt;&lt;/ul&gt;Future features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;current-controllable brake will also be included - with totaly customizable braking time envelope. Customer will be able to upload breaking force timing created in, say, MS excel in time / force format, currently up to 1M points will be accessable.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;My team is currnetly in completing a full-production system phase. All modules passed development phase successfully.&lt;br /&gt;&lt;br /&gt;Here is basic system diagram:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3OLOidqItrY/SkojcvO-AcI/AAAAAAAAAhE/a2Znb2cNoIY/s1600-h/image.001.001.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_3OLOidqItrY/SkojcvO-AcI/AAAAAAAAAhE/a2Znb2cNoIY/s400/image.001.001.jpg" alt="" id="BLOGGER_PHOTO_ID_5353130083705815490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Please note that system LAN and external - common LAN are physically totaly separated.&lt;br /&gt;&lt;br /&gt;Sample image with rotor angle data and BEMF of one phase:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SkNSQ0QGolI/AAAAAAAAAg0/XNzI7Osuqrk/s1600-h/ad+and+angle.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 244px;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SkNSQ0QGolI/AAAAAAAAAg0/XNzI7Osuqrk/s400/ad+and+angle.JPG" alt="" id="BLOGGER_PHOTO_ID_5351211231103853138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please see also my past posts regarding to this system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1058740640009502653?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1058740640009502653/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1058740640009502653' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1058740640009502653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1058740640009502653'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/06/motor-tracking-with-coil-bemfs-reading.html' title='Motor tracking with coil BEMFs reading'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SkojcvO-AcI/AAAAAAAAAhE/a2Znb2cNoIY/s72-c/image.001.001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-5776449356033537260</id><published>2009-06-07T13:24:00.004+02:00</published><updated>2009-06-08T11:37:52.795+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='output'/><category scheme='http://www.blogger.com/atom/ns#' term='senzor'/><category scheme='http://www.blogger.com/atom/ns#' term='motor tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='hall'/><title type='text'>Halls chart added into motor movement tracking system</title><content type='html'>An update to the previous post.&lt;br /&gt;&lt;br /&gt;We have just added a &lt;span style="font-weight: bold;"&gt;synchronized &lt;/span&gt;HALL motor's sensors output capture device to our motor tracking system.&lt;br /&gt;&lt;br /&gt;Here is the result. HALL tracking is running with 1uS resolution.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SiujvKrG2CI/AAAAAAAAAdM/XV-KXQ2qY-0/s1600-h/halls.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 244px;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SiujvKrG2CI/AAAAAAAAAdM/XV-KXQ2qY-0/s400/halls.JPG" alt="" id="BLOGGER_PHOTO_ID_5344545413519562786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sawtooth signals are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;magenta is rotor position as it should be&lt;/li&gt;&lt;li&gt;blue-colored signal is rotor's actual position, sampled in 10uS sample rate.&lt;/li&gt;&lt;/ul&gt;Going prefessional, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5776449356033537260?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5776449356033537260/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5776449356033537260' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5776449356033537260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5776449356033537260'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/06/halls-chart-added-into-motor-tracking.html' title='Halls chart added into motor movement tracking system'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SiujvKrG2CI/AAAAAAAAAdM/XV-KXQ2qY-0/s72-c/halls.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-6817141016872830355</id><published>2009-06-05T10:07:00.006+02:00</published><updated>2009-06-05T10:40:37.886+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPI'/><category scheme='http://www.blogger.com/atom/ns#' term='motor tracking'/><title type='text'>SPI full speed and motor tester</title><content type='html'>Hello,&lt;br /&gt;long time no write. I was pretty much occupied with other stuff (RGB LED candle simulation) and the matter in question.&lt;br /&gt;&lt;br /&gt;If you remember I was writing about SPI connection between ARM linux embedded modules (from SSV embedded) and DSPICs in the past. At the time of that writing we were able to transfer 13MB of data in about 7 minutes. SPI clock was 1MHz.&lt;br /&gt;&lt;br /&gt;Today it was speeding it up through linux kernel drivers for AT91 processor SPI module. First  I have speeded-up SPI clock to respectable 15MHz. But data rate was only 1% of bandwith, so I alse had to reduce delay between packets. Bandwith is now being used at about 33%, and we are able to transfer 15MB of data in about a minute.&lt;br /&gt;&lt;br /&gt;Works excellent!&lt;br /&gt;&lt;br /&gt;Data being transfered is from SPI encoder. 16bit data is first buffered into 2MB RAM, and after that it is sent over SPI to Linux and transfered onto PC over FTP. Angle position is sampled at 100KHz rate, therefore we can sample 20 seconds of motor spinning. To demonstrate usability of the system, my collegue blocked motor while sampling was running.  This are results:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SijUhfobXYI/AAAAAAAAAcE/FmMmQUwC6pU/s1600-h/motor+ok.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 290px;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SijUhfobXYI/AAAAAAAAAcE/FmMmQUwC6pU/s400/motor+ok.JPG" alt="" id="BLOGGER_PHOTO_ID_5343754629766929794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the above image and you will notice, that motor speed is &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; constant. Speed error is less than 0.2%.&lt;br /&gt;&lt;br /&gt;Motor blocade is demonstrated on the following image.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3OLOidqItrY/SijUhZHhG-I/AAAAAAAAAcM/YIemnx6woYw/s1600-h/motor+failure.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 290px;" src="http://1.bp.blogspot.com/_3OLOidqItrY/SijUhZHhG-I/AAAAAAAAAcM/YIemnx6woYw/s400/motor+failure.JPG" alt="" id="BLOGGER_PHOTO_ID_5343754628018281442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is clearly visible, how motor rapidly deccelerated when it was blocked by hand, and then how it accelerated again.&lt;br /&gt;&lt;br /&gt;Let me fruther display resolution and usabilitiy of the complete system: application from above and measurement device were used to identify motor bearings problem: after out-of-tollerance  spinning errors, engeneers inspected motor bearings in detail (with help of motor movement diagrams provided by this system), and objects of 1micron-range size were later found inside bearings...&lt;br /&gt;&lt;br /&gt;Till next time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6817141016872830355?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6817141016872830355/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6817141016872830355' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6817141016872830355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6817141016872830355'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/06/spi-full-speed-and-motor-tester.html' title='SPI full speed and motor tester'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SijUhfobXYI/AAAAAAAAAcE/FmMmQUwC6pU/s72-c/motor+ok.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-1497000264529783337</id><published>2009-04-29T07:59:00.004+02:00</published><updated>2009-04-29T08:49:09.497+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='voice compression'/><category scheme='http://www.blogger.com/atom/ns#' term='speex library'/><title type='text'>Microchip Speex library</title><content type='html'>I've been testing some voice compression utilities (&lt;a href="http://www.hawksoft.com/free.shtml"&gt;Hawk&lt;/a&gt;) in the past, and they worked realy nice - on linux I was able to communicate full duplex over serial port with only 9600baud speed.&lt;br /&gt;&lt;br /&gt;This time it is &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en023610"&gt;microchip's Speex library&lt;/a&gt;. It is strange however that you can also find free &lt;a href="http://speex.org/"&gt;Speex library&lt;/a&gt; under &lt;a href="http://www.xiph.org/licenses/bsd/speex/"&gt;revised BSD licence&lt;/a&gt;. I wonder, if microchip used it as source? It's offering library for free - you must only give your personal data to the company. Screw them! Library sources are not included in microchip's package, so again I wonder, if I should notify development team about licence violation?&lt;br /&gt;&lt;br /&gt;Anyway, DSPIC33F family should be able to encode/decode speech in real time, which means that full duplex communication is possible. However, in demo code, communication speed that runs over USART is set to 115200baud. I don't see the point of this - compression ratio is 13:1. So at 8bit 8K sample rate (narrow mode) it should work without problems on 9600baud(?)- if advanced techinques would be used. TODO&lt;br /&gt;&lt;br /&gt;We have no intention to try this library with DSPIC33F family. We'll stick with 30F. But since speex encoding comes in a form of library file without sources (have I allready mention that? suckers!), it is a sign of fortune itself that microchip provided port for DSPIC30 family - demo project is written particulary for famous 6014. It seems however, that only half-duplex real-time communication is possible. Walkie-talkie style. Over and out.&lt;br /&gt;&lt;br /&gt;Why? I think it's the processor clock. DSPIC33F is capable of 40MHz, while DSPIC30F can run with up to 30Mhz. One third of processing power? It must be a factor.&lt;br /&gt;Besides that, DSPIC33F has some advenced features - DMA.&lt;br /&gt;&lt;br /&gt;Anyway, we'll give it a go, and I will post results. Maybe I can get it operational in full duplex?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1497000264529783337?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1497000264529783337/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1497000264529783337' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1497000264529783337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1497000264529783337'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/04/microchip-speex-library.html' title='Microchip Speex library'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-7317867453737736637</id><published>2009-04-23T08:02:00.002+02:00</published><updated>2009-04-23T08:19:36.810+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='removing'/><category scheme='http://www.blogger.com/atom/ns#' term='tick'/><title type='text'>How to remove a tick</title><content type='html'>Another topic out of context. But useful one!&lt;br /&gt;&lt;br /&gt;So, if you find a tick in your skin, use following method:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cover tick with hand cream completly. Do not spare with cream!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;wait for 2 minutes.&lt;/li&gt;&lt;li&gt;start applying cream with finger over tick. Gently at first, then increase preasure.&lt;/li&gt;&lt;li&gt;After couple of seconds tick will let go.&lt;/li&gt;&lt;li&gt;If it doesn't, then cover it with cream again, and repeat procedure. It will let go eventually. For sure.&lt;/li&gt;&lt;/ul&gt;I use this procedure for two decades and it is 100% reliable.&lt;br /&gt;And preventive? After you return from wood-walk, take a good shower!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7317867453737736637?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7317867453737736637/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7317867453737736637' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7317867453737736637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7317867453737736637'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/04/how-to-remove-tick.html' title='How to remove a tick'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8716142189385272615</id><published>2009-04-07T13:35:00.002+02:00</published><updated>2009-04-07T13:44:19.631+02:00</updated><title type='text'>Little chef's big secrets - XP embedded</title><content type='html'>Hiya all,&lt;br /&gt;&lt;br /&gt;I am obliged to notify you that I am finnaly able to install XP embedded together with all target system's devices. Yes, no additional driver (and software) installations are neccessary.&lt;br /&gt;&lt;br /&gt;How? With combination of INF file imports and Total Uninstaller usage! Biggest pain in the ass was realtek's AC'97 audio driver. INF import created two components, and device was designated as audio. But due target designer's incompetence no other system audio components were added. I hat to discover, that one can add 10 additional components by hand, one after another. But alas, target machine is now 'covered'.&lt;br /&gt;&lt;br /&gt;List of missing components:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;portcls.sys&lt;/li&gt;&lt;li&gt;wdmaud.drv&lt;/li&gt;&lt;li&gt;wdmaud.sys&lt;/li&gt;&lt;li&gt;sysaudio.sys&lt;/li&gt;&lt;li&gt;splitter.sys&lt;/li&gt;&lt;li&gt;aec.sys&lt;/li&gt;&lt;li&gt;swmidi.sys&lt;/li&gt;&lt;li&gt;dmusic.sys&lt;/li&gt;&lt;li&gt;kmixer.sys&lt;/li&gt;&lt;li&gt;drmkaud.sys&lt;/li&gt;&lt;/ul&gt;Good luck to future explorers and Columbuses! This might help!&lt;br /&gt;&lt;br /&gt;Till next time,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8716142189385272615?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8716142189385272615/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8716142189385272615' title='Št. komentarjev: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8716142189385272615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8716142189385272615'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/04/little-chefs-big-secrets-xp-embedded.html' title='Little chef&apos;s big secrets - XP embedded'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-4998029594150048378</id><published>2009-03-30T10:28:00.003+02:00</published><updated>2009-03-30T10:52:12.546+02:00</updated><title type='text'>Writing DSPIC communication library</title><content type='html'>I have already written about our network protocol called &lt;a href="http://marjandeveloperelectro.blogspot.com/2008/06/crafting-virtual-machine-software-for.html"&gt;mNet&lt;/a&gt;. And now it became alive again. Costumer is demanding an array of devices connected on PC. It is an advanced half-duplex (we will not create a network hub for it - or maybe we will, if interest is shown) tcp/ip-like protocol. Data is sent in way of packets which are maximum 256 bytes long, and there can be 256 addresses present at same time. Data speed is nearly 2Mbs. DSPIC is responsible for packet recieving and notifiing user-program that packets have been delivered.&lt;br /&gt;&lt;br /&gt;It was time to rewrite mNet from assembler into C.&lt;br /&gt;&lt;br /&gt;Since mNet is our invention and customer is able demand sources of his project we are implementig, we decided we'll give him mNet in a form of library, so he could still build his project on his own, and yet he won't be able to mess arround with our product.&lt;br /&gt;&lt;br /&gt;This is how librabry's header file looks like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;struct m_netPacketHeader{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    char header;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    unsigned char pLength;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    unsigned char aSender;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    unsigned char aRecipient;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;struct m_netPacket{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    struct m_netPacketHeader p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    unsigned char *data;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    unsigned char dataLength;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;//initialization of m_net protocol. UART1 is used&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;//parameter is our network node address &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;void m_netInit(unsigned char);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;//Shut down network- UART1 is off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;void m_netClose(void);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/* Packet transmition.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// before data is isent, we assign user data and it's lenght  to mNet packet.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// Everything else is assigned by library.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// First parameter is pointer to a packet, second is recipient's address.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;void m_netSendPacket(struct m_netPacket *, unsigned char);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;//is there a packet for us?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;unsigned char m_netPacketReady(void);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/* Packet reception into user space.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// second parameter is packet-assigned user-data buffer's length&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// All important data (sender, length...) is in packet header&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;void m_netGetPacket(struct m_netPacket *, unsigned char);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And here is an example of usage:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;struct m_netPacket rec_paket;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;unsigned char m_netPaket[128];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;m_netInit(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;rec_paket.data = m_netPaket;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if (m_netPacketReady()){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   m_netGetPacket(&amp;amp;rec_paket,128);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I began to explore library building in MPlab. It is not difficult; just use 'Build library' option in ASM30/C30 suite tab in project options. But remeber to 'strip all symbol info' in MPLAB LINK30 tab and 'Symbols &amp;amp; Output' drop-list. Othervise source code of your library will be available in disassembly debugging listing.&lt;br /&gt;&lt;br /&gt;This approach works nice: change something in library and rebuild all applications linked to it, instead of changing each and every one (as I did before).&lt;br /&gt;&lt;br /&gt;Till next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4998029594150048378?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4998029594150048378/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4998029594150048378' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4998029594150048378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4998029594150048378'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/writing-dspic-communication-library.html' title='Writing DSPIC communication library'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1116811555357748439</id><published>2009-03-22T20:46:00.003+01:00</published><updated>2009-03-22T21:03:44.485+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='configure'/><category scheme='http://www.blogger.com/atom/ns#' term='cflags'/><title type='text'>Total success, MP3 encoding works in real time</title><content type='html'>Now it works, I can listen MP3s on &lt;span style="font-weight: bold; font-style: italic;"&gt;my own&lt;/span&gt; MP3 player.&lt;br /&gt;&lt;br /&gt;Why the narrow throat? Mpglib was not optimized.I had to &lt;span style="font-family: courier new; font-weight: bold;"&gt;./configure&lt;/span&gt; with &lt;span style="font-family: courier new;"&gt;CFLAGS -Wall -O2 -Wl,-s -march=armv4&lt;/span&gt; .&lt;br /&gt;&lt;br /&gt;That is it. Project nearly complete.&lt;br /&gt;&lt;br /&gt;Ah yes, kernel drivers. I used original SPI sources. I must now include support for framing request from client.&lt;br /&gt;&lt;br /&gt;After all that fuzz it'll be POC (piece of cake)!&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1116811555357748439?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1116811555357748439/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1116811555357748439' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1116811555357748439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1116811555357748439'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/total-success-mp3-encoding-works-in.html' title='Total success, MP3 encoding works in real time'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6468266377694943718</id><published>2009-03-22T19:21:00.007+01:00</published><updated>2009-03-26T10:44:04.658+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raw audio'/><category scheme='http://www.blogger.com/atom/ns#' term='SPI'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>Player works... kinda</title><content type='html'>Partial success.&lt;br /&gt;&lt;br /&gt;Currently my system is composed from SSV's ADNP9200, and DSPIC 1 demo board. They are connected through SPI line - one direction only. ADNP transports raw audio data over SPI on DSPIC, which plays sound accuratly on 44100Hz sample rate, allthough over 8 bits DACs (implemented with R2R chains; I did not use si3000 encoder, because it is mono and with 11KHz sample rate).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/ScaIlvO1XoI/AAAAAAAAAS8/1LEDPnuVHts/s1600-h/IMG_0373.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_3OLOidqItrY/ScaIlvO1XoI/AAAAAAAAAS8/1LEDPnuVHts/s320/IMG_0373.jpg" alt="" id="BLOGGER_PHOTO_ID_5316086592072670850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;This is my project. ADNP linux board is on left bottom side,&lt;br /&gt;DSPIC demo 1 board is on the right. On oscilloscope from&lt;br /&gt;top to bottom channel:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;frame request signal&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;SPI data packet&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;audio output&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Data is transported in packets of 2048 bytes long. PIC cannot sustain bigger bufer. Packet is sent every 23mS, and SPI transport time is 18mS. DSPIC informs ADNP over special frame request pin. I thought to solve this over SPI, but ADNP cannot pass data from kernel space into user space fast enough.&lt;br /&gt;&lt;br /&gt;Sadly, ADNP cannot handle MPG3 decoding process in real-time (200MIPS proc?). Raw data are transported with minor disturbencies, mp3 output is unbearable. :(&lt;br /&gt;&lt;br /&gt;I tried to feed mpg decoder with smaller chunks of data, but it did not help. I doubt that two pipes would drain so much resources from AT9200.&lt;br /&gt;&lt;br /&gt;Will  try more. Now I know that transporting layer works.&lt;br /&gt;&lt;br /&gt;Till next time,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6468266377694943718?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6468266377694943718/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6468266377694943718' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6468266377694943718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6468266377694943718'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/player-works-kinda.html' title='Player works... kinda'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/ScaIlvO1XoI/AAAAAAAAAS8/1LEDPnuVHts/s72-c/IMG_0373.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3301952655744769784</id><published>2009-03-15T14:30:00.000+01:00</published><updated>2009-03-15T14:31:03.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mpg123'/><category scheme='http://www.blogger.com/atom/ns#' term='ALSA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><category scheme='http://www.blogger.com/atom/ns#' term='decoding'/><title type='text'>Decoding process confirmed!</title><content type='html'>Success!&lt;br /&gt;&lt;br /&gt;Decoding and playing of MP3 files already works on PC. MPG123 library does it's job perfectly. And I have written a program which plays bytes from &lt;span style="font-family:courier new;"&gt;stdin&lt;/span&gt; through ALSA sound system. I am actually listening to MP3 song right now, played by my own console player. Command looks like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cat come_along.mp3 | mpglib | play_alsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and it really works. I am... Let's say I am beyond being pleased.&lt;br /&gt;&lt;br /&gt;It's actually very easy. I just had to made sure that buffer was big enough (32 KB raw data), and ALSA interface has to recieve 8K 16bit stereo samples (ergo 32KB of raw char data).&lt;br /&gt;ALSA accepts data in following sequence:&lt;br /&gt;&lt;br /&gt;left channel  big_endian (2 bytes)&lt;br /&gt;right channel big_endian (2 bytes)&lt;br /&gt;&lt;br /&gt;Fortunatly, ALSA has same 16bit signature. And so has DSPIC's C30. I don't care too much, if channels are misplaced...&lt;br /&gt;&lt;br /&gt;You can find many ALSA tutorials on internet. I have used &lt;a href="http://www.equalarea.com/paul/alsa-audio.html"&gt;this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now for the final step: it is DSPIC test time. With data transfer ready, there is not too much work to do. And I really I don't expect problems with ARM's built MPG123, which works.&lt;br /&gt;&lt;br /&gt;Till next time,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3301952655744769784?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3301952655744769784/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3301952655744769784' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3301952655744769784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3301952655744769784'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/decoding-process-confirmed.html' title='Decoding process confirmed!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-99843065373534474</id><published>2009-03-15T08:01:00.008+01:00</published><updated>2009-03-16T08:36:49.798+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='SPI'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='DCI'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3 decoding'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><category scheme='http://www.blogger.com/atom/ns#' term='si3000'/><title type='text'>And the work continues</title><content type='html'>Thanks to the allmighty!&lt;br /&gt;&lt;br /&gt;After a night of sleeping I decided I will take another look at mpg123 source package.&lt;br /&gt;&lt;br /&gt;I have discovered yesterday, that mpg123 player itself won't compile without target's sound support (ALSA, OSS, ES, etc.). But I have discovered several examples in &lt;span style="font-family:courier new;"&gt;./doc/examples&lt;/span&gt; and among them there is a simple decoding program that takes MP3 input from &lt;span style="font-family:courier new;"&gt;STDIN&lt;/span&gt; and puts decoded data into &lt;span style="font-family:courier new;"&gt;STDOUT&lt;/span&gt;. That took me to disovery of mpg3 encoding library as separated build in package, and I was actually able to build it.&lt;br /&gt;&lt;br /&gt;After library's installation into ARM toolchain (don't ask! Painstaking process), I was able to build decoding program. After transfering all neccessary libraries and built application onto target, I was able to decode MP3 file and fed it's data over SPI interface. It looks kinda OK; MP3 file of size 6MB was decoded into 37MB of raw data. I cannot say if all is OK; I must now complete PIC audio interface (read: add buffering into PIC project and kernel driver); I doubt that decoding process sends data with actual sample rate (44.1KHz). But if it does, there will be no worries with buffering.&lt;br /&gt;&lt;br /&gt;ARM linux that I use has RAM filesystem after booting. I must therefore copy all libraries into proper locations (/lib) and create their symbolic links neccessary every time I turn the darn system on. Time to fix the startup script!&lt;br /&gt;&lt;br /&gt;I should mention, that DSPIC30F6014 contains DCI interface, which can communicate with AC and I2S compliant audio codecs. I copied sources from DSPIC 1 demo plus board (which I am using for PIC AUDIO device), and I am already able to generate signals on si3000, which is onboard.&lt;br /&gt;&lt;br /&gt;So now for the final push(es?)...&lt;br /&gt;&lt;br /&gt;Till next time,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-99843065373534474?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/99843065373534474/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=99843065373534474' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/99843065373534474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/99843065373534474'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/and-work-continues.html' title='And the work continues'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5303963696492700827</id><published>2009-03-14T21:12:00.004+01:00</published><updated>2009-03-15T08:01:14.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3 encoder'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>There is no simple MP3 player available</title><content type='html'>I am am not able to continue with my PIC_AUDIO project.&lt;br /&gt;&lt;br /&gt;I have prepared 16bit SPI communication between linux and si3000 audio codec. I have successfully generated audio output through si3000 codec... But - I cannot rip MP3 audio data from MP3 file to send them onto codec chip.&lt;br /&gt;&lt;br /&gt;Why not?&lt;br /&gt;&lt;br /&gt;I am using embedded linux board based on ARM platform which means I must build my projects with cross-compilation. It also means library independent projects. No ncurses, id3taglibs... After 3 hours of experimenting and 5 built projects I have discovered either:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I can get x86-platform decoder in binary executable.&lt;/li&gt;&lt;li&gt;Dowloaded MP3 decoder sources won't compile because it is not created with cross compilation in mind&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Downloaded MP3 decoder uses other libraries (libm, libncurses, libz, libid3tag - you name it, which I don't have and I cannot afford).&lt;/li&gt;&lt;li&gt;Some project's web pages are realy trying to make fool of seeker.&lt;/li&gt;&lt;li&gt;I could encode WAW to MP3 (using LAME encoder).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I was not able to get a console MP3 decoder that would flush raw 16bit data to STDOUT. So I am (currently) stuck on final step -  software.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Till next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5303963696492700827?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5303963696492700827/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5303963696492700827' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5303963696492700827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5303963696492700827'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/there-is-no-simple-mp3-player-available.html' title='There is no simple MP3 player available'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1775695711629544958</id><published>2009-03-11T07:55:00.008+01:00</published><updated>2009-03-12T07:53:40.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='cross compilation'/><title type='text'>Writing PIC audio device kernel driver for linux embedded</title><content type='html'>This time, it is linux kernel.&lt;br /&gt;&lt;br /&gt;What can I say? Unfortunately, linux is still immature for casual (windows) driver developer. There are still many pits and tricks preying on poor person, so one can easily give up before writing single line of code.&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-weight: bold; font-style: italic;"&gt;very&lt;/span&gt; good place to start is &lt;a href="http://www.faqs.org/docs/kernel/"&gt;LKMPG&lt;/a&gt;. Here, author guides you step-by-step into art of kernel writing modules.&lt;br /&gt;&lt;br /&gt;But the &lt;span style="font-style: italic;"&gt;real&lt;/span&gt; problem is setting the development envirnonment.Following is my experience.&lt;br /&gt;&lt;br /&gt;Suppose you have a linux embedded toolchain for ARM processors. You build 'Hello world' C program. It runs on target.&lt;br /&gt;Then you say to yourself: Hey, I can do building. Let's recompile the ultimate shrine!&lt;br /&gt;But alas, kernel building process holds with infamous line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;as: unrecognized option `-EL'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You start digging. And after half a day, you discover, &lt;span style="font-family:georgia;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;that &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:georgia;font-size:100%;"  &gt;toolchain's &lt;span style="font-weight: bold;"&gt;GCC&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt; is using &lt;/span&gt;&lt;span style="font-style: italic;font-family:georgia;font-size:100%;"  &gt;host's &lt;span style="font-weight: bold;"&gt;AS&lt;/span&gt;&lt;/span&gt; instead of it's own.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;I tested both as-es with this option and host's failed, toolchain's passed.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:100%;"&gt;It's easy, you think, I'll create a symbolic link called 'as' into toolchains &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;bin&lt;/span&gt;&lt;span style="font-size:100%;"&gt; folder were &lt;/span&gt;arm-as resides.&lt;br /&gt;Won't do. 'EL' option did pass this time, but 'Ql' option failed. This time, toolchains's as was used instead of host's as.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;After couple of couples of hours I discovered,  with help of &lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:130%;"&gt;GCC -print-search-dirs&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="font-size:100%;"&gt;that GCC has a list of folders where it checks for other compilers.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;I spotted, that &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;bin&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:85%;"  &gt;&lt;span style="font-size:100%;"&gt; folder path was being set wrong, so GCC could not locate toolkit's assembler compiler.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;I don't know (yet), how to fix that within GCC, so I copied toolchain to misleading location, and finally, kernel compilation went through.&lt;br /&gt;&lt;br /&gt;Only later I have discovered that something was wrong with my installation of toolchain. When I reinstalled it, everything was OK. So we can now forget the above.&lt;br /&gt;&lt;br /&gt;It was my own module test time.&lt;br /&gt;&lt;br /&gt;I created another folder in kernel's &lt;span style="font-family:courier new;"&gt;drivers&lt;/span&gt; subfolder, put pic_audio.c (previously built and successfully tested on PC platform), copied and adopted &lt;span style="font-family:courier new;"&gt;Makefile&lt;span style="font-family:georgia;"&gt; from another driver folder&lt;/span&gt;&lt;/span&gt;, added module into parent's folder &lt;span style="font-family:courier new;"&gt;Makefile&lt;/span&gt;, and module was built.&lt;br /&gt;&lt;br /&gt;When I transfered it onto target (ARM embedded linux), again infamous line:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Invalid module format (-1): Exec format error&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I inspected my module with modinfo, and comparison to original modules already built and stored on target reveiled no difference. Or so I thought.&lt;br /&gt;&lt;br /&gt;After night of sleeping, I decided I'll try final push: &lt;span style="font-family:courier new;"&gt;dmesg&lt;/span&gt;. And it reveiled, that instead of &lt;span style="font-family:courier new;"&gt;ssv-1&lt;/span&gt; tag (macro in kernel's top Makefile) target system's kernel was tagged with &lt;span style="font-family:courier new;"&gt;ssv-2&lt;/span&gt; tag!&lt;br /&gt;&lt;br /&gt;So it was easy as changing of tag in &lt;span style="font-family:courier new;"&gt;Makefile&lt;/span&gt;,  complete rebuild, modules build, transfer onto target... And this time, insmod inserted my module without arguing. Heurecca! Encore!&lt;br /&gt;&lt;br /&gt;Conclusion: linux kernel programming is extremly unforgiving. Only experiences count. And their descriptions, so this is why you can read this post.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;&lt;br /&gt;your kernel developer Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1775695711629544958?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1775695711629544958/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1775695711629544958' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1775695711629544958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1775695711629544958'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/writing-pic-audio-kernel-driver-device.html' title='Writing PIC audio device kernel driver for linux embedded'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-7944168065797568688</id><published>2009-03-06T23:31:00.002+01:00</published><updated>2009-03-06T23:46:18.726+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded world'/><title type='text'>Embedded World 2009 expo</title><content type='html'>This year it is my forth consecutive visit of the show, which location is in Nürnberg, Germany, and is the biggest of its kind.&lt;br /&gt;&lt;br /&gt;Exhibiton has grown by a third of its size. All big names of the computing industry were present - except AMD which was missing this year. Otherwise there were microsoft, intel, VIA, IBM (both for the first time), and microchip, atmel, texas instruments plus many more.&lt;br /&gt;&lt;br /&gt;After past two years of stagnation I can finnaly say, that things are moving. I witnessed enormeous growth of linux embedded systems, especially those with GUI. Finnaly! But still funny enough - I was able to track one single manufacturer with a complete GUI solution (although working on java), the SSV systems. My team is using their linux embedded products with great success. Can't wait to get my hands on their GUI developer board.&lt;br /&gt;&lt;br /&gt;If I was able to see couple of dozens of linux embedded devices, this year manufacturers fall over each other with their offer. Products come from India and China, from which attendancy on this expo has grown tremendously comparing to year ago.&lt;br /&gt;&lt;br /&gt;Looks like soft-core processors are coming. They are capable of running linux and even pheripjerial devices (like network interfaces and UARTs) can be implemented without help of external devices.&lt;br /&gt;&lt;br /&gt;See it for yourself!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.embedded-world.de/en/default.ashx"&gt;http://www.embedded-world.de/en/default.ashx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7944168065797568688?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7944168065797568688/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7944168065797568688' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7944168065797568688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7944168065797568688'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/03/embedded-world-2009-expo.html' title='Embedded World 2009 expo'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4530583277633239671</id><published>2009-02-23T23:17:00.005+01:00</published><updated>2009-02-23T23:30:22.928+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EEPROM'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><category scheme='http://www.blogger.com/atom/ns#' term='writing'/><title type='text'>Writing series of data into DSPIC EEPROM</title><content type='html'>Well, I thought it is only rewriting of previously stored data. It did work when writing 5 long type values (20 bytes of data).&lt;div&gt;Then 10 long values had to be written. From this point on previously successfull writing failed.&lt;/div&gt;&lt;div&gt;Solution (that works currently) was deletion of one block of EEPROM data before being rewritten. This solved the problem.&lt;/div&gt;&lt;div&gt;I have redesigned my assembler functions, so now they accept parameters from C and return values to C.&lt;/div&gt;&lt;div&gt;Here's how C declares them:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void ee_write(unsigned int addr, unsigned long val);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;unsigned long ee_read(unsigned int addr);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Procedure is simple and straightforward: when function call from C reaches assembler, parameter values are stored in W0 to W5 respectivly. So when ee_write is called, W0 contains address, W2:W1 pair contains long value (big-endian).&lt;/div&gt;&lt;div&gt;On a contrary when value is returned from assembler back to C, it is stored in W1:W0 pair before return.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regards,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;M&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4530583277633239671?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4530583277633239671/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4530583277633239671' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4530583277633239671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4530583277633239671'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/02/writing-series-of-data-into-dspic.html' title='Writing series of data into DSPIC EEPROM'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3031244532353352138</id><published>2009-02-23T10:22:00.003+01:00</published><updated>2009-02-23T10:46:36.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weird'/><category scheme='http://www.blogger.com/atom/ns#' term='microchip.configuration bits verification error'/><category scheme='http://www.blogger.com/atom/ns#' term='mplab'/><title type='text'>Mysterious MPLab behavior</title><content type='html'>Another miracle from microchip.&lt;br /&gt;&lt;br /&gt;I am working with DSPIC 30F4011. I use mplab 7.60. It is outdated, but it works fine. At least for now. And I have no intention for upgrade what soever.&lt;br /&gt;&lt;br /&gt;Just yesterday I have encoutered something weird (again) with DSPICs.&lt;br /&gt;&lt;br /&gt;I have crafted application that reads from and writes into data EEPROM. It works now (I had vast problems with EEPROM writing, but that post will follow).&lt;br /&gt;&lt;br /&gt;I determined, that the best way to check eeprom contents (after application is done with writing) is with use of &lt;span style="font-weight: bold;"&gt;Programmer-&gt;Read&lt;/span&gt; command. &lt;span style="font-weight: bold;"&gt;Wiew-&gt;EEPROM-&gt;Refresh&lt;/span&gt; does not work at all. I am using REAL ICE tool because ICD2 is useless with DSPICS.&lt;br /&gt;&lt;br /&gt;Sudenly, after such read, I was not able to programme DSPIC any more. I got configuration bits verification error.&lt;br /&gt;I was not able to programme PIC with newest version of MPLAB on another machine, with another REAL ICE, not even with ICD2. No way at all. I even recreated project from scrach  with existant source codes. I have even replaced DSPIC! Still, same error.&lt;br /&gt;&lt;br /&gt;Please note, that there were no errors when project was being built, so incidental typing error is not possible.&lt;br /&gt;&lt;br /&gt;Finnaly, I took code from archive, retype changes, rebuilt project,  and then, I could programme DSPIC.&lt;br /&gt;&lt;br /&gt;This is for the first time in my life that source code has been a source of hardware malfunctioning &lt;span style="font-weight: bold; font-style: italic;"&gt;outside of normal run&lt;/span&gt;. Computing has indeed progress alot!&lt;br /&gt;&lt;br /&gt;Or is this another attempt to contact microchip's technical support so they can gather your personal info and start nagging?&lt;br /&gt;&lt;br /&gt;We have done calculation. Roughly 30%-40% of development time is lost by such nonceses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3031244532353352138?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3031244532353352138/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3031244532353352138' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3031244532353352138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3031244532353352138'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/02/mysterious-mplab-behavior.html' title='Mysterious MPLab behavior'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4934382649403524752</id><published>2009-02-10T07:24:00.004+01:00</published><updated>2009-02-10T07:41:22.463+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='most safe data'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Safe user's data</title><content type='html'>Another post out which is of this blog's context.&lt;br /&gt;&lt;br /&gt;By my opinion, your (binary) data is most save when you carry it with you.&lt;br /&gt;&lt;br /&gt;Is this possible on computers? It is, with help of the external (USB) devices. Well, in a way, it is. If you are able to tell all programs &lt;span style="font-style: italic;"&gt;you&lt;/span&gt; use, that they should store &lt;span style="font-style: italic;"&gt;their&lt;/span&gt; data onto external disk device instead into 'My Documents' local windows folder. Otherwise it is daily procedure of copying files, which is at least inconvenient, if not annoying. And you can still forget to erase source files that you copied.&lt;br /&gt;&lt;br /&gt;But suppose you would be able to install your system onto external drive so your programs could use their default storage locations, and you would remove internal disk from your machine? Wouldn't &lt;span style="font-style: italic; font-weight: bold;"&gt;that&lt;/span&gt; be perfectly safe solution? (Unless someone takes your external drive away, that is.)&lt;br /&gt;&lt;br /&gt;I've been trying to solve this issue for years on PC, but without success. Either windows won't install, either it crashed continously after installation, or it was running like Vista on averige computer.&lt;br /&gt;&lt;br /&gt;I have however tried that method on my iMac recently. And &lt;span style="font-weight: bold; font-style: italic;"&gt;it works&lt;/span&gt; flawlessly. I was able to install Mac OS X onto external disk drive and boot my machine from it. If I take external disk away now, computer is useless, unless Mac OS is re-installed again on internal disk (which is still active). But we do know, that computers are being stollen for data they carry. So now I can pop a note on mine: "This machine has no data on it..." :)&lt;br /&gt;&lt;br /&gt;As far as I know, this method is not possible for PC-based computers. Why not?&lt;br /&gt;&lt;br /&gt;Till next time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4934382649403524752?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4934382649403524752/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4934382649403524752' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4934382649403524752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4934382649403524752'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/02/safe-users-data.html' title='Safe user&apos;s data'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2256573060545187249</id><published>2009-02-01T20:17:00.003+01:00</published><updated>2009-02-01T20:25:31.623+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb6'/><category scheme='http://www.blogger.com/atom/ns#' term='bad calling convention'/><title type='text'>DLL and visual basic 6 part II</title><content type='html'>It did not help!&lt;div&gt;I have created DEF file, I rebuilt project, and VB6 &lt;span class="Apple-style-span" style="font-style: italic;"&gt;STILL&lt;/span&gt; reported 'bad calling convention'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had VS2005 machine at hand, so I tried there. Created project, wrote code... for the very first time. And it &lt;span class="Apple-style-span" style="font-style: italic;"&gt;worked&lt;/span&gt;. Well, it works within IDE and I can debug values from DLL. Don't know about executable, though...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One difference though: in VS2005 C's &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;int&lt;/span&gt; is VB's &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Integer&lt;/span&gt;, not &lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;Long&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But man, does that piss me off! Two products from one package, and one cannot use DLL made by another?! Or maybe things are not as simple as microsoft would like to show it?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2256573060545187249?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2256573060545187249/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2256573060545187249' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2256573060545187249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2256573060545187249'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/02/dll-and-visual-basic-6-part-ii.html' title='DLL and visual basic 6 part II'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4441151655744516906</id><published>2009-02-01T08:58:00.002+01:00</published><updated>2009-02-01T09:14:13.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb6'/><category scheme='http://www.blogger.com/atom/ns#' term='bad DLL calling convention'/><category scheme='http://www.blogger.com/atom/ns#' term='dll'/><title type='text'>DLL and visual basic 6</title><content type='html'>I was given a task to make a program, which would run with a help of external DLL, created by co-worker in visual C++ 6.&lt;br /&gt;&lt;br /&gt;DLL is allready in use and is working. But when I wrote external function declarations in VB, I got famous 453 error: '&lt;span style="font-family: courier new;"&gt;Can+t find DLL entry point xx...&lt;/span&gt;'&lt;br /&gt;&lt;br /&gt;I have no experirences with DLLs and VB, but I did some DLL inspections in the past. I used &lt;span style="font-family: courier new;"&gt;Dependency walker&lt;/span&gt; application (part of windows XP embedded toolkit, I suppose), and I have noticed, that names of functions I have used from other DLLs are shown correctly, but in case of my particular DLL names were weird, with characters @, etc.&lt;br /&gt;&lt;br /&gt;I started browsing, and then I came across the advice to use &lt;span style="font-family: courier new; font-weight: bold;"&gt;external "C"&lt;/span&gt; declaration infront of the function name. I did that (I had sources for DLL) and heureca: names of functions were displayed correctly in &lt;span style="font-family: courier new;"&gt;Dependency walker&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But after that, I got 'Bad DLL calling convention' error. I have lost another 2 hours, before I found a topic where some developer complained about DLL calls working in VB when compiled VB application is being run, whilst in normal IDE mode he gets same error as I did.&lt;br /&gt;&lt;br /&gt;I built my VB program and bad calling convention error was gone, all worked. But at this state, stuff is pretty much useless, because I have to monitor DLL ouputs. There is apparently another option: using a DEF file for DLL funcitons export in C++.&lt;br /&gt;&lt;br /&gt;Back to work!&lt;br /&gt;&lt;br /&gt;I hope this will help anyone.&lt;br /&gt;&lt;br /&gt;Yours trully...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4441151655744516906?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4441151655744516906/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4441151655744516906' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4441151655744516906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4441151655744516906'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/02/dll-and-visual-basic-6.html' title='DLL and visual basic 6'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2662725754065343401</id><published>2009-01-18T07:41:00.006+01:00</published><updated>2009-01-19T19:35:38.855+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LONG'/><category scheme='http://www.blogger.com/atom/ns#' term='EEPROM'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>Reading C LONG values with asembler from DSPIC EEPROM</title><content type='html'>I have tried to read EEPROM values with help of C. But DSPIC crashed. So i decided to implement my own assembly function which would be called from C.&lt;br /&gt;&lt;br /&gt;Now, it would be most convenient if I used something like this in C:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;unsigned long ee_read(unsigned int ee_address);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But, since I don't know (yet) how to return &lt;span style="font-family:courier new;"&gt;long&lt;/span&gt; value (composed of two int-s) from assembler, I decided I will use global variable for EEPROM address and &lt;span style="font-family:courier new;"&gt;long&lt;/span&gt; pointer as storage location. So therefore function C declaration is now:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;void ee_read(unsigned long *ee_data);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;EEPROM addres starts with 0x00 and increases by 1. Assembly rutine takes care of setting target location in dedicated registers. EEPROM start location is &lt;span style="font-family:courier new;"&gt;0x7FFC00&lt;/span&gt;.&lt;br /&gt;Here is assembly code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.extern ee_addr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;_ee_read:&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;;W0 points to  long pointer&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;;eeprom target address must be multiplied by 2&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;;and  0xFC00 must be added&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;mov W0,W2    ;store pointer&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;mov _ee_addr,W0&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;mov #0xFC00,W1&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;add W1,W0,W0    ;add 0xF000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;;W0 now hase LSB target address&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;MOV #0x7F,W1&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;MOV W1,TBLPAG ;MSB of target address&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;TBLRDL [ W0++ ], W4 ; read data EEPROM&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;mov W4,[W2++] ;read LSB into pointer location&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;TBLRDL [ W0 ], W4 ; read data EEPROM&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;mov W4,[W2] ;read MSB into pointer location&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;return ;that's it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remember to set target address into global &lt;span style="font-family:courier new;"&gt;ee_addr&lt;/span&gt; variable before you call this funciton from C. Address values increases by 4: 0x00, 0x04, 0x08, etc.&lt;br /&gt;&lt;br /&gt;This code is particular to DSPIC30F4011 processor. Check for start location of EEPROM on your DSPIC in it's datasheet.&lt;br /&gt;&lt;br /&gt;How does it work? As you know, when assembly function is called from C, W0 has first parameter value. So if C parameter is a pointer, in assembly we recieve address of variable in W0. Since C30 is big-endian, we store long's LSB first and MSB second into it.&lt;br /&gt;&lt;br /&gt;This code can be fruther optimized. Instead of&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TBLRDL [ W0++ ], W4 ; read data EEPROM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    mov W4,[W2++] ;read LSB into pointer location&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;you could simply do&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TBLRDL [ W0++ ], [W2++] ; read data from EEPROM into LSB pointer location&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;br /&gt;&lt;/span&gt;to save an instruction.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2662725754065343401?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2662725754065343401/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2662725754065343401' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2662725754065343401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2662725754065343401'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2009/01/reading-c-long-values-with-asembler.html' title='Reading C LONG values with asembler from DSPIC EEPROM'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-588083752886878170</id><published>2008-12-31T08:22:00.003+01:00</published><updated>2008-12-31T08:36:29.821+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='16 bit timer'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><category scheme='http://www.blogger.com/atom/ns#' term='18F'/><title type='text'>Reading 16bit Timer on PIC18F devices</title><content type='html'>I needed a counter in my application, but counter with higher range than that from 0 to 255. Since I was using 18F PIC, there was not much choice but to use 16 bit TIMER combination. Alternative could be a polling method, but it was out of the question.&lt;br /&gt;&lt;br /&gt;I decided to use TIMER0. I configured it as an asynchronous counter to recieve inputs from dedicated input pin.&lt;br /&gt;&lt;br /&gt;I had to check when 16 bit limit value has being reached. I could use CCP module, but it used good old polling method: both bytes, MSB and LSB comparison with their limits.&lt;br /&gt;&lt;br /&gt;My assembler rutine was written in a manner of MSB being checked first to avoid fruther delays from main loop. Comparison failed; I could not successfully compare both limits. Polling frequency was fine (couple thousand polls per input tick), but still - it did not work.&lt;br /&gt;&lt;br /&gt;Then I toggled MSB and LSB checking so that LSB was compared first, and then comparison worked as it should.&lt;br /&gt;&lt;br /&gt;I studied datasheet and I discovered source of the problem. When reading 16bit TIMER combination, MSB, the higher byte is being transfered into dedicated register (which is virtual) only when LSB, lower byte is read. So one must first get value from LSB (TMRxL register) in order for PIC to transfer MSB timer value into TMRxH register.&lt;br /&gt;&lt;br /&gt;Hope this will help someone...&lt;br /&gt;&lt;br /&gt;Regards and happy New Year,&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-588083752886878170?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/588083752886878170/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=588083752886878170' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/588083752886878170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/588083752886878170'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/12/reading-16bit-timer-on-pic18f-devices.html' title='Reading 16bit Timer on PIC18F devices'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4857045555847674140</id><published>2008-12-30T20:12:00.004+01:00</published><updated>2008-12-30T20:31:37.284+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PORT'/><category scheme='http://www.blogger.com/atom/ns#' term='LAT'/><category scheme='http://www.blogger.com/atom/ns#' term='registers'/><title type='text'>PORTx and LATx CAN make difference</title><content type='html'>Another live-saving lession I have experienced today!&lt;br /&gt;&lt;br /&gt;I have a decade-long experiences with PIC's PORTx registers. I prefer to use those registers  instead of dedicated LATx-es. It is said in datasheets, that writing into PORTx registers will also change bits on PORTx output pins. Well, it did... untill today.&lt;br /&gt;&lt;br /&gt;I have a completed application. It controlls motor driver, which in turn moves EMF antenna up or down, and rotates it.&lt;br /&gt;It all worked, untill we connected motor controller to a PIC through heavy EMF filters, as it should be. Then, port outputs suddenly stopped working. Input was OK, output not!&lt;br /&gt;We suspected filtering, but with help of our servicing software (setting and resetting port pins manualy) it all worked well. With PORTx registers used!&lt;br /&gt;I was again near beserk state. I told my technitian to replace the f...ing PIC (PIC18F8722), but just for a joke of it I replaced output PORTx-es with LATx-es. Then, all began to work normally.&lt;br /&gt;&lt;br /&gt;Please note that there were no warnings from compiler, nor in datasheets. Also, everything worked normally, only when IO signals were connected through filters, outputs refuse to work properly. All my other applications using PORTx registers are still fully operational.&lt;br /&gt;&lt;br /&gt;So in future you are advised to use LATx registers for outputs!&lt;br /&gt;&lt;br /&gt;Hope this will help somebody...&lt;br /&gt;&lt;br /&gt;Happy new year!&lt;br /&gt;&lt;br /&gt;Marjan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4857045555847674140?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4857045555847674140/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4857045555847674140' title='Št. komentarjev: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4857045555847674140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4857045555847674140'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/12/portx-and-latx-can-make-difference.html' title='PORTx and LATx CAN make difference'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3223729567175360306</id><published>2008-12-11T07:32:00.003+01:00</published><updated>2008-12-11T07:41:53.577+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='update fraud'/><category scheme='http://www.blogger.com/atom/ns#' term='garmin'/><title type='text'>Cannot request to be removed from Garmin's spam list</title><content type='html'>I have GPS unit from Garmin. And now they keep sending me 'update, update!' notices.&lt;br /&gt;I thought 'Great', until I realized that I will have to pay for update.&lt;br /&gt;&lt;br /&gt;Fuck you, garmin! You will not get a cent out of my wallet. I did not notice anywhere that I will have to &lt;span style="font-style: italic; font-weight: bold;"&gt;pay&lt;/span&gt; for map updates. With such treatment you will only force me to find a crack for your devices and update maps for free.&lt;br /&gt;&lt;br /&gt;If there was any notice about upgrades, it was hidden. In fine print, in EULA, I don't care. It is fraud to me.&lt;br /&gt;&lt;br /&gt;Besides I cannot send request to be removed from their spam list. Their contact page says 'All fields marked with * must be filled'. They were. Even for 'searching' combo, whatever the reason it is there for. There were not any options in it because 'I have not done some recent searching'.&lt;br /&gt;&lt;br /&gt;From now on anything I get from garmin will be marked as spam. Thank Gmail for that possibility!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3223729567175360306?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3223729567175360306/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3223729567175360306' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3223729567175360306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3223729567175360306'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/12/cannot-request-to-be-removed-from.html' title='Cannot request to be removed from Garmin&apos;s spam list'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6207227888697300446</id><published>2008-12-04T21:49:00.002+01:00</published><updated>2008-12-04T21:55:26.736+01:00</updated><title type='text'>Microchip TCP-IP stack, part 2</title><content type='html'>Ok, I have studied the application note and I was not able to track error. When I copied problematic file from stack framework into my project, error disapeared.&lt;br /&gt;&lt;br /&gt;So now I have operational PIC client with about real 150Kbit network connection. Data and program memory of PIC are now at about 2/3 of their capacities being used. I have wrote a VB server application, to which PIC connects and then starts sending data. At about 15KB per second. Operational for 8KB 8bit speech audio...&lt;br /&gt;&lt;br /&gt;Regards...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6207227888697300446?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6207227888697300446/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6207227888697300446' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6207227888697300446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6207227888697300446'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/12/microchip-tcp-ip-stack-part-2.html' title='Microchip TCP-IP stack, part 2'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6535928573339529161</id><published>2008-12-04T17:38:00.003+01:00</published><updated>2008-12-04T18:10:56.176+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microchip'/><category scheme='http://www.blogger.com/atom/ns#' term='tcp ip stack'/><title type='text'>Microchip tcp ip stack test</title><content type='html'>Yes, I just had to try &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en028217"&gt;it&lt;/a&gt;.&lt;br /&gt;What I did in my test?&lt;br /&gt;I tried to upload newest version of Microchip's TCP-IP stack(4.55). Building of firmware went smoothly (except I had to add  C18's original linker script file for 18F97J60 to project. After build was programmed, HTTP pages refused to work with 404-code error. I had to figure out, that instead of webpages directory I should have uploaded contents to webpages2 directory. Uploading went smoothly.&lt;br /&gt;Since demo is written for later releases of MPLAB, and I still use 7.60 version on my machine, I could not open project files (I did initial build on another machine) and I had to port entire project. When it was finnaly able to be built, demo board hanged after programming. I tried building project and programming it several times and suddenly it worked. In MPLAB 8.1 all went well in first try, though.&lt;br /&gt;&lt;br /&gt;Demo is really nice, all working in real-time, including displaying AD result, key presses, and toggling LEDs from web browser.&lt;br /&gt;&lt;br /&gt;Then I decided, that I will use board as client, because demo firmware engulfed allmost entire program and data memory. I thought removing for example HTTP files and declarations in project files would do (not from stack sources! If I'll have to do that, we're done). It seems that entire stack is module-dependant: if I removed HTTP defines, all files compiled, but then linker refused to link StackTsk.o (which is a part of stack!), because of missing references of HTTPInit function.&lt;br /&gt;&lt;br /&gt;Now what?&lt;br /&gt;&lt;br /&gt;There is even some sort of a documentation added to stack project, it is windows help file (so you cannot study it elswhere), and it is usefull, if you need  stack API descrioption. API is pretty much alike stdlibc socket programming, so tcp-ip client should not be a problem. But to go on your own and change something?&lt;br /&gt;&lt;br /&gt;This is  first impression. I am not impressed.&lt;br /&gt;&lt;br /&gt;Now it is studiing of documentation. I have just found TCP-IP stack application note on CD. Keep your fingers crossed!&lt;br /&gt;&lt;br /&gt;I think Microchip will have to do something more but just keep lowering PIC prices to stay above the water. I heard for at least two customers, who threw away USB PIC designs and went for something else. TI's MCPs, I think.&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6535928573339529161?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6535928573339529161/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6535928573339529161' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6535928573339529161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6535928573339529161'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/12/microchip-tcp-ip-stack-test.html' title='Microchip tcp ip stack test'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4193645176737999001</id><published>2008-11-22T22:27:00.004+01:00</published><updated>2008-11-22T22:54:30.833+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='core bug'/><category scheme='http://www.blogger.com/atom/ns#' term='C30 USART error'/><category scheme='http://www.blogger.com/atom/ns#' term='stupidity'/><category scheme='http://www.blogger.com/atom/ns#' term='long merging'/><title type='text'>What a moron!</title><content type='html'>I hope that today's experience of mine will help someone.&lt;br /&gt;&lt;br /&gt;I had to transfer a &lt;span style="font-family: courier new;"&gt;long&lt;/span&gt; data from one DSPIC to another. That means 2 &lt;span style="font-family: courier new;"&gt;int&lt;/span&gt; values, or 4 &lt;span style="font-family: courier new;"&gt;byte&lt;/span&gt; values.&lt;br /&gt;Suppose I could transfer it byte by byte. I had to transfer it over USART. How I did it?&lt;br /&gt;I selected 'print value to string method'. But I had to discover, that C30's &lt;span style="font-family: courier new;"&gt;sprintf&lt;/span&gt; works only for &lt;span style="font-family: courier new;"&gt;int&lt;/span&gt; types at most. So I had to split &lt;span style="font-family: courier new;"&gt;long&lt;/span&gt; into two &lt;span style="font-family: courier new;"&gt;int&lt;/span&gt;s.&lt;br /&gt;But how to assemble it on other side? I decided I will use &lt;span style="font-family: courier new;"&gt;sprintf&lt;/span&gt; to transfer value as string. So I sent MSBs first, and then LSBs. By following &lt;span style="font-family: courier new;"&gt;sprntf&lt;/span&gt; format specifier: "%x", which ment HEX convrsion. For MSB and LSB to travel respectivly.&lt;br /&gt;I suppose experienced have already determined a cause for a failure. But let me explain what I have lost 2 hours for.&lt;br /&gt;With "%x" there is no problem for higher byte; if value is less that 4-digit, software on the other side of the line can get it. But then comes a LSB. If it's hex value would be less than 4 digits, what would happend?&lt;br /&gt;Let's say that original number is 0x310432. MSB is 0x31. And LSB? 0x0432. But with "%x" format specifier becomes 0x432. And afer assembly on the other side? It would become 0x31432. One digit less!&lt;br /&gt;I went mad. I accused C30, PIC, USART. It worked with fixed values, with variables not. I don't know what directed me; I suddenly realized where mistake was. I should use "%04x" format specifier for LSB. That would transform it into 0x0432. And MSB +  LSB would correctly yield 0x310432.&lt;br /&gt;&lt;br /&gt;Again, I could not use C30's USART library for unknown reason. I included headers, set project library directory... There were unresolved dependencies, allthough I have copied code from compiler documentation examples.&lt;br /&gt;And when I implemented LED indicator... Oh boy! Again &lt;a href="http://marjandeveloperelectro.blogspot.com/2008/08/dspic-core-error.html"&gt;core bug I have been writing about&lt;/a&gt;, but this time in C. An IF sentence, with two bit set compound instuctions. Watch and learn!&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if(...){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; clear_bit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; set_bit;  //this one was not executed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; }&lt;/span&gt;&lt;br /&gt;, but when code was rewritten like this:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;if(...){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  clear_bit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; Nop(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; set_bit;  //now it was executed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  }&lt;/span&gt;&lt;br /&gt; Go figure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4193645176737999001?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4193645176737999001/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4193645176737999001' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4193645176737999001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4193645176737999001'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/11/what-moron.html' title='What a moron!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-896560265810608383</id><published>2008-11-16T18:28:00.003+01:00</published><updated>2008-11-16T18:55:43.272+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C against assembly'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>Difference between C and assembly</title><content type='html'>I wouldn't believe it if I wouldn't experience it!&lt;br /&gt;&lt;br /&gt;One client came to us, but he requested RMS comparators for both U and I channels.&lt;br /&gt;Well, we got stuck. C simply wasn't fast enough to be used for collecting squared data from two channels and summarize them. We have tried that. We were not able to 'make it' in 10 KHz intervals. One RMS calculation and comparison yes, two - no way!&lt;br /&gt;Then I began to study my assembly code that crashed DSPIC. I established, that summarizing 100 samples was the cause. And then I came across the following assembly line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;inc [W3],[W3]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was an instruction, which should increase W3 value if lower byte addition would cause carry overflow.&lt;br /&gt;Ofcourse, this form of instruction did something completly different; it increased value on location with an address of W3 value.&lt;br /&gt;&lt;br /&gt;When I fixed this with&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;inc W3,W3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;, program worked. I suspected everything, because if I used fixed value for all 100 array elements, all worked. I have soon realized, that AD value is the root cause of the problem.&lt;br /&gt;&lt;br /&gt;But now are the timings, that impress me.&lt;br /&gt;One complete operation (sampling, squaring and summarization of 100 array values) in &lt;span style="font-weight: bold;"&gt;C&lt;/span&gt; lasted roughly 80 uS. 80 uS out of 100 uS.&lt;br /&gt;One complete operation (sampling, squaring and summarization) in assembly lasted 33 uS! C was used merly to prepare array and variables for square rooting.&lt;br /&gt;&lt;br /&gt;I added another array to be summarized. This time, as I have written, C failed. In assembly however, one full loop lasted 63 uS. Second comparison did not append much time to result.&lt;br /&gt;&lt;br /&gt;In C, i was using for-looping and pointers. Did not help much. In assembly I used DSP multi-op instructions, and time-save was tremendous.&lt;br /&gt;Conclusion? Use C for initialization and complex calculations. Assembly knows about signed values, and programmer can use not just native 16bit &lt;span style="font-family: courier new;"&gt;integers&lt;/span&gt;, but also 32bit &lt;span style="font-family: courier new;"&gt;long&lt;/span&gt; values...&lt;br /&gt;And what about personal computers platforms? Would Windows written in assembly worked better?&lt;br /&gt;Regards...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-896560265810608383?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/896560265810608383/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=896560265810608383' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/896560265810608383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/896560265810608383'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/11/difference-between-c-and-assembly.html' title='Difference between C and assembly'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6613382562180336727</id><published>2008-11-14T13:32:00.003+01:00</published><updated>2008-11-14T13:43:35.204+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='ancient'/><title type='text'>Client-server application</title><content type='html'>OK, this time, we are out of Microchip.&lt;br /&gt;Imagine we have a processing line with 3 posts. I was assigned to write client-side software for all of them. My collegue was assigned to write server.&lt;br /&gt;Here is a catch: server is written in &lt;span style="font-style: italic;"&gt;matLab&lt;/span&gt;, while clients are written in &lt;span style="font-style: italic;"&gt;visual basic 6&lt;/span&gt;.&lt;br /&gt;Ancient? Sure! But it took as roughly 3,5 &lt;span style="font-style: italic;"&gt;working &lt;span style="font-weight: bold;"&gt;days&lt;/span&gt;&lt;/span&gt; (I don't mean 84 hours with that!) to brought it from design into beta. &lt;span style="font-style: italic;"&gt;Without debugging on my side, everything was done with help of logging utilities&lt;/span&gt;. I also had to control X-ray scanning machine with IO rutines.&lt;br /&gt;Everything works as fast as it can. Responses are momental. My boss was impressed over speed, especialy compared to an existant EJB3 application.&lt;br /&gt;First post sends code pairs box-contents. X-ray machine checks them, scans contents and returns images. Third post releases queue items being put by post one. All three posts are coordinated by server.&lt;br /&gt;How much time and resurces would take for OO design to implement that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6613382562180336727?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6613382562180336727/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6613382562180336727' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6613382562180336727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6613382562180336727'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/11/client-server-application.html' title='Client-server application'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3423074337799051155</id><published>2008-11-03T14:43:00.004+01:00</published><updated>2008-11-04T20:37:39.108+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Legal robbers'/><title type='text'>Pinnacle blackmailing with add-ons</title><content type='html'>Here it goes:&lt;br /&gt;their studio 12 does not support HD video format by default. You must register over internet to get permission to unlock and use dolby 2 channel module. Otherwise, you cannot edit HD movies. ANd what if you don't have internet?&lt;br /&gt;This kind of attitude goes great with SONY HD cameras that don't have firewire interface. Instead, you must export movies from camera with their (sony's) utility, and you cannot edit this movies with software you already have. Not in widows world, that is. Therefore you are forced to buy new software for digital video editing. Or buy newest windows together with new computer that will be able to run them.&lt;br /&gt;The only exception I know of is apple iMovie 8, which recognises and offers import of movies from USB cameras. But again, if you transfer data from memory stick TM R on to DVD, you cannot import data into iMovie from it. Hoever, how do final results of editing (a DVD) look like, I was not able to test.&lt;br /&gt;So, if you buy a new camera, you'll have to buy new movie creation software. Because of that, you'll have to buy a new computer. And so on indefinetly.&lt;br /&gt;Decision is yours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3423074337799051155?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3423074337799051155/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3423074337799051155' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3423074337799051155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3423074337799051155'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/11/pinnacle-blackmailing-with-add-ons.html' title='Pinnacle blackmailing with add-ons'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6916809085098147246</id><published>2008-10-26T19:06:00.007+01:00</published><updated>2008-10-27T05:26:36.151+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idiotism'/><category scheme='http://www.blogger.com/atom/ns#' term='patent'/><category scheme='http://www.blogger.com/atom/ns#' term='programmable fuse'/><title type='text'>Programmable fuse - patent idiotism</title><content type='html'>This day it was RMS comparator.&lt;br /&gt;It did work at the end (with 100uS reaction time), but it is a defeat for me: I was not able to merge C and assembly worlds together.&lt;br /&gt;Main loop, interrupts and initialization are implemented in C, however square operation and summarization were intended to be written in assembly.&lt;br /&gt;Well, they were, and with MPlab simulator debugger tool it all worked well. But when I tried on dspic 30f4011, exectuion was trapped with ram errors and processor was reset.&lt;br /&gt;How can that be? I even stored and restored afterwords all working registers I used in assembly rutines, but it did not help. In C I initialised long array with 100 elements, which I intended to access it over pointer in assembly part. It was possible, but whole system crashed for unknown reason. If assembly calls were removed from C funcitons, processor did not crash.&lt;br /&gt;Therefore, I was forced to use C. It is fast enough, but with use of assembler, 20% to 30% higher efficency could be achieved.&lt;br /&gt;I had to discover another thing: when using DSP instructions like MAC (square and add into accumulator with optional prefetch of next value to be squared), you must set IF bit (0) in CORCON register. Otherwise, DSPIC will take it as fractional part of value, not integer.&lt;br /&gt;Since this is not my private project, I cannot post code nor tell details. But it works, and we came up with idea to make a programmable circuit brakers, connected in network as units. RMS current detection could be programmed with very high resolution, and detection speed of nearly any magnitude could be set. Together with soft-start funciton.&lt;br /&gt;But when we began to check for patents, we became frustrated. &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;ANYTHING POSSIBLE&lt;/span&gt;&lt;/span&gt; regarding such devices is patented, registred and trade-marked. There is simply no room for inovations and no possibility for break-throughs. Those gready and stupid MBA people have brought all progress to a stand-still. Not just in electronics, &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;everywhere&lt;/span&gt;&lt;/span&gt;!!! No wonder, that any inovation is successfull, because thera are hardly any. People, wake up and give'm hell!&lt;br /&gt;Yours frustrated...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6916809085098147246?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6916809085098147246/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6916809085098147246' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6916809085098147246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6916809085098147246'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/programmable-fuse-patent-idiotism.html' title='Programmable fuse - patent idiotism'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2792872460231091563</id><published>2008-10-24T07:21:00.004+02:00</published><updated>2008-10-24T07:34:03.177+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAM upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='iMac'/><title type='text'>iMac RAM upgrade</title><content type='html'>Another non-development issue. But IT-ish indeed!&lt;br /&gt;About six months ago I purchased 2GB of RAM for my iMac. Poor machine had to live with 1GB of RAM. Since upgrade was not expensive (50 EUR), I choose to upgrade it.&lt;br /&gt;&lt;br /&gt;Upgrade process (it was rather gentle:) ) was completed without problems, there were 2GB RAM detected allright.&lt;br /&gt;&lt;br /&gt;After some four months, it happened. While I was showing images to my collegue, suddenly iMac reset without warning and... did not came up again.&lt;br /&gt;&lt;br /&gt;I suspected RAM upgrade immediatly.  I took 2GB out and put in old 1GB of it. Mac did came up this time, but only 500MB of RAM was displayed.&lt;br /&gt;&lt;br /&gt;Shit hit the fan, I thought. I did one last try: I removed RAM, blowed it's cabinet, put it back, but this time I pushed it firmly. When I pressed wake-up button, Mac came up, and quantity of RAM was correct.Hooray! I removed old RAM and put uprade back in, firmly. Mac came up allright. I run RAM test from installation DVD. No errors were detected.&lt;br /&gt;Since then there were no problems whatsoever, nock, nock. So, when you perform upgrade, do it firmly, but with reasonable force. I am assured, that I am not first nor last who experienced this.&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2792872460231091563?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2792872460231091563/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2792872460231091563' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2792872460231091563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2792872460231091563'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/imac-ram-upgrade.html' title='iMac RAM upgrade'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2775949647749754544</id><published>2008-10-20T15:01:00.003+02:00</published><updated>2008-10-20T15:06:57.380+02:00</updated><title type='text'>Clock generator, part II</title><content type='html'>Won't do. Since generated clock span should be from 180Hz up to 700KHz (it can be achieved),I think I just hit the wall. The higher the frequencies, the higher increment. It is so too high for motor acceleration. Motor halted at 18Khz. I even tried with dual processor scheme: one as programmable oscillator, and one as acceleration curve generator. Did not work.&lt;br /&gt;&lt;br /&gt;Next we tried with frequency generator. Yes, contiunal frequency change works, but this cannot be achieved through processor. Also, acceleration should not be too long, so respective dual progrmmable oscillator switching scheme is out of the question. We will now try with some form of VCO. Hope it works.&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2775949647749754544?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2775949647749754544/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2775949647749754544' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2775949647749754544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2775949647749754544'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/clock-generator-part-ii.html' title='Clock generator, part II'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4084485010945556144</id><published>2008-10-15T12:30:00.004+02:00</published><updated>2008-10-16T08:26:11.225+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acceleration'/><category scheme='http://www.blogger.com/atom/ns#' term='looping'/><title type='text'>Clock acceleration with looping</title><content type='html'>Today I had to implement clock (which drives DACs for three-phase current for brushless motor) acceleration from 200Hz to 230KHz span. Acceleration should take no more than 10 seonds.&lt;br /&gt;Roughly, it is done. I use three loops for it. The most inner layer is responsible for clock switching (output pin toggle). Middle one is taking care of frequency repetition, and decreases delay afterwards. The most outer loop is checking when final frequency is reached.&lt;br /&gt;I have three parameters to change acceleration. First is delay itself, then number of repetitions of delay, and subtraction from delay size. They are currenty fixed, and they give kinda exponential acceleration (being too slow at start, but too fast towards the end).&lt;br /&gt;So I must now implement a method of decrement calculation. Delay shoud decrease rapidly at start, but very little at the end. I will achieve this with changeable repetition and delay-decrement parameters.&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4084485010945556144?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4084485010945556144/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4084485010945556144' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4084485010945556144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4084485010945556144'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/clock-acceleration-with-looping.html' title='Clock acceleration with looping'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4819924116354170840</id><published>2008-10-11T09:03:00.005+02:00</published><updated>2008-10-11T18:04:53.096+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='not closing applications'/><category scheme='http://www.blogger.com/atom/ns#' term='command-q'/><category scheme='http://www.blogger.com/atom/ns#' term='does not work'/><title type='text'>Command-Q does not close applications anymore</title><content type='html'>OK, this is weird!&lt;br /&gt;&lt;br /&gt;Suddenly command-Q combination does not close applications on my macbook anymore.&lt;br /&gt;I admit It could be caused by key combination I pressed, but it was fully accidental so I don't remember what it was. Also, there was no warning of any kind regarding to key modification.&lt;br /&gt;&lt;br /&gt;All keys are working properly, because in other users accounts command-Q works as it should.&lt;br /&gt;&lt;br /&gt;Funny however is, that command-option-Q now does the job. Pathetic!&lt;br /&gt;&lt;br /&gt;I have reset all I could (key modifiers, keyboard shortcuts), but I cannot make command-Q combination work. This sucks and it sucks big. I am sorry but I must admit: in my life during windows usage I NEVER had such shitty problem. Never.&lt;br /&gt;&lt;br /&gt;However I have just discover what a problem is: my keyboard layout switched to secondary choice - Sami. I discovered that when I tried to type in spotlight. If I would had switched on international icon, I would have spotted this earlier. Great mislead was that command-option-Q worked.&lt;br /&gt;Anyway, it is all OK now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4819924116354170840?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4819924116354170840/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4819924116354170840' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4819924116354170840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4819924116354170840'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/command-q-does-not-close-applications.html' title='Command-Q does not close applications anymore'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2178346865878391965</id><published>2008-10-06T10:38:00.005+02:00</published><updated>2008-10-11T09:26:13.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compaq'/><category scheme='http://www.blogger.com/atom/ns#' term='windows xp'/><category scheme='http://www.blogger.com/atom/ns#' term='8710p'/><category scheme='http://www.blogger.com/atom/ns#' term='hp'/><category scheme='http://www.blogger.com/atom/ns#' term='modem installation problem'/><title type='text'>Compaq 8710p modem installation problem</title><content type='html'>This time it is another windows XP downgrade issue.&lt;br /&gt;When I started at new employer back in June, I was equipped with new HP notebook, or better say Compaq model 8710p.&lt;br /&gt;I was ordered to downgrade it to XP. I did that, it all went well, except for modem. I was not able to install it.&lt;br /&gt;I have browsed internet, but there was no such problem described. Only today, I finaly found a solution.&lt;br /&gt;Trick is in bios upgrade and device mangling.&lt;br /&gt;Download &lt;a href="http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&amp;amp;cc=us&amp;amp;prodTypeId=321957&amp;amp;prodSeriesId=3369264&amp;amp;prodNameId=3355687&amp;amp;swEnvOID=1093&amp;amp;swLang=8&amp;amp;mode=2&amp;amp;taskId=135&amp;amp;swItem=ob-65013-1"&gt;latest &lt;/a&gt;BIOS from HP's site, install it, and when machine restarts, load bios defaults.&lt;br /&gt;After machine reboots and you enter windows, go to device manager, and select 'Viiew'-&gt;'Show hidden devices'. You should see something like '&lt;span style="font-style: italic;"&gt;serial port&lt;/span&gt;' with exclamation mark. Right click it and remove it (unistall, delete, whatever).&lt;br /&gt;After that, you must remove your audio device (SoundMax HD Audio). You'll find it in Audio Devices. Uninstall it. Reboot machine, and when it prompts you for driver, &lt;span style="font-weight: bold;"&gt;do not install audio back&lt;/span&gt;. Hold it and wait for it!&lt;br /&gt;And now the big thing. '&lt;span style="font-style: italic;"&gt;Microsoft UAA bus driver for HDA&lt;/span&gt;' must be uninstalled. You'll find it in '&lt;span style="font-style: italic;"&gt;System devices&lt;/span&gt;'. Uninstall it, but reboot is not required.&lt;br /&gt;When UAA for HDA is uninstalled, click 'Actions'-&gt;'Scan for hardware changes'. You should be prompted for two drivers respectivly, and in Device Manager you should see two unknown devices, and one of them could be 'HDA modem' or alike.&lt;br /&gt;Now you can install Soundmax Audio (first item) and modem (second item); most likely it is a Conextant device. Use drivers from HP's site.&lt;br /&gt;&lt;br /&gt;Hope that this will help somebody.&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2178346865878391965?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2178346865878391965/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2178346865878391965' title='Št. komentarjev: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2178346865878391965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2178346865878391965'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/compaq-8710p-modem-problem.html' title='Compaq 8710p modem installation problem'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2471886624803905470</id><published>2008-10-02T10:38:00.003+02:00</published><updated>2008-10-02T10:58:12.128+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entry point not found'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><category scheme='http://www.blogger.com/atom/ns#' term='QT'/><title type='text'>VS2005 SP1 problem</title><content type='html'>Yes, I am forced to use VS2005.&lt;br /&gt;Anyway, project is implemented with a help of a QT library.&lt;br /&gt;I was naive and I thought downloading an open source release would do. Sorry, no. Project does build, but executable won't run because of DLL function signature mismatch (entry point not found message).&lt;br /&gt;I was able to copy a previous version of QT library, and project was built, and was running. But see a full story:&lt;br /&gt;I have installed vs2005 and it's SP1. I was not able to build project with old libraries. After 5 days of enquiry I tracked a post complaining that after VS2005 SP1 was installed, QT was no longer usable.&lt;br /&gt;So I uninstalled VS2005, reinstalled it &lt;span style="font-style: italic; font-weight: bold;"&gt;without&lt;/span&gt; SP1, and HEURECA! I was finaly able to build project!&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2471886624803905470?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2471886624803905470/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2471886624803905470' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2471886624803905470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2471886624803905470'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/vs2005-sp1-problem.html' title='VS2005 SP1 problem'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8829915540202377088</id><published>2008-10-01T21:31:00.003+02:00</published><updated>2008-10-01T21:58:09.038+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AD'/><category scheme='http://www.blogger.com/atom/ns#' term='30f4011'/><category scheme='http://www.blogger.com/atom/ns#' term='simultaneous'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><title type='text'>Simultaneous AD sampling with dspic30f4011</title><content type='html'>Well, we're back on track!&lt;br /&gt;&lt;br /&gt;Today I had to prepare some software to pick up analog values from two inputs at same time.&lt;br /&gt;I used &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en023561"&gt;this&lt;/a&gt; board as a base. It has all necessary hardware: one potentiometer and one temperature senzor. Also there is DSPIC30F4013 included, but since it has only one sample an hold amplifier, it is therefor not possible to implement simultaneous AD sampling.&lt;br /&gt;We choose 4011 instead. It has 4 S/H amplifiers, so you can sample four analog channels at the same time. AD module itself can be very complex at first sight (it has 6 configuration registers), but when you realize how it works, it is a snack.&lt;br /&gt;So, 4011's AD module has one S/H which is input-independent, that is, you can chose for it any input you like. Rest of S/Hs have their inputs fixed, but there are two combinations (of three analog inputs) possible at one time. Beisides that, you can prepare two combinations of inputs and witch them with integrated multiplexer.&lt;br /&gt;Process is completly automatic; data is stored in internal AD buffer: once configured, you are noticed by interrupt flag which again is configurable: you can set after how many conversions it will be triggered. So when interrupt occures, you can be sure, that there is data waiting for you in the AD buffer. You can also choose between sequential and simultaneous input scan.&lt;br /&gt;AD is also fast: up to 1M sample. But in very specific conditions, though.&lt;br /&gt;Why would you use simultaneous sampling? Good example is electric power measurment: you use two channels; one per voltage and one per current. Values must be read exactly at the same time in order for calculation to be correct.&lt;br /&gt;It took me one hour to study and implement sequential sampling.&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8829915540202377088?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8829915540202377088/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8829915540202377088' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8829915540202377088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8829915540202377088'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/10/simultaneous-ad-sampling-with.html' title='Simultaneous AD sampling with dspic30f4011'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8606324276409869868</id><published>2008-09-29T12:03:00.002+02:00</published><updated>2008-09-29T12:15:08.073+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='PIC'/><title type='text'>PIC 18F4550 problem</title><content type='html'>Hello,&lt;br /&gt;&lt;br /&gt;just got back from vacation.&lt;br /&gt;Another PIC issue: it won't reset. I bought newest sample of microchip's USB demo board which has higher PIC18f revision than the one code was developed on.&lt;br /&gt;Suprise: it did not work. After 1 hour I figured out I have to press reset key on board to get PIC running. With same code that is working flawlessly!&lt;br /&gt;So if your tested code does not work, manually reset PIC. It might work then...!&lt;br /&gt;What is microchip doing???&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8606324276409869868?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8606324276409869868/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8606324276409869868' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8606324276409869868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8606324276409869868'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/pic-18f4550-problem.html' title='PIC 18F4550 problem'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-2632221488717321565</id><published>2008-09-21T11:08:00.002+02:00</published><updated>2008-09-21T11:11:27.637+02:00</updated><title type='text'>One year</title><content type='html'>One year of bloggin gproblems! Already? It's been that long? And so much trouble?! :)&lt;br /&gt;&lt;br /&gt;I am going on vacation tommorow. Destination: Djerba island, Tunisia. 7 day leasure....&lt;br /&gt;&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-2632221488717321565?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/2632221488717321565/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=2632221488717321565' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2632221488717321565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/2632221488717321565'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/one-year.html' title='One year'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-3562084457436152832</id><published>2008-09-16T11:06:00.007+02:00</published><updated>2008-10-01T07:52:05.433+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='candle'/><category scheme='http://www.blogger.com/atom/ns#' term='simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='flame'/><title type='text'>Candle flame simulation with PIC</title><content type='html'>The other day I was walking over gravey... cementary, and I have spotted all those electronic candles being simulated with one more or less random-blinking LED. I have decided I will try to implement more realistic flame simulation.&lt;br /&gt;Yesterday I have completed my first attempt. System is composed of PIC and two LEDs, red and yellow. Red LED is on 'lower' position and is ment to be a basis of a flame, while yellow lights up more seldomly, when 'red' flame goes out.&lt;br /&gt;Here is the clip of the first version:&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-5d3d4c417330367" 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://v6.nonxt6.googlevideo.com/videoplayback?id%3D05d3d4c417330367%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331689333%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D315BC1E2D0C0631749F23B5B1B71BBA0C1F1DD19.7BA80E3B463B328362540E2322A513C95760BDEA%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D5d3d4c417330367%26offsetms%3D5000%26itag%3Dw160%26sigh%3D_0fYvH0jHwosu90n1olG-kwVUeo&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://v6.nonxt6.googlevideo.com/videoplayback?id%3D05d3d4c417330367%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331689333%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D315BC1E2D0C0631749F23B5B1B71BBA0C1F1DD19.7BA80E3B463B328362540E2322A513C95760BDEA%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D5d3d4c417330367%26offsetms%3D5000%26itag%3Dw160%26sigh%3D_0fYvH0jHwosu90n1olG-kwVUeo&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;As you can see, LEDs are very tiny. We are considering an RGB LED usage. 'Flame' is more or less randomized, C &lt;span style="font-family:courier new;"&gt;random&lt;/span&gt;(&lt;span style="font-style: italic;"&gt;seed&lt;/span&gt;) function is used. All program has just couple of lines of code.&lt;br /&gt;&lt;br /&gt;This is for start. Stay tuned for progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3562084457436152832?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=5d3d4c417330367&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3562084457436152832/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3562084457436152832' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3562084457436152832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3562084457436152832'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/candle-flame-simulation-with-pic.html' title='Candle flame simulation with PIC'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-909545074533176968</id><published>2008-09-12T08:21:00.004+02:00</published><updated>2008-09-12T08:26:09.204+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grapher'/><category scheme='http://www.blogger.com/atom/ns#' term='updted'/><title type='text'>Updated motor tracking grapher</title><content type='html'>Let the image talk for itself:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SMoLRQECzoI/AAAAAAAAAGM/aJX4Gbqdbh0/s1600-h/motor.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SMoLRQECzoI/AAAAAAAAAGM/aJX4Gbqdbh0/s320/motor.JPG" alt="" id="BLOGGER_PHOTO_ID_5245017107023974018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And a sound sampler image:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SMoLbi2tMpI/AAAAAAAAAGU/uSfMTy7JRoM/s1600-h/audio.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SMoLbi2tMpI/AAAAAAAAAGU/uSfMTy7JRoM/s320/audio.JPG" alt="" id="BLOGGER_PHOTO_ID_5245017283866997394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Progress?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-909545074533176968?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/909545074533176968/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=909545074533176968' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/909545074533176968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/909545074533176968'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/updated-motor-tracking-grapher.html' title='Updated motor tracking grapher'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SMoLRQECzoI/AAAAAAAAAGM/aJX4Gbqdbh0/s72-c/motor.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-9118609056211638686</id><published>2008-09-10T22:18:00.003+02:00</published><updated>2008-09-10T22:24:32.472+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='update'/><title type='text'>Addition to 'Reading linear senzor' post</title><content type='html'>Hi,&lt;br /&gt;&lt;a href="http://marjandeveloperelectro.blogspot.com/2008/09/ad-to-com-converter-reading-linear.html"&gt;here&lt;/a&gt; I have posted a code. But just yesterday I have discovered it does not work correctly with newer generation of 18f4550 PIC.&lt;br /&gt;We crafted new PCB for this project. All elements have the same values as on demo board, but USART boudrate has gone to nearly 20Kb. I had to change parameter for baud generator  from 151 to 156. It works now.&lt;br /&gt;Damnit, Microchip! You are offering free compiler (which does not optimize code), but why won't you improve your existing desings instead of pushing a new products? You should stick to 8bit and 16bit cores, and evolve them. You have gone revolutionary instead! You really think that future is in 32bit design for you? I tell you it is a missed shot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-9118609056211638686?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/9118609056211638686/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=9118609056211638686' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/9118609056211638686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/9118609056211638686'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/addition-to-reading-linear-senzor-post.html' title='Addition to &apos;Reading linear senzor&apos; post'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4378215537932759358</id><published>2008-09-10T10:53:00.006+02:00</published><updated>2008-09-10T22:14:45.355+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bullshit'/><title type='text'>Solution, solution</title><content type='html'>Can sound be 'described' in programming languages we are using currently? And this does not go just with audio area. The same goes with hand-writing recognition, vision recognition, they have large deviations in raw data, too.&lt;br /&gt;It is obvious, that some parameters of speach are variable. Voice pitch, color, loudness,speed of talking, for example.&lt;br /&gt;How could one achieve voices distinction only by what has been spoken? Analyzing system should eliminate all other (disturbing) factors. Is this mathematically possible at all? If it is, it is possible for computer to recognise words. But if it is not, how is it that I have read some 7 years ago, that IBM (I think, don't hold me by the balls) has developed speech recognition system with 97% of recognition success? Or were those just phonems?&lt;br /&gt;Our brain is one great miracle of mother nature. But pay attention when you are listening. You will notice, that you can hear and understand just one single sound, and that you will not be able 'hear' more than one sound at once. You think I am wrong? Pay attention when you listen!&lt;br /&gt;OK, enough theory... Time to hit the sack...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4378215537932759358?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4378215537932759358/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4378215537932759358' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4378215537932759358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4378215537932759358'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/solution-solution.html' title='Solution, solution'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-4463077035722641067</id><published>2008-09-03T08:59:00.003+02:00</published><updated>2008-09-03T09:03:00.624+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speech recognition'/><title type='text'>Speech recognition</title><content type='html'>I picked up my currage and started this project on my own. Currently I am at 'displaying sound' stage. Since I am using Apple's Carbon framework which is very  new to me, progress is somewhat slow. At the moment.:) I am however able to store samples from microphone into file.&lt;br /&gt;Results are interesting: single spoken letter can be noted by human eye when samples are drawn. Computer however is still waiting for analyze to be performed... :)&lt;br /&gt;&lt;br /&gt;Will post updates. Stay on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-4463077035722641067?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/4463077035722641067/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=4463077035722641067' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4463077035722641067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/4463077035722641067'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/speech-recognition.html' title='Speech recognition'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5778265953227289516</id><published>2008-09-03T07:40:00.011+02:00</published><updated>2008-09-03T09:13:43.803+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AD'/><category scheme='http://www.blogger.com/atom/ns#' term='converter'/><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='linear senzor'/><title type='text'>AD to COM converter reading linear senzor</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;Yesterday, suddenly I needed results from AD to be read and displayed. I was testing a linear senzor model &lt;a href="http://www.beiduncan.com/html/products/linear/mini_sensors.htm#"&gt;9605 from DUNCAN&lt;/a&gt; (2cm span on 2KOhm resistnace). I had to test if 0.5mm distance movement could be detected.&lt;br /&gt;&lt;br /&gt;Since such devices can cost and we already implemented all necessary parts (AD, COM communication) in the past, we decided to build it. It took us an hour.&lt;br /&gt;We used &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en021940&amp;amp;part=DM163025"&gt;Microchip's USB demo board&lt;/a&gt;, which has all hardware required: COM interface and convenient AD inputs.&lt;br /&gt;&lt;br /&gt;This project is 'private', so I published it's code. It is not an example of coding design, but it &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; effective. Since speed was not the essence, it is written in C, but handy and skilled programmer should have no problems converting it into assembly code; exception would be a result printing, for which assembly samples can be found on internet.&lt;br /&gt;&lt;br /&gt;COM port is set to following parameters: 19200, no parity, 1 stop bit, 8 data bits.&lt;br /&gt;&lt;br /&gt;Here is the code (please add less-than and greater-than characters in includes; blogger removed them):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#include p18f4550.h&lt;br /&gt;#include usart.h&lt;br /&gt;#include adc.h&lt;br /&gt;#include stdio.h&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;/stdio.h&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;#pragma config CPUDIV = OSC1_PLL2, PLLDIV = 5,USBDIV = 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#pragma config FOSC = HSPLL_HS, IESO = OFF,PWRT = OFF,BOR = OFF&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;#pragma config WDT = OFF, MCLRE = ON,PBADEN = ON,LVP = OFF&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;void initSystem(void);&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;void main(void){&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;char com;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;char tekst[10]; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;int ad_rezult; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    initSystem(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    while(1){ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //main loop &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //wait for byte from USART, then read AD  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //and report result back &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //waiting for command &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        while(!DataRdyUSART()); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        com = getcUSART(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //read ad &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ConvertADC(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        while(BusyADC()); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        ad_rezult=ReadADC();  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;        //transmit result &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        sprintf(tekst,"%i\n\r",ad_rezult); &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        putsUSART(tekst); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //wait till finished&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        while(BusyUSART()); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;void initSystem(void){ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    TRISC = 0xBF;  //prepare port for USART&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    OpenUSART(USART_TX_INT_OFF &amp;amp; USART_RX_INT_OFF &amp;amp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            USART_ASYNCH_MODE &amp;amp; USART_EIGHT_BIT &amp;amp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            USART_BRGH_HIGH, 151); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   //AN3 is selected here. TAD and Tosc are middle values&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ADCON0 = 0x0D; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ADCON1 = 0x00; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ADCON2 = 0xBE; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;I cannot publish files for download (why not, google?), so if you cannot&lt;/span&gt; compile this source (if you don't own C18 package), please drop me a mail, and I will send you a HEX file for import.&lt;br /&gt;&lt;br /&gt;So, how it works?&lt;br /&gt;It initializes system first. USART is configured first by help of a C library. Neat and sweet, and it works. Then, I had to configure AD manually (not by C library), because it did not work and I did not have time to check why. All AD inputs are activated, there are no digital I/Os on their pins. AD is configured with middle reading and sampling time. AD's C library was handy latter on for reading and transferring data from AD later on.&lt;br /&gt;&lt;br /&gt;PIC then enters main loop, which waits for a reception of a character over COM port. When character is recieved, it &lt;span style="font-style: italic;"&gt;must&lt;/span&gt; be read, so all interrupt and buffer flags are cleared for next reception. Then, PIC measures voltage from AN3 (it was available on &lt;span style="font-style: italic;"&gt;our&lt;/span&gt; already crafted board, but please check yours and set apropriate input), and stores it in variable. This variable is then 'printed' into string with help of sprintf function (\n (new line) and \r (carriage return) control characters are used so result dislplays nice in windows terminal), and transmited back to PC over COM.&lt;br /&gt;&lt;br /&gt;Try it in windows terminal (or linux's minicom). When COM port is opened, press any key that can display a character (don't search for any key on keyboard, please), and you should see AD result promptly.&lt;br /&gt;Here is image from minicom on linux:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3OLOidqItrY/SL45CeqnuFI/AAAAAAAAAF8/-TWFZs1ul4Q/s1600-h/minicom.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_3OLOidqItrY/SL45CeqnuFI/AAAAAAAAAF8/-TWFZs1ul4Q/s320/minicom.png" alt="" id="BLOGGER_PHOTO_ID_5241689731060185170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With some additional code, application could be tailored to ability of analogue channel selection, so one could have all ADC inputs available. Also, there is a possibility of a USB connection. If interest is shown, I am prepared to do it.&lt;br /&gt;&lt;br /&gt;By the way: result differed for about 10 to 15 per 0.5mm movement, so I think it will do it's job....&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5778265953227289516?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5778265953227289516/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5778265953227289516' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5778265953227289516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5778265953227289516'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/09/ad-to-com-converter-reading-linear.html' title='AD to COM converter reading linear senzor'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SL45CeqnuFI/AAAAAAAAAF8/-TWFZs1ul4Q/s72-c/minicom.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-8779586582644345962</id><published>2008-08-28T19:48:00.014+02:00</published><updated>2008-08-29T07:45:01.548+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='core'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='DSPIC'/><title type='text'>DSPIC 30F core bug</title><content type='html'>Finally!!&lt;br /&gt;I have determined another error: in 'bit test skip if cleared' instruction.&lt;br /&gt;My code:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1:   ;bit 3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2:   bclr PORTA,#6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3:   btsc _addr_hi,#3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4:   bset PORTA,#6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;6:    ;bit 4;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;7:    bclr PORTA,#7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;8:    btsc _addr_hi,#4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;9:    bset PORTA,#7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If PORTA,#6 at line number 4 has being set, &lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;it was back to reset in line 7!!!&lt;/span&gt;&lt;/span&gt; Thus I had external RAM block errors (those bits were 2 among 5 of MSB address byte) and I was not able to properly display one million samples.&lt;br /&gt;By God's inspiration I fixed this with adding &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;nop&lt;/span&gt;&lt;/span&gt; instruction at line 5. Then, bit PORTA,#6 was not cleared in line 7. See it for yourself:&lt;br /&gt;&lt;br /&gt;Here are examples of two motors, but now there are one million points in each graph. Red line is rotor position error, and one revolution (saw tooth) is still 6666 samples long.&lt;br /&gt;One motor device:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SLeMmvK7SvI/AAAAAAAAAFs/ARQI1z40RU0/s1600-h/august2008.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SLeMmvK7SvI/AAAAAAAAAFs/ARQI1z40RU0/s320/august2008.JPG" alt="" id="BLOGGER_PHOTO_ID_5239811288594074354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This one is failed for sure, it cannot regulate position, thus speed is also inaccurate.&lt;br /&gt;2nd one:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3OLOidqItrY/SLeMmzl14pI/AAAAAAAAAF0/c0kM5YJCYGc/s1600-h/november_2007.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3OLOidqItrY/SLeMmzl14pI/AAAAAAAAAF0/c0kM5YJCYGc/s320/november_2007.JPG" alt="" id="BLOGGER_PHOTO_ID_5239811289780707986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This one does some position (and speed) regulation, but with HUGE delay.&lt;br /&gt;&lt;br /&gt;Cheers!!! I have lost month and a half because of Microchip's stupidity! And if my memory did not failed on me, it was not first core bug of that kind I have discovered. I think 16F family had similar problems. 18F family was initialized improperly (wrong oscillator clock source selected after being reprogrammed and debugged; we had to power PIC down, then it worked. This bug was fixed in later versions.)&lt;br /&gt;And again question arises: is it worth using Microchip products? Apparently not! Microchip Masters event in Barcelona has already been canceled because of lack of interest... Are you going down, Microchip?&lt;br /&gt;&lt;br /&gt;P.S.: Yellow lines (ideal position) are now in grey color.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8779586582644345962?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8779586582644345962/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8779586582644345962' title='Št. komentarjev: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8779586582644345962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8779586582644345962'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/08/dspic-core-error.html' title='DSPIC 30F core bug'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SLeMmvK7SvI/AAAAAAAAAFs/ARQI1z40RU0/s72-c/august2008.JPG' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-6003882963506199345</id><published>2008-08-25T07:27:00.023+02:00</published><updated>2008-08-27T08:12:14.455+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spinning'/><category scheme='http://www.blogger.com/atom/ns#' term='rotor'/><category scheme='http://www.blogger.com/atom/ns#' term='tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='difference'/><category scheme='http://www.blogger.com/atom/ns#' term='position'/><category scheme='http://www.blogger.com/atom/ns#' term='absolute'/><title type='text'>Tracking rotor position</title><content type='html'>Have you ever tried to determine difference between expected motor speed and it's actual speed? This is what I have been doing this weekend.&lt;br /&gt;I was implementing comparison between transfered angle results from encoder and expected (ideal) data.&lt;br /&gt;Bellow are pictures tracking grapher progress. Please note tha single tooth (axis revolution) is actually 6666 samples long!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CURRENT SPEED&lt;/span&gt; error:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SLJIJMSGrII/AAAAAAAAAEU/CXkpVQu18zY/s1600-h/error.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SLJIJMSGrII/AAAAAAAAAEU/CXkpVQu18zY/s320/error.jpg" alt="" id="BLOGGER_PHOTO_ID_5238328639338491010" border="0" /&gt;&lt;/a&gt;And a little graphical modification of it:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SLJYMyDY2GI/AAAAAAAAAEc/NyU41UmedRk/s1600-h/error_1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SLJYMyDY2GI/AAAAAAAAAEc/NyU41UmedRk/s320/error_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5238346293202966626" border="0" /&gt;&lt;/a&gt;This one displays accumulated error, which is differnece between &lt;span style="font-weight: bold;"&gt;SHOULD BE&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;ACTUAL &lt;/span&gt;position' :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SLJzuePqj8I/AAAAAAAAAEk/YYzclXemKu0/s1600-h/error_acc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SLJzuePqj8I/AAAAAAAAAEk/YYzclXemKu0/s320/error_acc.JPG" alt="" id="BLOGGER_PHOTO_ID_5238376558815252418" border="0" /&gt;&lt;/a&gt;And finaly, results combined:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SLKfMoGg5jI/AAAAAAAAAE8/6ljRPaWCLU0/s1600-h/combined.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SLKfMoGg5jI/AAAAAAAAAE8/6ljRPaWCLU0/s320/combined.JPG" alt="" id="BLOGGER_PHOTO_ID_5238424355857294898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Software is far from complete, but results are visible. Those vertical red lines were 360+ degrees errors.  But it is clear that the motor is spinning too slow (negative error) at the beginning, then accelerates being too fast (positive error; it is trying to reach target speed), and 'escapes' at the end, again being too slow.&lt;br /&gt;&lt;br /&gt;But most important: from the last image is obvious, that driver checks only speed of motor, and does not try to catch and hold overall position of motor axis. This is BAAAAD news, because motor is used in radar capture, which thus cannot work.&lt;br /&gt;Blue signal is actual angle data (barely visible being covered with yellow 'ideal' data), yellow signal is expected angle data.Red signal is position error and green is speed error.&lt;br /&gt;&lt;br /&gt;This software is begging for modificatitons, but it allready prooved itself very usefull.&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6003882963506199345?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6003882963506199345/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6003882963506199345' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6003882963506199345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6003882963506199345'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/08/tracking-motor-spinning.html' title='Tracking rotor position'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SLJIJMSGrII/AAAAAAAAAEU/CXkpVQu18zY/s72-c/error.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-7089927279721217510</id><published>2008-08-22T13:52:00.005+02:00</published><updated>2008-08-25T14:35:35.162+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='512'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='size'/><title type='text'>Incredible!</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Damn&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;am&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;pissed&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;off&lt;/span&gt;!&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;After&lt;/span&gt; 2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;weeks&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;work&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;able&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;track&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;communication&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;error&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;between&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;DNP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;board&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;DSPIC&lt;/span&gt;.&lt;br /&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;am&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;currently&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;transfering&lt;/span&gt; 1MB &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;of&lt;/span&gt; 16bit &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;data&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;points&lt;/span&gt;. First 64K &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;transfered&lt;/span&gt; normal. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;When&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;started&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;with&lt;/span&gt; 1MB transfer, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;noticed&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;differences&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;between&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;expected&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;actual&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;data&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;They&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;were&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;random&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;exactly&lt;/span&gt; 512 in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;size&lt;/span&gt;.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Since&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;sample&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;ADC&lt;/span&gt; / store &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;samples&lt;/span&gt; in 2MB RAM/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;send&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;them&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;over&lt;/span&gt; SPI/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;write&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;them&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;into&lt;/span&gt; file, (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;wow&lt;/span&gt;, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;just&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;read&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;that&lt;/span&gt;!)  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;can&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;imagine&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;how&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;tiresome&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;experience&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;that&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;After&lt;/span&gt; one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;week&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;determined&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;that&lt;/span&gt; bit &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;error&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;is&lt;/span&gt; not &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;case&lt;/span&gt;.&lt;br /&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;suspected&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;everything&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;AD&lt;/span&gt;, RAM, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;communication&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;even&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;both&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;compilers&lt;/span&gt; (CC30 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;and&lt;/span&gt; gnu &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;for&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;ARM&lt;/span&gt;). It &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_82"&gt;turned&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_83"&gt;out&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_84"&gt;that&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_85"&gt;had&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_86"&gt;recompile&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_87"&gt;driver&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_88"&gt;for&lt;/span&gt; SPI &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_89"&gt;peripherial&lt;/span&gt; on linux side; it had no delay between two SPI transfers and was therefore unable to transfer recieved data properly.&lt;br /&gt;Communication therefore now works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7089927279721217510?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7089927279721217510/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7089927279721217510' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7089927279721217510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7089927279721217510'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/08/incredible.html' title='Incredible!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8410746617870577816</id><published>2008-08-06T22:11:00.005+02:00</published><updated>2008-08-07T07:41:15.276+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spinning analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='Motor analysis'/><title type='text'>Analyzing forreign motor driver with encoder</title><content type='html'>This is the task: customer provided us with a brushless motor and a driver for it. However he suspected that spinning is not consistant. It was on us to find that out.&lt;br /&gt;We took &lt;a href="http://marjandeveloperelectro.blogspot.com/2008/03/aeas-7000-now-runs-with-ds-pic30f.html"&gt;this&lt;/a&gt; as a base. We only expanded it with 2MB external ram, and connected it onto linux embedded board used for &lt;a href="http://marjandeveloperelectro.blogspot.com/2008/04/getting-data-via-spi-from-pic-onto.html"&gt;this&lt;/a&gt; project to get first 65000 points. We were able to see 19 revolutions of a motor. Customer however wants to see 70 revolutions and their parralaxes. No problem, we have 2 million points waiting for him! :)&lt;br /&gt;It was all done within an hour. Results are displayed in MS Excell, but since it's graphs cannot handle more than 32K points, this is the result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3OLOidqItrY/SJqHRzXlO2I/AAAAAAAAAEE/r2wPNfNaroA/s1600-h/graf.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_3OLOidqItrY/SJqHRzXlO2I/AAAAAAAAAEE/r2wPNfNaroA/s320/graf.JPG" alt="" id="BLOGGER_PHOTO_ID_5231642657060895586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, motor is spinning with very constant angle speed. It is now necessary to write a program that would determine linearity and compare ideal signal against actual state.&lt;br /&gt;Customer however was not able to measure this because of lack of proper hardware. I am sure it is not cheap to get or compose a device capable of taking 2M points of 16bit data from encoder via SPI with 200KHz rate, recalculate it from Gray into absolute position and then transfer it into computer. I can only imagine what would one use for that purpose. National instruments devices hardware? Imagine: you have to sample BEMF from all three phases plus hall timings - all signals being synchronised! How much would such system cost? Not to mention software for analysis...&lt;br /&gt;Regards!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8410746617870577816?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8410746617870577816/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8410746617870577816' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8410746617870577816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8410746617870577816'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/08/analyzing-forreign-motor-driver-with.html' title='Analyzing forreign motor driver with encoder'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SJqHRzXlO2I/AAAAAAAAAEE/r2wPNfNaroA/s72-c/graf.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-3983770269798221744</id><published>2008-08-06T15:11:00.004+02:00</published><updated>2008-08-06T15:18:12.996+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compiz'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Gnome compiz desktop</title><content type='html'>They say image is worth more than 1000 words. So there you have it.&lt;br /&gt;This is how ubuntu running gnome + compiz looks like.&lt;br /&gt;This is ordinary desktop:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3OLOidqItrY/SJmjmBJNLbI/AAAAAAAAADM/FE6XfC0zrow/s1600-h/namizje0.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_3OLOidqItrY/SJmjmBJNLbI/AAAAAAAAADM/FE6XfC0zrow/s320/namizje0.png" alt="" id="BLOGGER_PHOTO_ID_5231392315704946098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is 'cubic' desktop selection (ctrl+alt+mouse movements):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SJmjmxiYwvI/AAAAAAAAADU/ODstRxgUaWc/s1600-h/ozadje.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SJmjmxiYwvI/AAAAAAAAADU/ODstRxgUaWc/s320/ozadje.png" alt="" id="BLOGGER_PHOTO_ID_5231392328695464690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3OLOidqItrY/SJmjnlAUZwI/AAAAAAAAADk/AZA780DHOJQ/s1600-h/ozadje4.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_3OLOidqItrY/SJmjnlAUZwI/AAAAAAAAADk/AZA780DHOJQ/s320/ozadje4.png" alt="" id="BLOGGER_PHOTO_ID_5231392342511216386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is ctrl+alt+down combination. Displays desktops in-line:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3OLOidqItrY/SJmjnz0vSOI/AAAAAAAAADs/MqSCa9LLiOQ/s1600-h/ozadje5.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_3OLOidqItrY/SJmjnz0vSOI/AAAAAAAAADs/MqSCa9LLiOQ/s320/ozadje5.png" alt="" id="BLOGGER_PHOTO_ID_5231392346489178338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is alt+tab combo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SJmjnPMLM5I/AAAAAAAAADc/E8WMcYLMvGU/s1600-h/ozadje1.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SJmjnPMLM5I/AAAAAAAAADc/E8WMcYLMvGU/s320/ozadje1.png" alt="" id="BLOGGER_PHOTO_ID_5231392336655365010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And this is win-tab combination:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3OLOidqItrY/SJmkNtB8m7I/AAAAAAAAAD0/SNU8GNSO_2Q/s1600-h/OZADJE.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_3OLOidqItrY/SJmkNtB8m7I/AAAAAAAAAD0/SNU8GNSO_2Q/s320/OZADJE.png" alt="" id="BLOGGER_PHOTO_ID_5231392997500558258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Impressive, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-3983770269798221744?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/3983770269798221744/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=3983770269798221744' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3983770269798221744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/3983770269798221744'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/08/gnome-compiz-desktop.html' title='Gnome compiz desktop'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SJmjmBJNLbI/AAAAAAAAADM/FE6XfC0zrow/s72-c/namizje0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-8035073918379451222</id><published>2008-07-24T12:22:00.003+02:00</published><updated>2008-07-24T12:28:27.197+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='does java work?'/><title type='text'>Does java work??</title><content type='html'>I tried two (2) so called self-executables (jar extension) examples, and I was met with 100% failure. First one was ENIAC simulator, another one was a thing called castor, that has something to do with database.&lt;br /&gt;Anyway, this is an output:&lt;br /&gt;&lt;br /&gt;/opt/jdk1.6.0_07/bin/java -jar castor-1.2-examples.jar&lt;br /&gt;Failed to load Main-Class manifest attribute from&lt;br /&gt;castor-1.2-examples.jar&lt;br /&gt;&lt;br /&gt;This is so sweet. It looks like you have to be some sort of magitian to make java work. Or wait, maybe it is ment to run in windows? I dear not try that.&lt;br /&gt;&lt;br /&gt;I tried to contact castor support (it is a story by itself, try to locate help on their site), and the answer I got was: 'You are not on our mailing list'. Sweeeeet...&lt;br /&gt;&lt;br /&gt;Bye bye java! I am so sick of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8035073918379451222?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8035073918379451222/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8035073918379451222' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8035073918379451222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8035073918379451222'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/07/does-java-work.html' title='Does java work??'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1119359551929200012</id><published>2008-07-15T10:50:00.004+02:00</published><updated>2008-07-15T11:12:02.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sucks'/><category scheme='http://www.blogger.com/atom/ns#' term='hate'/><title type='text'>I hate java!!!</title><content type='html'>I do I do I do!!!&lt;br /&gt;Following is based on 1 year experince with java development. Which still continues. For now.&lt;br /&gt;Who invented this complicated, bloated, gigantic pile of sh... classes, interfaces, beans, entities, jars, sars, wars, mars, parse? Ladies and gentleman, the answer is: tie-man and programmer-in-one!&lt;br /&gt;Why is this java thing so popular? I think because it's excellent for sales managers. No better thing to sale but one that no customer knows nothing about. And it also secures looong time dependency.&lt;br /&gt;It's so complicated that you will never start your first project without help or else you will need couple of hours! Without of use of eclipse IDE, that is. Add several hours more for that.&lt;br /&gt;It is so slow that you cannot use it for stand-alone application.&lt;br /&gt;It is so unreliable that you cannot use it for ERP system with more than 20 users. If not so, then developers had enough of learning all the latest technologies and they took a shortcut. I don't blame them. I completely understand them.&lt;br /&gt;If this is the way to ease software development and programming, software market has missed it's path.&lt;br /&gt;Who needs a C and assembly experienced programmer? I am sick of java altogether...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1119359551929200012?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1119359551929200012/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1119359551929200012' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1119359551929200012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1119359551929200012'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/07/i-hate-java.html' title='I hate java!!!'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-6859967932422063924</id><published>2008-07-05T10:18:00.007+02:00</published><updated>2008-07-10T19:06:42.441+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdce913'/><category scheme='http://www.blogger.com/atom/ns#' term='clock sweeping'/><category scheme='http://www.blogger.com/atom/ns#' term='Clock Pro'/><title type='text'>CDCE913 clock sweeping</title><content type='html'>Hi, just got back from a week vacation. Sunny weather on the sea side, unlike here.&lt;br /&gt;Our work however continues!&lt;br /&gt;We have finaly succeeded with CDCE913 programmable oscillator. As I have written before, forget Clock Pro. I implemented parameter calculation completely on-spot (within PIC), and it all works now. Except for clock sweeping while data packet is being written.&lt;br /&gt;Here it goes:&lt;br /&gt;Following image shows clock sweeping while packet is being written into CDCE913.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3OLOidqItrY/SG8vNYM5UbI/AAAAAAAAACY/EMsEiqF0Jrs/s1600-h/print_57.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3OLOidqItrY/SG8vNYM5UbI/AAAAAAAAACY/EMsEiqF0Jrs/s320/print_57.jpg" alt="" id="BLOGGER_PHOTO_ID_5219442400027038130" border="0" /&gt;&lt;/a&gt;This image is showing more detailed view:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3OLOidqItrY/SG8vNFJF34I/AAAAAAAAACQ/QWJky_M55BY/s1600-h/print_56.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3OLOidqItrY/SG8vNFJF34I/AAAAAAAAACQ/QWJky_M55BY/s320/print_56.jpg" alt="" id="BLOGGER_PHOTO_ID_5219442394910809986" border="0" /&gt;&lt;/a&gt;I hope that stepper will be able to digest this magnitude of sweeping. Stay tuned to find out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-6859967932422063924?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/6859967932422063924/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=6859967932422063924' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6859967932422063924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/6859967932422063924'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/07/cdce913-clock-sweeping.html' title='CDCE913 clock sweeping'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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/_3OLOidqItrY/SG8vNYM5UbI/AAAAAAAAACY/EMsEiqF0Jrs/s72-c/print_57.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-5583177572314784680</id><published>2008-06-28T09:35:00.006+02:00</published><updated>2008-06-28T09:50:18.677+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdce913'/><category scheme='http://www.blogger.com/atom/ns#' term='software bug'/><category scheme='http://www.blogger.com/atom/ns#' term='useless'/><category scheme='http://www.blogger.com/atom/ns#' term='Clock Pro'/><title type='text'>TI's Clock Pro nearly useless</title><content type='html'>Well, to explain: it sucks. I tried to set PLL's registers by it's proposal, but PLL in CDCE913 refused to obey; it halted.&lt;br /&gt;Finnaly, my colegue took calculation in his own hands and gave me N, P, Q and R values, wich turned out to be correct. I used Clock Pro only for registers assembly. At this task, it did not fail. Ouput frequncies reported by software after 'update' actually matched those calculated by hand, and those by chip itself. Software however was unable to calculate register values for 33MHz, while by-hand it was possible.&lt;br /&gt;Another example of theory and actual state difference. Besides that, machine was rebooted at least once because of this software. Also, it is slow, iresponsive, complicated and... buggy. Alltogether: this is a BIG black spot on TI for me. CDCE913 looks to be of some use (although it is a shame, that it sets register values as soon as it recieves them; reception should be packet-bufffered, for as such, successive clock changes are not possible), it's output clock is accurate and stable.&lt;br /&gt;Hope this will help some poor soul...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5583177572314784680?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5583177572314784680/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5583177572314784680' title='Št. komentarjev: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5583177572314784680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5583177572314784680'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/tis-clock-pro-nearly-useless.html' title='TI&apos;s Clock Pro nearly useless'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8882473525658674684.post-5487029838786486286</id><published>2008-06-25T21:50:00.009+02:00</published><updated>2008-07-15T11:09:23.309+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='cdce913'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='microchip DSPIC'/><title type='text'>CDCE913 problems</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;this IC is mysterious indeed. It does not want to work as it should. We have even downloaded TI's Clock Pro software which displayed that external crystal resonator clock should be dividable without problems. Bot no, no way! I exported and copied whole block of registers from 0x01 to 0x1F from Clock Pro into CDCE, after I was able to set clock on screen as I wanted . It did not work on real hardware. So now what? Is it software malfunction? Or is a chip failure?! We have lost nearly 6 hours so far trying to make it divide clock as we wanted. Or better to say: as software emulation did. Does anyone have any help to offer?&lt;br /&gt;Many times I have seen differences between theory and practice pertaining integrated circuits. I dear to say it's always the case, whatever marketing says. I really hate those fuckers...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5487029838786486286?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5487029838786486286/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5487029838786486286' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5487029838786486286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5487029838786486286'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/cdce913-problems.html' title='CDCE913 problems'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-116357247206565869</id><published>2008-06-21T16:29:00.009+02:00</published><updated>2008-07-11T07:56:37.249+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linear technology'/><category scheme='http://www.blogger.com/atom/ns#' term='incomplete whiepapers'/><category scheme='http://www.blogger.com/atom/ns#' term='LTC6904'/><title type='text'>And addition to 'programmable oscillator' post</title><content type='html'>Hi all,&lt;br /&gt;seems like Linear Technogies just can't get out of it's skin! I sensed a bit of mislead again in their documentation!&lt;br /&gt;For example: in timings table of the LTC6904 there is repeated start condition mentioned, however, there is no repeated start specified nowhere in protocol. Another thing is, that this chip becomes irresponsive, if being called too frequently; there must be  at least 1mS delay between calls. This caused serious problems with stepper spinning; motor hanged when frequence step occured, because start time is specified and frequency steps were simply too big!&lt;br /&gt;And another thing to bear in mind: if IC becomes irresponsive, it must be &lt;span style="font-weight: bold;"&gt;manually&lt;/span&gt; reset, and it goes by no other means as take it off the power. Linear Technology, do you hear me?!&lt;br /&gt;Since stability ain't IC's strongest side, we dumped it's design, and decide to include Texas Instrument's CDCE913 with chrystal oscillator and three individual outputs. SMB data exchange already works, now it is studiing of it's registers.&lt;br /&gt;And another thing to make you yellous: I am writing this article in beautifull environment, on a farm-inn, with most excellent food infront of me and the nicest waitress you can imagine!&lt;br /&gt;Keep up the good work. &lt;span style="font-style: italic;"&gt;All&lt;/span&gt; the good work:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-116357247206565869?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/116357247206565869/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=116357247206565869' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/116357247206565869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/116357247206565869'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/and-add-on-to-previous-post.html' title='And addition to &apos;programmable oscillator&apos; post'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-5033066590614941210</id><published>2008-06-19T08:08:00.006+02:00</published><updated>2008-07-11T07:57:44.442+02:00</updated><title type='text'>Addition to LIN interpreter</title><content type='html'>Hi all,&lt;br /&gt;here are two code samples wich were used with my LIN interpreter for Trinamic testing.&lt;br /&gt;Following code: it spins motor to 0 position, then starts spinning it towards 30000. If motor was somehow blocked (ans stall detected), script finished. That worked pretty well.&lt;br /&gt;Code:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vmax=12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;irun=12    'running parameters set&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;goto 0    'go to 0 position&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'when reached,exit loop&lt;br /&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position=0 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;loop&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;'spin motor&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;goto 30000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;absthr=1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;minsamples=4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'if stall detected, end script&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if status.absstall=1 then &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;And next example should spin motor endlessly, but because of Trinamic's driver's bug, it did not work. Since driver has 16bit position counter (only for several revolutions) and it always seeks shortest way to reach destination (wich include changement of spinning direction), movement was impelemented in parts of circle, to make it 'travel' through entire position register without changing spinning direction (before it reached it's target position, driver was forced to move to next one). This even worked, but extremly random.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'Author: Marjan Mrak&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'Date: 21.4.2005&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'Purpose: endless motor spinning with LIN Trinamic driver &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;vmax=15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;irun=11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;accel=15    'runtime parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;absthr=1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;minsamples=2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;goto 0    'reset position&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position=0 then        'first movement part&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    goto 30000    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    exit do        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'main loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'irun=12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position&gt;=15000 then &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    GOTO 45000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'vmax=14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'irun=7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position&gt;=30000 then &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    goto 60000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'vmax=13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position&gt;=47000 then     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    goto 17000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        end if&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'vmax=15&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if position&gt;1000 and position &lt;20000&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;'position must be set 'after' zero&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;    goto 30000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    exit do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        end if&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'endless loop&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-5033066590614941210?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/5033066590614941210/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=5033066590614941210' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5033066590614941210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/5033066590614941210'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/addition-to-lin-interpreter.html' title='Addition to LIN interpreter'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-7021487475552690810</id><published>2008-06-16T21:36:00.003+02:00</published><updated>2008-06-16T21:52:31.878+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmable oscillator'/><category scheme='http://www.blogger.com/atom/ns#' term='LTC6904'/><title type='text'>Programmable oscillator with LTC6904</title><content type='html'>Just as I finished with previous post, our technitian came up with solution. It's Linear Technologies LTC6904, programmable oscillator. It's easy programmable with single word. Just call it with WR bit, and send frequency word after that.&lt;br /&gt;Since I had all I2C rutines at hand, implementing was a snap. But this time, it was hardware causing problems. Because of spikes in I2C communication, LTC6904 stopped responding on I2C calls after couple of them. After reset it was back to normal, but I had never experienced such problems. It's hardware time!&lt;br /&gt;But as I have said, this IC is easy to master. It has one big drawback: it's accurancy is low. Too low for our need. We already have a Texas Instruments IC at hand wich uses chrystal oscillator, so it should be accurate enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-7021487475552690810?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/7021487475552690810/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=7021487475552690810' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7021487475552690810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/7021487475552690810'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/programmable-oscillator-with-ltc6904.html' title='Programmable oscillator with LTC6904'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-8605579161987832548</id><published>2008-06-16T19:12:00.004+02:00</published><updated>2008-06-16T21:56:20.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brushless motor'/><category scheme='http://www.blogger.com/atom/ns#' term='3 phase'/><category scheme='http://www.blogger.com/atom/ns#' term='DAC'/><title type='text'>3-phase DAC output for brushless</title><content type='html'>Hi all,&lt;br /&gt;this project is so simple that I am not sure I should publish it at all... It is only addition of another DAC channel and reprogramming a sinus table for all three channels. It worked from scratch. Signals are in 120 deg shift. Since they must be synchronized, it was neccessery to add a trigger rutine. But there is still another problem: acceleration. As you know, neither stepper nor brushless cannot start revolving at full speed. So we now have to make a programmable clock generator. Our technitian is already studiing ICs from Linear Technologies. I'll post results ASAP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-8605579161987832548?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/8605579161987832548/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=8605579161987832548' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8605579161987832548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/8605579161987832548'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/3-phase-dacoutput-for-brushless.html' title='3-phase DAC output for brushless'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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-8882473525658674684.post-1316643822689633445</id><published>2008-06-13T10:18:00.005+02:00</published><updated>2008-06-13T10:31:22.960+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microchip PIC'/><category scheme='http://www.blogger.com/atom/ns#' term='LIN'/><title type='text'>Crafting a virtual machine software for LIN system</title><content type='html'>Tody it is remembering of the past, and has nothing to do with reality. :)&lt;br /&gt;This was an ancinet project (at least 3 or 4 years ago). It worked (that is, LIN devices obeyed) , but because of bug in LIN Trinamic drivers wich were used (they stopped responding for no reason)  it turned out to be dead-end. Actually, we were quite in business with LIN protocol because of it's 'networking' ability.&lt;br /&gt;We used PIC16F84 as COM to LIN interface made by us.  Software was some sort of BASIC-like scripting language real time interpreter with loops and if-s together with setters and getters; no OP. Thus, no compilation was neccessary. It was made entirely in VB6, allthough I prefer to use FLEX and BISON since then. I will post some images and script samples as soon as I find them.&lt;br /&gt;Short time after this my team implemented our own networking protocol. It was capable to drive anything with packet sending abilities and peer-to-peer nature. We called it &lt;span style="font-weight: bold;"&gt;mNet&lt;/span&gt; and we did not bother with some IP stack implementation. Protocol was on a good way to be put in producton, but then our software direction took a turn away from automotive industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8882473525658674684-1316643822689633445?l=marjandeveloperelectro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marjandeveloperelectro.blogspot.com/feeds/1316643822689633445/comments/default' title='Objavi komentarje'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8882473525658674684&amp;postID=1316643822689633445' title='Št. komentarjev: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1316643822689633445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8882473525658674684/posts/default/1316643822689633445'/><link rel='alternate' type='text/html' href='http://marjandeveloperelectro.blogspot.com/2008/06/crafting-virtual-machine-software-for.html' title='Crafting a virtual machine software for LIN system'/><author><name>Marjan Mrak</name><uri>http://www.blogger.com/profile/15893528874801918578</uri><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></feed>
