@scswift:
I would like to know...
See the following more recent thread: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1284605439/6
Scroll down to post number 7.
I tried to explain the difference between the use of "SS" to set the mode of the SPI hardware interface (this pin can't be changed) and the use of pin 10 as a device "Chip Select" that is manipulated during SPI port data transfers (this pin can be any output pin that you want it to be). Software must explicitly manipulate the device "Chip Select" pin to perform SPI data I/O cycles. This is done for us in the Ethernet library, which uses Pin 10 as the Ethernet Chip Select.
Bottom line: Do not change the definition of SS in the core library header pins_arduino.h.
Either your library or your sketch must set the pin mode of the "SS" pin to be an output. Your sketch or your library can use any pin you want to be the device Chip Select. It can be pin 10 or it can be anything you want. The Ethernet library uses pin 10 as the Ethernet Chip Select, and the user sketch doesn't have to worry about any assignment or Chip Select manipulation.
If you are using something other than pin 10 for your device Chip Select, then your software (the library or your sketch) still must set the the "SS" pin mode to be an output.
For a complete, official explanation see http://www.atmel.com/dyn/resources/prod_documents/doc2585.pdf
Regards,
Dave
Footnote:
For boards using an ATMega1280 or '2560, the actual pin definition of "SS" is not Arduino pin 10; it is something else, as you can see in pins_arduino.h. By leaving pins_arduino.h unchanged, properly written code (sketches or libraries) can initialize the hardware "SS" pin with the same source code. Choice of which pin to use for the SPI device Chip Select can still be pin 10 or it can be anything else you want it to be. The only requirement (for properly designed SPI devices and for properly designed software) is that each device that resides on the Arduino SPI bus must have a different device Chip Select pin.