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

<channel>
	<title>blog.world3.net &#187; electronics</title>
	<atom:link href="http://blog.world3.net/category/electronics/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.world3.net</link>
	<description>たとえ溺れても梦はゆめでしかない</description>
	<lastBuildDate>Thu, 02 Feb 2012 15:23:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>RFM12B bit stream sync issue</title>
		<link>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/</link>
		<comments>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 16:04:00 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=435</guid>
		<description><![CDATA[Been working with cheap RFM12B modules at work and discovered something interesting about them. A couple of things actually, the first of which is that the datasheet for the Si4420 IC it uses is much better. The main issue is that the serial data stream you get when receiving is not always aligned to the [...]]]></description>
			<content:encoded><![CDATA[<p>Been working with cheap RFM12B modules at work and discovered something interesting about them. A couple of things actually, the first of which is that the datasheet for the Si4420 IC it uses is much better. The main issue is that the serial data stream you get when receiving is not always aligned to the bytes you transmitted.</p>
<p>The SPI interface only allows you to read 8 bits at a time from the FIFO, but you can pull nFFS low and then clock bits out individually without the need for a read command. The technique I use is to start reading bits that way when the RFM12B pulls its interrupt line low until I have the complete sync pattern. At that point I know I am properly aligned and can start using the SPI bus again.</p>
<p>The ARSSI signal is useful. To make good measurements trigger the ADC immediately after starting an SPI read command. On the &#8216;scope the level looks flat during receiving, but in reality I have noticed that sometimes I get the first few bytes correctly and then the stream deteriorates into noise. Still investigating that one, there are plenty of parameters to experiment with.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/12/rfm12b-bit-stream-sync-issue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMEGA TWI (I2C) bus pull-ups</title>
		<link>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/</link>
		<comments>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:32:47 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=423</guid>
		<description><![CDATA[The XMEGA 128A1 and XPLAINED hardware guide both suggest that TWI should work with the internal port pull-up resistors. Those pull ups are 50K+ and don&#8217;t pull enough for most devices. In short external pull-ups, say 10K, are essential.]]></description>
			<content:encoded><![CDATA[<p>The XMEGA 128A1 and XPLAINED hardware guide both suggest that TWI should work with the internal port pull-up resistors. Those pull ups are 50K+ and don&#8217;t pull enough for most devices. In short external pull-ups, say 10K, are essential.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/11/xmega-twi-i2c-bus-pull-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the XMEGA DMA controller</title>
		<link>http://blog.world3.net/2011/11/using-the-xmega-dma-controller/</link>
		<comments>http://blog.world3.net/2011/11/using-the-xmega-dma-controller/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 11:47:09 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=421</guid>
		<description><![CDATA[Finally got the XMEGA DMA controller on an ATxmega128A3 working. There is not much example code for it and the datasheet is not very clear, so I wrote this. The datasheet and examples don&#8217;t really explain the terminology well. A transaction is the complete cycle of the DMA controller. To start a transaction you load [...]]]></description>
			<content:encoded><![CDATA[<p>Finally got the XMEGA DMA controller on an ATxmega128A3 working. There is not much example code for it and the datasheet is not very clear, so I wrote this.</p>
<p>The datasheet and examples don&#8217;t really explain the terminology well. A transaction is the complete cycle of the DMA controller. To start a transaction you load up the control registers and enable the DMA channel. It will then respond to triggers. The transaction ends when TRFCNT * REPCNT bytes have been transferred.</p>
<p>A block is a way of dividing the transaction up to fit your buffer size. If you just want to fill one buffer from start to finish you can set the block size in TRFCNT to the full size of your buffer. There are not many situations where you would want to use blocks smaller than one whole transaction, so for simplicity you can often just ignore them and look at transactions only.</p>
<p>The burst length is the number of bytes copied in one go by the DMA controller and is set with the BURSTLEN bits in CTRLA. Often it is used to read/write 16 bit SFRs such as the ADC result or the DAC output level. You always want to access those 16 bit words in one go rather than as two 8 bit bytes and the burst length lets you do that.</p>
<p>Now comes the poorly documented bit. First we have the single shot mode bit in CTRLA (bit 2 SINGLE). If set every time the DMA channel is triggered it transfers a single burst of data, e.g. 2 bytes if you set BURSTLEN to 2BYTE. If it isn&#8217;t set the DMA channel does into free running mode and simply transfers bursts as fast as possible until the transaction ends. So if you want to save ADC readings into a buffer like I am you want single shot mode triggered by the ADC.</p>
<p>Next let&#8217;s look at repeat mode. In repeat mode the DMA controller transfers REPCNT blocks of data. To keep it simple let&#8217;s say you only have one buffer and intend to fill it in one go, so you set the block size to the buffer size. If you are not in repeat mode the buffer will be filled once and then the transaction will end and the DMA channel will be disabled. If you are in repeat mode the DMA channel will perform REPCNT block transfers, and since you set your block size to the buffer size that means it is the number of times the buffer will be filled consecutively. If you are in repeat mode and you set REPCNT to zero the DMA channel will repeat forever.</p>
<p>Now keep in mind that even with repeat mode enabled the DMA controller still has to be triggered. In normal mode one trigger transfers an entire buffer&#8217;s worth of data, and in single shot mode each trigger transfers one burst of data.</p>
<p>Finally we have double buffering mode. Double buffering basically alternates between filling two buffers. When one transaction is complete the DMA channel automatically stops and its partner starts. This action is independent of repeat mode, and will set the transaction complete flag so that you can detect when it happens.</p>
<p>Note 1. You need to look at the transaction complete flags, not the DMA channel active or pending flags, if you want to know when the channel has finished and the buffer is ready for processing.</p>
<p>Note 2. If you want to use a timer to trigger a DMA channel then you must enable that timer&#8217;s interrupt. You can give it a null interrupt handler (e.g. ISR(TCC1_OVF_vect){} or just RETI in assembler) but it does have to actually be enabled and triggering, otherwise the DMA channel will not be triggered either. That doesn&#8217;t apply to other peripherals such as the ADC, it seems to be just the timers.</p>
<pre style="padding-left: 30px;">PORTA.DIRCLR = PIN7_bm;
PORTA.OUTCLR = PIN7_bm;

ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc | ADC_CH_GAIN_1X_gc;
ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN7_gc;
adc_wait_8mhz(&amp;ADCA);
ADCA.EVCTRL = ADC_SWEEP_0_gc | ADC_EVSEL_0123_gc | ADC_EVACT_CH0_gc; // event channel 0 triggers ADC channel 0
ADCA.CTRLA |= ADC_ENABLE_bm;

// set TCC1 to 11024Hz overflow, actually 11019.2838Hz (-0.052% error)
TCC1.CTRLA = 0; // stop if running
TCC1.CNT = 0;
TCC1.PER = 0x02D5;

EVSYS.CH0MUX = EVSYS_CHMUX_TCC1_OVF_gc; // trigger on timer overflow

// reset DMA controller
DMA.CTRL = 0;
DMA.CTRL = DMA_RESET_bm;
while ((DMA.CTRL &amp; DMA_RESET_bm) != 0)
;
// configure DMA controller
DMA.CTRL = DMA_CH_ENABLE_bm | DMA_DBUFMODE_CH01_gc; // double buffered with channels 0 and 1

// channel 0
// **** TODO: reset dma channels
DMA.CH0.REPCNT = 0;
DMA.CH0.CTRLA = DMA_CH_BURSTLEN_2BYTE_gc | DMA_CH_SINGLE_bm | DMA_CH_REPEAT_bm; // ADC result is 2 byte 12 bit word
DMA.CH0.ADDRCTRL = DMA_CH_SRCRELOAD_BURST_gc | DMA_CH_SRCDIR_INC_gc | // reload source after every burst
DMA_CH_DESTRELOAD_TRANSACTION_gc | DMA_CH_DESTDIR_INC_gc; // reload dest after every transaction
DMA.CH0.TRIGSRC = DMA_CH_TRIGSRC_ADCA_CH0_gc;
DMA.CH0.TRFCNT = 2048; // always the number of bytes, even if burst length &gt; 1
DMA.CH0.DESTADDR0 = (( (uint16_t) buffer_a) &gt;&gt; 0) &amp; 0xFF;
DMA.CH0.DESTADDR1 = (( (uint16_t) buffer_a) &gt;&gt; 8) &amp; 0xFF;
DMA.CH0.DESTADDR2 = 0;
DMA.CH0.SRCADDR0 = (( (uint16_t) &amp;ADCA.CH0.RES) &gt;&gt; 0) &amp; 0xFF;
DMA.CH0.SRCADDR1 = (( (uint16_t) &amp;ADCA.CH0.RES) &gt;&gt; 8) &amp; 0xFF;
DMA.CH0.SRCADDR2 = 0;

// channel 1
DMA.CH1.REPCNT = 0;
DMA.CH1.CTRLA = DMA_CH_BURSTLEN_2BYTE_gc | DMA_CH_SINGLE_bm | DMA_CH_REPEAT_bm; // ADC result is 2 byte 12 bit word
DMA.CH1.ADDRCTRL = DMA_CH_SRCRELOAD_BURST_gc | DMA_CH_SRCDIR_INC_gc | // reload source after every burst
DMA_CH_DESTRELOAD_TRANSACTION_gc | DMA_CH_DESTDIR_INC_gc; // reload dest after every transaction
DMA.CH1.TRIGSRC = DMA_CH_TRIGSRC_ADCA_CH0_gc;
DMA.CH1.TRFCNT = 2048;
DMA.CH1.DESTADDR0 = (( (uint16_t) buffer_b) &gt;&gt; 0) &amp; 0xFF;
DMA.CH1.DESTADDR1 = (( (uint16_t) buffer_b) &gt;&gt; 8) &amp; 0xFF;
DMA.CH1.DESTADDR2 = 0;
DMA.CH1.SRCADDR0 = (( (uint16_t) &amp;ADCA.CH0.RES) &gt;&gt; 0) &amp; 0xFF;
DMA.CH1.SRCADDR1 = (( (uint16_t) &amp;ADCA.CH0.RES) &gt;&gt; 8) &amp; 0xFF;
DMA.CH1.SRCADDR2 = 0;

DMA.CH0.CTRLA |= DMA_CH_ENABLE_bm;
TCC1.CTRLA = TC_CLKSEL_DIV1_gc; // start timer, and in turn ADC

for (i = 0; i &lt; 20; i++)
{
while (!(DMA.INTFLAGS &amp; DMA_CH0TRNIF_bm));
DMA.INTFLAGS = DMA_CH0TRNIF_bm;
TERM_tx_char('A');

while (!(DMA.INTFLAGS &amp; DMA_CH1TRNIF_bm));
DMA.INTFLAGS = DMA_CH1TRNIF_bm;
TERM_tx_char('B');
}</pre>
<p>In the example the code outputs &#8216;A&#8217; or &#8216;B&#8217; when each buffer is full.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2011/11/using-the-xmega-dma-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accuracy of clocks for timekeeping</title>
		<link>http://blog.world3.net/2010/12/accuracy-of-clocks-for-timekeeping/</link>
		<comments>http://blog.world3.net/2010/12/accuracy-of-clocks-for-timekeeping/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 19:09:19 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=364</guid>
		<description><![CDATA[The MSF set clock I built earlier this year was using the AVR&#8217;s 16MHz crystal for timekeeping. It was fine during the warmer months but recently as temperatures fell it started to loose accuracy. By the late evening it could be as much as 30 seconds out, so I decided to add a new reference [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://denki.world3.net/msf_clock.html">MSF set clock</a> I built earlier this year was using the AVR&#8217;s 16MHz crystal for timekeeping. It was fine during the warmer months but recently as temperatures fell it started to loose accuracy. By the late evening it could be as much as 30 seconds out, so I decided to add a new reference clock with greater accuracy.</p>
<p>After evaluating a few different options I decided to use a CMOS <a href="www.fairchildsemi.com/ds/CD/CD4060BC.pdf">4060 14 stage ripple counter</a> with a 32768Hz watch crystal. My experiments showed a very high degree of accuracy (better than 0.005%) at very low cost. The exact component values used for the resistors and capacitors did not seem to make much difference (±0.002%) either. Once installed in the clock case the environment was a bit harsher than my test bench due to EM and supply ripple, much of which is generated by the multiplexed display. Long time readers (ha) may recall that the display has to be turned off during MSF reception because of the noise it creates. Despite that the clock is now accurate to within 2 seconds per day, and since it is synchronised every night that is more than adequate.</p>
<p>For non-synchronised clocks a more accurate time source would be required for long term stability. Using the mains 50Hz frequency is a popular option. Realistically getting much better than 2 seconds/day is going to require some shielding and a well filtered power supply. Temperature does not seem to be as critical for watch crystals but even over room temperature ranges it will be an issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/12/accuracy-of-clocks-for-timekeeping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playstation Beatmania controller tested</title>
		<link>http://blog.world3.net/2010/08/playstation-beatmania-controller-tested/</link>
		<comments>http://blog.world3.net/2010/08/playstation-beatmania-controller-tested/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 19:02:18 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>
		<category><![CDATA[microcontrollers]]></category>
		<category><![CDATA[Retro Adapter]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=333</guid>
		<description><![CDATA[I got a Beatmania DJ turntable controller for the Playstation and it works perfectly with the Retro Adapter. It&#8217;s actually pretty simple; it emulates a digital pad. When the wheel is turned it just presses the up or down buttons on the d-pad. It doesn&#8217;t even use analogue for speed sensing etc.]]></description>
			<content:encoded><![CDATA[<p>I got a Beatmania DJ turntable controller for the Playstation and it works perfectly with the Retro Adapter. It&#8217;s actually pretty simple; it emulates a digital pad. When the wheel is turned it just presses the up or down buttons on the d-pad. It doesn&#8217;t even use analogue for speed sensing etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/08/playstation-beatmania-controller-tested/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The MSF signal is a bit of a mess</title>
		<link>http://blog.world3.net/2010/07/the-msf-signal-is-a-bit-of-a-mess/</link>
		<comments>http://blog.world3.net/2010/07/the-msf-signal-is-a-bit-of-a-mess/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 23:06:26 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[microcontrollers]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=331</guid>
		<description><![CDATA[I am working on another clock, this time with MSF (Rugby/The time from NPL)  radio time setting. I know, I need to document the last one&#8230; Anyway, I finished the decoder today. The MSF signal is frankly a mess. Things seem to have been added and then removed over the years. There are four different [...]]]></description>
			<content:encoded><![CDATA[<p>I am working on another clock, this time with MSF (Rugby/The time from NPL)  radio time setting. I know, I need to document the last one&#8230; Anyway, I finished the decoder today.</p>
<p>The MSF signal is frankly a mess. Things seem to have been added and then removed over the years. There are four different length pulses and various additions. Compared to the nice clean DCF77 signal it&#8217;s horrible, but unfortunately I can&#8217;t get DCF77 to work reliably here. In fact I bought a DCF77 clock but it has never been able to receive a good enough signal to set itself.</p>
<p>As others have discovered the MSF signal is much cleaner at night, but filtering out the noise during the day isn&#8217;t too hard. I wrote the decoder in assembler and it basically waits for a valid bit and then locks on to that, ignoring everything until 950ms have passed from it&#8217;s start. It also filters out too short and too long pulses and does some debouncing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/07/the-msf-signal-is-a-bit-of-a-mess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mouse+Joystick &#8220;computer&#8221; mode for the Retro Adapter</title>
		<link>http://blog.world3.net/2010/06/mousejoystick-computer-mode-for-the-retro-adapter/</link>
		<comments>http://blog.world3.net/2010/06/mousejoystick-computer-mode-for-the-retro-adapter/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 17:18:31 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[microcontrollers]]></category>
		<category><![CDATA[Retro Adapter]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=314</guid>
		<description><![CDATA[I have just finished updating mouse support on the Retro Adapter so that it now supports a mouse and joystick simultaneously. I am still trying to think of a good name for it but for the moment I am calling it &#8220;Computer Mode&#8221; because it is ideal for emulating machines like the Amiga or Atari [...]]]></description>
			<content:encoded><![CDATA[<p>I have just finished updating mouse support on the Retro Adapter so that it now supports a mouse and joystick simultaneously. I am still trying to think of a good name for it but for the moment I am calling it &#8220;Computer Mode&#8221; because it is ideal for emulating machines like the Amiga or Atari ST which use both a mouse and joystick. No need to unplug or re-configure anything, it just works.</p>
<p>Hopefully the next batch of RAs will arrive soon and I can get on with selling them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/06/mousejoystick-computer-mode-for-the-retro-adapter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maplin Soldering Fume Extractor mini review</title>
		<link>http://blog.world3.net/2010/06/maplin-soldering-fume-extractor-mini-review/</link>
		<comments>http://blog.world3.net/2010/06/maplin-soldering-fume-extractor-mini-review/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 22:38:13 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=306</guid>
		<description><![CDATA[I decided it was time to stop breathing in leaded solder fumes and get a fume extractor. Being on a limited budget getting a new iron with one built in or a larger unit was out of the question. Actually we have an iron with extractor on it at work (Blackjack hot-air rework station with [...]]]></description>
			<content:encoded><![CDATA[<p>I decided it was time to stop breathing in leaded solder fumes and get a fume extractor. Being on a limited budget getting a new iron with one built in or a larger unit was out of the question. Actually we have an iron with extractor on it at work (Blackjack hot-air rework station with very handy electric de-soldering tool) and it works brilliantly. Maybe one day.</p>
<p>Maplin were for once actually the cheapest source of desk-top extractors so I decided to take a chance on their £15 model. Turns out it was quite a good choice as it seems to work pretty well. It produces about 55dB at 30cm which is about where it needs to be on the desk to work well. The noise is just about acceptable, not quite enough to be annoying or distracting and it fades into the background pretty quickly. It&#8217;s about the same as a noisy PC fan.</p>
<p>It takes up a fair bit of room compared to an iron-mounted or vice-mounted version but you can angle it up and down which helps when using PCB holders and the like. It seems to such most of the fumes away from your face. Some still get through but I find I don&#8217;t the the usual symptoms like headaches, watering eyes, dry throat etc.</p>
<p>It comes with three filters. No idea how long they will last, obviously it depends entirely on how much you use the fan. They are easy to remove and clean, and fairly cheap to replace.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/06/maplin-soldering-fume-extractor-mini-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bliss Box violating my copyright, GPL and more</title>
		<link>http://blog.world3.net/2010/05/bliss-box-violating-my-copyright-gpl-and-more/</link>
		<comments>http://blog.world3.net/2010/05/bliss-box-violating-my-copyright-gpl-and-more/#comments</comments>
		<pubDate>Thu, 13 May 2010 16:26:33 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[law]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=296</guid>
		<description><![CDATA[I just spotted this: http://spawnlinux.dyndns.org/Bliss-Box/technical.html It violates my copyright on some of the images such as the schematic and connector diagrams. It also violates the GPL by using V-USB and not publishing the relevant code. Chances are it probably uses some of my GPL&#8217;ed code, and the author admitted that it is based off some [...]]]></description>
			<content:encoded><![CDATA[<p>I just spotted this:</p>
<p>http://spawnlinux.dyndns.org/Bliss-Box/technical.html</p>
<p>It violates my copyright on some of the images such as the schematic and connector diagrams. It also violates the GPL by using V-USB and not publishing the relevant code. Chances are it probably uses some of my GPL&#8217;ed code, and the author admitted that it is based off some of Ralph&#8217;s code too (also GPL).</p>
<p>I emailed the guy but he is refusing to give any attribution, publish anything or provide any links back to the relevant sites.</p>
<p>Since he used his own server in dyndns I tracked him back to somewhere in Florida, using Warner Cable via Road Runner. I have sent complains to both of them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/05/bliss-box-violating-my-copyright-gpl-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CD32 pad support added to the Retro Adapter</title>
		<link>http://blog.world3.net/2010/05/cd32-pad-support-added-to-the-retro-adapter/</link>
		<comments>http://blog.world3.net/2010/05/cd32-pad-support-added-to-the-retro-adapter/#comments</comments>
		<pubDate>Sun, 09 May 2010 18:14:04 +0000</pubDate>
		<dc:creator>mojo</dc:creator>
				<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://blog.world3.net/?p=289</guid>
		<description><![CDATA[Just finished adding support for CD32 gamepads to the Retro Adapter firmware. I discovered a couple of interesting points. 1. The logic ICs used are really slow. I need a 75μs delay after the latch line changes before starting the clock and approximately 50μs before reading on every clock cycle. The shift register is a [...]]]></description>
			<content:encoded><![CDATA[<p>Just finished adding support for CD32 gamepads to the Retro Adapter firmware. I discovered a couple of interesting points.</p>
<p>1. The logic ICs used are really slow. I need a 75μs delay after the latch line changes before starting the clock and approximately 50μs before reading on every clock cycle. The shift register is a 74LS165 and the datasheet (from 2000 so ~8 years after of the CD32) says it will run at 20MHz with propagation delays in the low tens of nanoseconds. I suppose performance must really have improved in the 90s, or C= used low performance ICs, or there is some issue with the PCB/wiring capacitance.</p>
<p>2. The controller is not nearly as bad as I remember it. It&#8217;s no Saturn pad but it works reasonably well and the D-pad is similar to Sega ones. It&#8217;s better than a NES pad anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.world3.net/2010/05/cd32-pad-support-added-to-the-retro-adapter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

