spi_butterfly - parport-to-butterfly adapter driver
===================================================

This is a hardware and software project that includes building and using
a parallel port adapter cable, together with an "AVR Butterfly" to run
firmware for user interfacing and/or sensors.  A Butterfly is a $US20
battery powered card with an AVR microcontroller and lots of goodies:
sensors, LCD, flash, toggle stick, and more.  You can use AVR-GCC to
develop firmware for this, and flash it using this adapter cable.

You can make this adapter from an old printer cable and solder things
directly to the Butterfly.  Or (if you have the parts and skills) you
can come up with something fancier, providing ciruit protection to the
Butterfly and the printer port, or with a better power supply than two
signal pins from the printer port.  Or for that matter, you can use
similar cables to talk to many AVR boards, even a breadboard.

This is more powerful than "ISP programming" cables since it lets kernel
SPI protocol drivers interact with the AVR, and could even let the AVR
issue interrupts to them.  Later, your protocol driver should work
easily with a "real SPI controller", instead of this bitbanger.


The first cable connections will hook Linux up to one SPI bus, with the
AVR and a DataFlash chip; and to the AVR reset line.  This is all you
need to reflash the firmware, and the pins are the standard Atmel "ISP"
connector pins (used also on non-Butterfly AVR boards).  On the parport
side this is like "sp12" programming cables.

	Signal	  Butterfly	  Parport (DB-25)
	------	  ---------	  ---------------
	SCK	= J403.PB1/SCK	= pin 2/D0
	RESET	= J403.nRST	= pin 3/D1
	VCC	= J403.VCC_EXT	= pin 8/D6
	MOSI	= J403.PB2/MOSI	= pin 9/D7
	MISO	= J403.PB3/MISO	= pin 11/S7,nBUSY
	GND	= J403.GND	= pin 23/GND

Then to let Linux master that bus to talk to the DataFlash chip, you must
(a) flash new firmware that disables SPI (set PRR.2, and disable pullups
by clearing PORTB.[0-3]); (b) configure the mtd_dataflash driver; and
(c) cable in the chipselect.

	Signal	  Butterfly	  Parport (DB-25)
	------	  ---------	  ---------------
	VCC	= J400.VCC_EXT	= pin 7/D5
	SELECT	= J400.PB0/nSS	= pin 17/C3,nSELECT
	GND	= J400.GND	= pin 24/GND

Or you could flash firmware making the AVR into an SPI slave (keeping the
DataFlash in reset) and tweak the spi_butterfly driver to make it bind to
the driver for your custom SPI-based protocol.

The "USI" controller, using J405, can also be used for a second SPI bus.
That would let you talk to the AVR using custom SPI-with-USI firmware,
while letting either Linux or the AVR use the DataFlash.  There are plenty
of spare parport pins to wire this one up, such as:

	Signal	  Butterfly	  Parport (DB-25)
	------	  ---------	  ---------------
	SCK	= J403.PE4/USCK	= pin 5/D3
	MOSI	= J403.PE5/DI	= pin 6/D4
	MISO	= J403.PE6/DO	= pin 12/S5,nPAPEROUT
	GND	= J403.GND	= pin 22/GND

	IRQ	= J402.PF4	= pin 10/S6,ACK
	GND	= J402.GND(P2)	= pin 25/GND

