USB-SATA powerswitch

From BitWizard WIKI
Revision as of 15:45, 21 September 2011 by Tom (talk | contribs) (pinout)

Jump to: navigation, search

USB SATA powerswitch

This is the documentation page for the USB SATA powerswitch PCB.

overview

The USB SATA powerswitch PCB has an USB connector and connection points for 3 power rails. The brains of the PCB is an at90usb162 (or compatible) chip.

pinout

  • led1 is connected to VCC
  • led2 is connected to PD6
  • led3 is connected to PD5
  • led4 is connected to PD4
  • led5 is connected to PD3
  • led6 is connected to PD0 (12V FET)
  • led7 is connected to PD1 (5V FET)
  • led8 is connected to PD2 (3,3V FET)
  • led9 is connected to 12V in
  • led10 is connected to 5V in
  • led11 is connected to 3,3V in

Viewing with the USB connector on the left side, and the power pads on the lower side:

  • 12V OUT
  • 12V IN
  • GND
  • GND
  • 5V IN
  • 5V OUT
  • GND
  • GND
  • 3,3V IN
  • 3,3V OUT

Mind the reversed order for the 12V pads, compared to the 5V and 3,3V pads!

Default operation

programming

This section describes how you get your program into the processor.

In general what you need to know is that the processor will boot into the code you programmed into it on powerup. Once you're done developing your program, that's the way you'll use it: Powerup, run.

If there is no program loaded or if you press the reset button the chip comes up in "firmware upload mode". This is done by a bootloader. You should take care not to overwrite or erase the bootloader, because there is no way to put the bootloader back once it is gone.

Linux

Get the dfu-programmer for atmel chips package. (link?)

On sufficiently recent Ubunu distributions that is as simple as:

 sudo apt-get  install dfu-programmer

I recommend creating a script called "dfu":

#!/bin/sh
if [ -z "$CHIP" ]  ; then 
  chip=at90usb162
else
  chip=$CHIP
fi

hex=$1
sudo dfu-programmer $chip erase
sudo dfu-programmer $chip flash --suppress-bootloader-mem $hex
sudo dfu-programmer $chip start

TODO: figure out how to get rid of the "sudo" commands here...

Now downloading and starting a program is as simple as pressing the reset button and then:

dfu <yourbinary>.hex

TODO: When I'm developing, I'm likely to modify the code, and when I want to program the chip I hit the "reset" button on the board. Then the computer will see my chip re-enumerate as the Atmel DFU chip. A simple script could watchout for that and invoke dfu <mycurrentbinary>.hex the moment the chip has enumerated. Once that's running downloading and starting the latest code becomes as simple as hitting the reset button.

Apparently the FLIP program is now available for Linux too. See below.

windows

Get the "flip" program from Atmel. http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886

writing programs

The chip is an at90usb162. http://www.atmel.com/dyn/resources/prod_documents/doc7707.pdf

You can program the processor as if it is a normal AVR processor without USB. Just like an arduino. Or you can program it to have USB support. For this the LUFA package is very useful. http://www.fourwalledcubicle.com/LUFA.php


Depending on what you want you can start from these examples:

DONE: Find out if we can jump to the bootloader from our code so that we can issue a "go get yourself updated" command over the USB (yes, but the documentation says nothing about what address to jump to). This comes in handy if the reset button is difficult to reach because the device is built-in somewhere. http://www.atmel.com/dyn/resources/prod_documents/doc7618.pdf

future hardware enhancements

  • replace the SMD switch with an TH version

future software enhancements

  • program the LUFA bootloader.
  • Program an even smaller bootloader. (512 bytes should be possible, CF teensy/halfkay).