<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Stellarcore.com</title>
	<atom:link href="http://www.stellarcore.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stellarcore.com</link>
	<description>Hobby Electronics</description>
	<pubDate>Thu, 09 Oct 2008 16:40:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>LED Desktop Clock Prototype</title>
		<link>http://www.stellarcore.com/2008/08/29/led-desktop-clock-prototype/</link>
		<comments>http://www.stellarcore.com/2008/08/29/led-desktop-clock-prototype/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 16:39:02 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Desktop LED Clock]]></category>

		<category><![CDATA[clock]]></category>

		<category><![CDATA[led]]></category>

		<category><![CDATA[microcontroller]]></category>

		<category><![CDATA[pic]]></category>

		<category><![CDATA[prototype]]></category>

		<category><![CDATA[real time clock]]></category>

		<category><![CDATA[rgb]]></category>

		<category><![CDATA[rtc]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=70</guid>
		<description><![CDATA[I made a quick little video that demonstrates the prototype of my desktop clock.  In the next few days I’ll be posting a project page with schematics, the board layout, firmware, and instructions on how to build your own.  Later, I may introduce a kit that can be purchased that would include all [...]]]></description>
			<content:encoded><![CDATA[<p>I made a quick little video that demonstrates the prototype of my desktop clock.  In the next few days I’ll be posting a project page with schematics, the board layout, firmware, and instructions on how to build your own.  Later, I may introduce a kit that can be purchased that would include all of the parts needed to build this clock.</p>
<p>And without any further yammering, here is the video:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/-hxZRCponks&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/-hxZRCponks&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2008/08/29/led-desktop-clock-prototype/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flylogic Engineering - Security Analysis</title>
		<link>http://www.stellarcore.com/2008/07/28/flylogic-engineering-security-analysis/</link>
		<comments>http://www.stellarcore.com/2008/07/28/flylogic-engineering-security-analysis/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:12:51 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[hardware]]></category>

		<category><![CDATA[IC-design]]></category>

		<category><![CDATA[pic]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[silicon]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=59</guid>
		<description><![CDATA[
I&#8217;ve found this interesting blog by Flylogic Engineering, a company that focuses on hardware security analysis.  In their blog, they examine several popular microcontrollers and other ICs pointing out some interesting details in their design and possible attack vectors.  In their analysis, they take a look at security at the hardware level by extracting the [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_61" class="wp-caption alignnone" style="width: 267px"><a href="http://www.flylogic.net/blog/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.flylogic.net');"><img class="size-medium wp-image-61" title="PIC16C558 " src="http://www.stellarcore.com/wp-content/uploads/2008/07/pic558c_sm-257x300.jpg" alt="PIC16C558 magnified 100x" width="257" height="300" /></a><p class="wp-caption-text">PIC16C558 magnified 100x</p></div>
<p>I&#8217;ve found this interesting blog by <a href="http://www.flylogic.net" onclick="javascript:pageTracker._trackPageview ('/outbound/www.flylogic.net');">Flylogic Engineering</a>, a company that focuses on hardware security analysis.  In their blog, they examine several popular microcontrollers and other ICs pointing out some interesting details in their design and possible attack vectors.  In their analysis, they take a look at security at the hardware level by extracting the IC die from its package and taking a look at the silicon under a microscope.  They then remove each metalization layer, one at a time, photographing each layer as they make their way down to the lower levels.  I find this fascinating and highly recommend that you <a href="http://www.flylogic.net/blog/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.flylogic.net');">take a look.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2008/07/28/flylogic-engineering-security-analysis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Toobo Embedded Linux Project</title>
		<link>http://www.stellarcore.com/2008/07/21/toobo-embedded-linux-project/</link>
		<comments>http://www.stellarcore.com/2008/07/21/toobo-embedded-linux-project/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 15:50:13 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[arm]]></category>

		<category><![CDATA[embedded]]></category>

		<category><![CDATA[kernel]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mp3]]></category>

		<category><![CDATA[sbc]]></category>

		<category><![CDATA[sta015]]></category>

		<category><![CDATA[TMS-7250]]></category>

		<category><![CDATA[toobo]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=55</guid>
		<description><![CDATA[
I thought I&#8217;d do a quick post about a project that I found a few days ago, the Toobo embedded linux project.  Vijay is using a TMS-7250 arm based SBC to build an MP3 player using the STA015 mp3 player chip and a graphic LCD display.  I plan on following his progress closely and maybe [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osembedded.com" onclick="javascript:pageTracker._trackPageview ('/outbound/www.osembedded.com');"><img class="alignnone size-full wp-image-57" title="ts-7250 single board computer" src="http://www.stellarcore.com/wp-content/uploads/2008/07/ts-7250.gif" alt="" width="250" height="195" /></a></p>
<p>I thought I&#8217;d do a quick post about a project that I found a few days ago, the <a href="http://osembedded.com" title="Toobo Embedded Linux Project" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/osembedded.com');">Toobo embedded linux</a> project.  Vijay is using a TMS-7250 arm based SBC to build an MP3 player using the STA015 mp3 player chip and a graphic LCD display.  I plan on following his progress closely and maybe I&#8217;ll build my own Toobo after he&#8217;s got something workable.  I&#8217;ve also added a link to osembedded.com in my blogroll to the right.</p>
<p>I&#8217;ve always been interested in embedded Linux and one of these days I&#8217;d love for the chance to sit down and play with it in a bit more detail.  During my internship, I&#8217;ve tinkered a bit with porting newer versions of the Linux kernel to a custom Arm SBC and found it to be quite challenging; I was not able to port the latest kernel and ended up going as far as I could by porting the existing kernel patches I had from 2.6.8 to 2.6.12.  After 2.6.12 the differences in organization in the kernel was too much for the same patches to be worked in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2008/07/21/toobo-embedded-linux-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>LED Desktop Clock Proposal</title>
		<link>http://www.stellarcore.com/2008/07/03/led-desktop-clock-proposal/</link>
		<comments>http://www.stellarcore.com/2008/07/03/led-desktop-clock-proposal/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 16:52:43 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Desktop LED Clock]]></category>

		<category><![CDATA[clock]]></category>

		<category><![CDATA[ieee]]></category>

		<category><![CDATA[led]]></category>

		<category><![CDATA[microcontroller]]></category>

		<category><![CDATA[pcb]]></category>

		<category><![CDATA[pic]]></category>

		<category><![CDATA[rgb]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/2008/07/03/led-desktop-clock-proposal/</guid>
		<description><![CDATA[
I&#8217;m writing this post as a proposal for an umIEEE student workshop project.  The project is my LED Pocketwatch, now renamed to become a Desktop Clock.   This project is meant as a fun excercise that will give participants some surface mount soldering experience and some knowledge on how a PIC operates and the design [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellarcore.com/2008/07/03/led-desktop-clock-proposal/desktop-clock-rendering/" title="Desktop Clock Rendering" rel="attachment wp-att-46"><img src="http://www.stellarcore.com/wp-content/uploads/2008/07/render-thumb.png" alt="Desktop Clock Rendering" /></a></p>
<p>I&#8217;m writing this post as a proposal for an <a href="http://www.umieee.com" onclick="javascript:pageTracker._trackPageview ('/outbound/www.umieee.com');">umIEEE</a> student workshop project.  The project is my LED Pocketwatch, now renamed to become a Desktop Clock.   This project is meant as a fun excercise that will give participants some surface mount soldering experience and some knowledge on how a PIC operates and the design process used to create your own projects using EagleCAD to create both home-made etched PCBs and professional quality ordered PCBs.</p>
<p>The Image you see above is a 3D rendering of the latest design of the PCB.  The rendering is pretty much true to what I expect to build except for a missing inductor and the wrong capacitor in the PSU, which can be seen along with more details in the photo of the prototype after the jump.</p>
<p><span id="more-42"></span></p>
<p>The clock contains three basic subsystems; the power supply, microcontroller and finally the real time clock.  The  power supply draws its current from a single AA battery and uses a boost switching mode power supply to increase the output voltage from the 1.5V provided by the battery to an ample 5V that is used by the microcontroller.  The advantage of this type of power supply is that it can operate at very low voltages, down to near 0.7V which allows you to power the clock from AA batteries that other devices may consider to be already dead.  In order to conserve power, the clock will not always be displaying the time; after about a minute or so of display, the microcontroller will enter sleep mode and deactivate the power supply.  When the user pushes the middle button, it will awaken and display the time for another minute.  As an alternative to the AA battery, you can solder a short USB cable that will allow the display to be powered continuously.</p>
<p><img src="http://www.stellarcore.com/wp-content/uploads/2008/07/imgp1701-thumb.jpg" alt="Desk Clock Prototype" /><a href="http://www.stellarcore.com/wp-content/uploads/2008/07/imgp1729-thumb.jpg" title="Desktop Clock - Running"><img src="http://www.stellarcore.com/wp-content/uploads/2008/07/imgp1729-thumb.jpg" alt="Desktop Clock - Running" /></a></p>
<p>The PIC16F877A microcontroller is the brains behind the clock.  The main responsibility of the PIC is to interface to the real time clock and drive the RGB leds.  The LEDs each have four connections; a common anode and a cathode for red, green, and blue.   The way the LEDs are multiplexed, each LED has its own anode that is connected to an output pin on the PIC.  The cathodes are then all tied together and connected through current limiting resistors to three more output pins.  The PIC controls the display by selecting an LED by pulling its anode high and then sending three pulse width modulated signals to the RGB cathodes.  By carefully choosing the duty cycle of the PWM signals, virtually any colour can be displayed.</p>
<p>The Real Time Clock is the time keeper for the clock.  It has its own independant 32.768kHz crystal that is divided and useed to accurately keep track of time.  It also has its own CR2032 3V lithium backup battery that is used to keep the time while the main power is not available.</p>
<p>With this clock design, each hand of the clock (hours, minutes, and secconds) will be assigned a colour.  The face of the clock will display each hand and as the hands gradually overlap, it will mix the colours to display the time.   The second and minute hands will also adjust their brightness between two LEDs on the clock to proportionately display the time when it is in between positions.</p>
<p>Now that you are a familiarized with the general idea of my project, I&#8217;ll get into some details on the propsed soldering workshop.   For the workshop,  participants would be given their very own kit of components, solder, PCB, and battery.  The workshop would start with a presentation where I go over the basic anatomy and design of the clock, and discuss the schematic and PCB.</p>
<p>Next, participants will be guided step-by-step through the procedure required to solder each of the components on the board, using several techniques along the way.   We will have to find enough fine-tipped soldering irons for everybody to use.   As the boards are assembled,  we will test independant subsystems with a multimeter and visual inspection. Experienced solderers will be on hand to assist with people who may have trouble with some of the smaller components.</p>
<p>Half-way through, we will break for pizza or subway lunch and return to the workshop in the afternoon.  Once the boards are assembled, we will begin programming the boards with pre-written source code.  The code will be made available and discussed during the process.  This time will also be used to troubleshoot and repair any boards that are not working.</p>
<p>Once the boards are assembled and working,  the floor will be opened for questions, ideas, and suggestions for future projects or improvements to this one.</p>
<p>As for cost, currently I have priced out the projects to be approximately $35 per unit, but I expect this to go down a bit if/when I find a cheaper source for a couple of the more expensive components.   At this price point, I would suggest that the cost for umIEEE members would be around $20 - $25 and for non-members $30 - $35.  For members, umIEEE would be expected to sponsor the remainder of the costs which would be $10-$15 per person (including the cost of Lunch).  I would expect to host the workshop on two consecutive Saturdays; the first of which will have 10 spots and the second with 15 spots available.</p>
<p>If you have any questions, please email me directly or post your comments to this page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2008/07/03/led-desktop-clock-proposal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>LED Pocketwatch</title>
		<link>http://www.stellarcore.com/2007/03/15/led-pocketwatch/</link>
		<comments>http://www.stellarcore.com/2007/03/15/led-pocketwatch/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 00:00:00 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Desktop LED Clock]]></category>

		<category><![CDATA[clock]]></category>

		<category><![CDATA[led]]></category>

		<category><![CDATA[pic]]></category>

		<category><![CDATA[pocketwatch]]></category>

		<category><![CDATA[rgb]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=41</guid>
		<description><![CDATA[

Ok, first of all, let me make this clear. I am not giving up on the MP3 Player just yet.  I&#8217;ve decided to work on a simpler project for a while and take a bit of a break from the MP3 player.  I&#8217;ve had the idea to make this pocketwatch for quite a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellarcore.com/wp-content/uploads/2007/03/watch_complete.png" rel="lightbox"></a><br />
<img src="http://www.stellarcore.com/wp-content/uploads/2007/03/watch_complete_small.png" border="0" alt="" width="450" /></p>
<p>Ok, first of all, let me make this clear. I am not giving up on the MP3 Player just yet.  I&#8217;ve decided to work on a simpler project for a while and take a bit of a break from the MP3 player.  I&#8217;ve had the idea to make this pocketwatch for quite a while, and finally decided to act on it.</p>
<p>Here&#8217;s the jist of the project.  12 RGB LEDs in a clock face (originally I wanted 60, but this proved to be technically not feasible) pattern.  If you dont know what an RGB LED is, its basically three LEDs in one package that share a common cathode.  With this, you can send three PWM signals to each colour and effectively achieve any colour you can come up with (which is practically limited to around 255 colours).</p>
<p>So my plan is basically this, each hand of a clock will be represented by a different colour.  As the hands move and overlap, the colours will be added.  When a hand is in between numbers, different shades of the colour will be used (for instance, there will be 5 shades that represent the minute hand.  At 12:00, the uppermost LED will be lit fully.  at 12:01, it will dim a bit and the 1:00 LED will light by the same amount.  This progresses until at 12:05 the 12:00 LED is off and the 1:00 LED is on completely).</p>
<p>I have four major goals that I wish to accomplish with this project:</p>
<ol>
<li>First and foremost, I want to use this as a chance to design and implement a PCB.  I think this PCB may be significantly simpler than my MP3 player, and is a good learning exercise.</li>
<li>Similarily, I will use this as a chance to practice my surface mount soldering.  I swear, I&#8217;m getting better. =)</li>
<li>I want to finally get the damned MAX1675 DC-DC converter working.  This thing has been causing me nothing but headaches, and I think I&#8217;ve figured out why.  The silly inductor that is required to begin the resonation that increases the voltage is hard to come by.  I&#8217;ve tried (and ordered) several different inductors and coils to test this with, none of which worked.  Recently, I saw on a website another person using this device with an inductor that is nothing like the tiny ones I&#8217;ve been trying.  It was a big obvious looking coil of wire.  I&#8217;ve ordered some more inductors to play with, and I seriously hope I get this solved soon (for both the pocketwatch and the MP3 player).</li>
<li>I will use this as a chance to test out a few little tricks and ideas that I&#8217;ve picked up here and there, such as testing in circuit serial programming, the behaviour of ground planes on my PCB (hopefully it behaves nicely), i<sup>2</sup>c devices (such as the real time clock), etc&#8230;</li>
</ol>
<p>Anyway, thats enough ranting for now.  I&#8217;ll post more on this later, when I&#8217;ve got something cool to show.  My first step, is to get a prototype working on a breadboard.  I&#8217;ve rigged up 9 of the LEDs so far in a grid pattern and hope to get the pic multiplexing different colours to them at a reasonable speed with enough power left to do things like calculate hand positions and read the RTC.   Unfortunately the PIC only has 2 PWM channels, which means that I&#8217;ll have to come up with my own PWM channels and bit bang them (substantially slower, but it should still be adequate).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2007/03/15/led-pocketwatch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Update</title>
		<link>http://www.stellarcore.com/2006/11/08/update/</link>
		<comments>http://www.stellarcore.com/2006/11/08/update/#comments</comments>
		<pubDate>Wed, 08 Nov 2006 06:10:15 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Mp3 Player]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=38</guid>
		<description><![CDATA[Eagle Schematic (a work in progress)
PCB Layout (a work in progress)
School and work have really been consuming most of my life since September, but this past week or so I&#8217;ve found some time to pick up where I left off with the MP3 player.   
My FAT16 driver is now working a bit better. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellarcore.com/wp-content/uploads/2006/11/schematic.png"><img src="http://www.stellarcore.com/wp-content/uploads/2006/11/schematic.png" width="450"></a><i>Eagle Schematic (a work in progress)</i><br/><br />
<a href="http://www.stellarcore.com/wp-content/uploads/2006/11/pcb.png"><img src="http://www.stellarcore.com/wp-content/uploads/2006/11/pcb.png" width="450"></a><i>PCB Layout (a work in progress)</i><br/></p>
<p>School and work have really been consuming most of my life since September, but this past week or so I&#8217;ve found some time to pick up where I left off with the MP3 player.   </p>
<p>My FAT16 driver is now working a bit better.  I fixed a few annoying bugs and have updated my read method so that I can tell when I&#8217;m at the end of a file.  I&#8217;ve been working on a newer version of the read method that is a bit more useful.  Previously, in one method it would read the entire file and output the data directly to the LCD, 32 characters at a time (overwriting the previously read data every sector).   This is nifty as a proof of concept but not really too useful.    </p>
<p>Instead, I&#8217;m working on a new version of the read routine that reads a sector of the file, copies it to a user specified buffer, updates some indecies in the file structure, and then returns the total length of the data returned (which is always 512 bytes until the last chunk).   So you call the read method multiple times until you&#8217;re at the end of the file.  This will let me actually *use* the data instead of immediately throwing it away.   I decided to use a second buffer (in addition to the physical layer buffer that stores data straight from the SD card) so that I don&#8217;t have to worry about overwriting data with future SD read requests.   This isn&#8217;t so important now when I&#8217;m only doing one thing at a time, but in the final version I may want to be able to browse the SD card while playing an MP3 (for instance).</p>
<p>The MP3 decoder has been interfaced for a while, but I&#8217;m having a bit of difficulty configuring it.  It requires a special sequence of writes to configure the decoder with details on the clock and other undocumented settings (over 2000 such writes).   Right now I&#8217;m storing the file in the root directory of the SD card and will open the file, read its contents, and transfer it over to the decoder.  Eventually I may just store this configuration data in ROM, but for now it&#8217;s a good opportunity to test my FAT driver.  Once I&#8217;ve got the configuration file sent over, I&#8217;ll be able to send the RUN command and hopefully the decoder will start asking for data.</p>
<p>I&#8217;ve also been playing around with EAGLE a bit, drawing up my schematic and working on a PCB design.   It&#8217;s really nowhere near ready yet, but I thought I&#8217;d mention it.   I&#8217;ll post some images of the schematic and PCB layout in the next day or so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2006/11/08/update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The worlds worst eBook Reader</title>
		<link>http://www.stellarcore.com/2006/09/08/the-worlds-worst-ebook-reader/</link>
		<comments>http://www.stellarcore.com/2006/09/08/the-worlds-worst-ebook-reader/#comments</comments>
		<pubDate>Fri, 08 Sep 2006 15:24:42 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Mp3 Player]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=36</guid>
		<description><![CDATA[I haven&#8217;t posted in a while, but I have made some progress.  I&#8217;ve been working on my fat driver and it is coming along very nicely.  Right now I can navigate the contents of the SD card and read any file.  
As a test, I put a 4mb file on the sd [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t posted in a while, but I have made some progress.  I&#8217;ve been working on my fat driver and it is coming along very nicely.  Right now I can navigate the contents of the SD card and read any file.  </p>
<p>As a test, I put a 4mb file on the sd card to try and read, and I can successfully read the entire contents of the file on the two line display, effectively making this the worlds worst eBook reader. =)  I&#8217;ve also converted the fat16 code to use structs so that I don&#8217;t have as messy of an interface between the methods.  My next step is to figure out when I&#8217;m at the end of a file and stop reading at the appropriate spot.  Currently, I stop reading at the end of the last cluster in the file, but most files won&#8217;t fill up the entire last cluster.</p>
<p>On another front, I&#8217;ve managed to interface the STA013 to the pic.  Unfortunately I couldn&#8217;t use the PIC&#8217;s serial module for both SPI and I2C as I had originally planned, so instead I am using the compiler to do software I2C.  It is considerably slower, but still more than adequate for just configuring the decoder.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2006/09/08/the-worlds-worst-ebook-reader/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Goodies!</title>
		<link>http://www.stellarcore.com/2006/08/17/new-goodies/</link>
		<comments>http://www.stellarcore.com/2006/08/17/new-goodies/#comments</comments>
		<pubDate>Fri, 18 Aug 2006 03:06:04 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Mp3 Player]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=35</guid>
		<description><![CDATA[
L to R: PIC18LF4585 DIPs and SMT, 2GB SD Kingston SD card, USB SD Card Reader, SD Card Ejector Sockets
I&#8217;ve sampled (and purchased) a few more goodies for the project.  Most importantly, I&#8217;ve sampled some new 18LF4585 PIC&#8217;s.  The major difference with these PIC&#8217;s is that they have more RAM (roughly 3.3Kb as [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.stellarcore.com/wp-content/uploads/2006/08/IMGP0028.JPG" alt="Goodies!"/><br />
<b>L to R: PIC18LF4585 DIPs and SMT, 2GB SD Kingston SD card, USB SD Card Reader, SD Card Ejector Sockets</b></p>
<p>I&#8217;ve sampled (and purchased) a few more goodies for the project.  Most importantly, I&#8217;ve sampled some new 18LF4585 PIC&#8217;s.  The major difference with these PIC&#8217;s is that they have more RAM (roughly 3.3Kb as apposed to 368 bytes offered by the 16F877A), they run faster 40Mhz after enableing the Phase Lock Loop Multiplier,  an internal 8Mhz oscillator (wow, that&#8217;s pretty cool), and  few power saving features.<br />
<a href="http://www.stellarcore.com/mp3_player/pic18F4585.pdf" onclick="javascript:pageTracker._trackPageview ('/downloads/pdf/pic18f4585.pdf');"> <img border="0" src="http://www.stellarcore.com/wp-content/uploads/2006/06/acroread.gif" /> PIC18F4585 Datasheet</a></p>
<p>Next, I&#8217;ve sampled new Crystals (not pictured above) from <a href="http://www.foxonline.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.foxonline.com');">Fox Electronics</a>.  Among my new crystals are two 10Mhz, two 20Mhz, and two 14.7456Mhz.  The latter will be used for the STA013 MP3 decoder.   </p>
<p>Read more for details on the new card slots,  reading the new memory card, and my plans for tomorrow&#8230;.<br />
<span id="more-35"></span><br />
The nice SD Card slots above were sampled from the good people at <a href="http://www.molex.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.molex.com');">Molex</a>.  These are much nicer than the ones that I paid for earlier, and I have more of them.  They are very tricky to use in a prototype without soldering them onto a PCB, but it can be done by very finely soldering a 9 pin header to the leads (be very careful not to melt the plastic.. I ruined my first card slot that way).  When you&#8217;re done soldering, wrap the whole mess in some black electrical tape to keep it sturdy.  Finally, be very careful not to bend it any way that could result in breaking the connection.</p>
<p>At the bottom of the picture you will also see my new 2Gb SD card and USB card reader (no more reading/writing to my SD cards through the battery chewing monster that is my digital camera).</p>
<p>As for an update,  I&#8217;ve finally managed to get my PIC16LF877&#8217;s to work at a lower voltage.  The trick was to disable brown out detection.  Now I&#8217;m able to run the PIC at 3.3Volts (or lower) so that I can avoid the unsavoury business of level conversion.   Luckily the LCD is quite happy to pick up 3.3V signals.  A quick rewire of the power circuitry on my wirewrap board and it was happily humming away.   </p>
<p>On another note, I&#8217;ve bumped the frequency up to 20Mhz with the new crystals I&#8217;ve sampled (they are much nicer small package crystals that will look good on the finished project).   At this new frequency, my peak transfer rate should be around 610Kb/s. </p>
<p>I tried my new SD card right away in my apparatus, only to find that it wouldn&#8217;t properly read.  Instead of recieving 0&#215;01 to CMD0, the SD card seemed to be sending 0&#215;80.  After a while of pulling my hair out I realized that 0&#215;80 is just 0&#215;01 shifted left one (note that the bus idle is high, so it would capture one more high on the far left and one less high on the far right bit cells).  A quick change to make the PIC read on the falling edge instead of the rising edge of the clock, and the problem was fixed.  Theres a bit of other strange behaviour with the new card.  For some reason it only sends data on a read command when the block length is set to 512.  This would be a bit annoying if I were still using the 16F877, but since I&#8217;m switching, it shouldn&#8217;t be a problem for long.</p>
<p>Tomorrow I will be switching to the new PIC and putting the finishing touches on my FAT driver.  If time permits, I may also begin to wire up the MP3 decoder, which will be my next step.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2006/08/17/new-goodies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FAT Filesystem and Wirewrap</title>
		<link>http://www.stellarcore.com/2006/08/14/fat-filesystem/</link>
		<comments>http://www.stellarcore.com/2006/08/14/fat-filesystem/#comments</comments>
		<pubDate>Tue, 15 Aug 2006 04:23:51 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Mp3 Player]]></category>

		<category><![CDATA[fat]]></category>

		<category><![CDATA[fat16]]></category>

		<category><![CDATA[filesystem]]></category>

		<category><![CDATA[lcd]]></category>

		<category><![CDATA[mp3]]></category>

		<category><![CDATA[pic]]></category>

		<category><![CDATA[sd]]></category>

		<category><![CDATA[wirewrap]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=32</guid>
		<description><![CDATA[
Drag the circle around to see the other side of the board.  Click outside of the circle to &#8220;flip&#8221; the board.
Progress has been booming the past couple of days (or weeks for that matter).  I&#8217;ve finally gotten around to taking a couple more pictures of my new wirewrap version of the board (pictured [...]]]></description>
			<content:encoded><![CDATA[<div style="width: 384px; height: 512px; position: relative;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="384" height="512" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="wirewrap" /><param name="align" value="left" /><param name="allowScriptAccess" value="sameDomain" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://www.stellarcore.com/wp-content/uploads/2006/06/mp3_wirewrap.swf" /><embed id="wirewrap" type="application/x-shockwave-flash" width="384" height="512" src="http://www.stellarcore.com/wp-content/uploads/2006/06/mp3_wirewrap.swf" bgcolor="#ffffff" quality="high" allowscriptaccess="sameDomain" align="left"></embed></object></div>
<p><strong>Drag the circle around to see the other side of the board.  Click outside of the circle to &#8220;flip&#8221; the board.</strong><br />
Progress has been booming the past couple of days (or weeks for that matter).  I&#8217;ve finally gotten around to taking a couple more pictures of my new wirewrap version of the board (pictured above).   As can be seen in the photo I&#8217;ve got my FAT driver to work for the most part.   What you see is the LCD displaying the contents of the root directory on the SD card.   When you click one of the two buttons, it displays the next entry in the directory, and the other button, &#8220;opens&#8221; the selected item (currently it can only open directories).</p>
<p>One achievement that I&#8217;ve had that I am quite proud of is support for long file names.  You may recall back in the days of DOS and early versions of Windows, you could only have an 8 character filename and a 3 character extension with considerable restrictions on characters (must all be upper case, etc&#8230;)  They added a bit of a hack to the standard to allow for longer filenames as used and loved by all of us today.</p>
<p>I thought I&#8217;d post a couple links to invaluable resources that I&#8217;ve found that detail the FAT filesystem (ordered by usefulness).</p>
<ol>
<li><a href="http://home.teleport.com/~brainy/fat16.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/home.teleport.com');">Fat16 Structure Information</a></li>
<li><a href="http://en.wikipedia.org/wiki/Fat16" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">File Allocation Table - Wikipedia</a></li>
<li><a href="http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx" onclick="javascript:pageTracker._trackPageview ('/outbound/www.microsoft.com');">Microsoft&#8217;s FAT32 File System Specification</a></li>
</ol>
<p>On another note, I really should have researched the PIC16F877A more thouroughly before embarking on my adventure.  In the datasheet, it says 368&#215;8 bytes of Ram.  I foolishly interpreted this as 2944 bytes of RAM.  Upon closer inspection of the datasheet (the memory map region specifically), it turns out that it is actually just 368 bytes of ram.   After running through the compiler and leaving space for its own scratch pad&#8217;s and temporary variables,  I only have enough space left for a 64 byte buffer.    After deciding to support long file names, I had to cut this in half so that I could have some room to store the long file names.   Suffice it to say, that space is scarce and as such, performance is taking a hit (smaller buffer means more frequent memory calls).    Because of this serious limitation I&#8217;ve decided to switch to the PIC18F4585 which is very simmilar except that it has around 4Kb of RAM and can run at 40Mhz.</p>
<p>Until my newly sampled PICs arrive, I&#8217;ll have to continue to suffer with memory management issues.  I&#8217;m hoping for a serious speed increase when the new chip arrives (I&#8217;ll use a 512byte buffer instead of a 32byte buffer and will be able to store more information at once).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2006/08/14/fat-filesystem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Hello!&#8221;, said the SD card.</title>
		<link>http://www.stellarcore.com/2006/08/10/hello-said-the-sd-card/</link>
		<comments>http://www.stellarcore.com/2006/08/10/hello-said-the-sd-card/#comments</comments>
		<pubDate>Fri, 11 Aug 2006 04:47:09 +0000</pubDate>
		<dc:creator>cypher</dc:creator>
		
		<category><![CDATA[Mp3 Player]]></category>

		<guid isPermaLink="false">http://www.stellarcore.com/?p=31</guid>
		<description><![CDATA[
The Master Boot Record of my SD card starting at address 0&#215;1BE (the important stuff). Bonus points to anyone who replies with comments stating what each byte of this block means.
Well,  sorry that I haven&#8217;t posted lately, but I&#8217;ve been really quite busy.   I&#8217;ve had quite a bit of success and the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellarcore.com/wp-content/uploads/2006/08/IMGP0023.JPG"><img src="http://www.stellarcore.com/wp-content/uploads/2006/08/IMGP0023.JPG" width="450"></a><br />
<b>The Master Boot Record of my SD card starting at address 0&#215;1BE (the important stuff). Bonus points to anyone who replies with comments stating what each byte of this block means.</b></p>
<p>Well,  sorry that I haven&#8217;t posted lately, but I&#8217;ve been really quite busy.   I&#8217;ve had quite a bit of success and the mp3 player project has gone through several key changes.  </p>
<p>First, and most importantly, I&#8217;ve successfully (and reliably!) interfaced to the SD card.  This took some work.  On the breadboard pictured in one of the previous posts, I was getting some strange interference on the data line of the SD card.   Because of this, I decided to switch to wire wrapping for my prototyping.  It&#8217;s my first time wire wrapping so its still a bit sloppy, but is still leagues ahead of the breadboard in terms of expandability and neatness.  After a few more headaches, I realized the problem;  the first couple hundred bytes of my SD card are 0&#215;00.  I chose a more suitable address to read and it appeared to be working.   After a few more tweaks it was reading consistantly and I was able to bump up the peak rate to around 305Kb/s. </p>
<p>Now I am on to the challenge of writing a FAT16 driver.  Expect another post on details of this in a day or two.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellarcore.com/2006/08/10/hello-said-the-sd-card/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
