Teensy 3.0

LOL, I'm just now seeing this thread.... been far too busy shipping the rewards and writing software!

I was wondering if anyone would ever notice those C++ classes?! I did some looking at libraries that use SPI, and sadly most of them directly access the AVR registers. The official SPI library arrived relatively late in the development of Arduino, so it hasn't been widely adopted. It also changed its own API at least once, causing at least one library author to dump it and go directly to the registers. The existing SPI library isn't much of an abstraction (eg, able to support the fifo, dma, or automatic chip select signals). Fortunately, the compiler optimizes away pretty much all of the C++ stuff because it's inline functions. The SPCR part isn't highly efficient, but the data register and status flag compile to the equivalent registers accesses. It was pretty painful having to clear the fifo every time SPDR is written, but that's necessary to faithfully emulate the AVR registers.....

For your sdfat library, at least making good use of the fifo should be much faster. Would you prefer to put the Freescale registers directly into your sdfat library, or work with the a new SPI library that supports the fifos and other features (and might be adaptable to other new chips with similar SPI features)?