Yes, I need USB to allow reading of the recorded data by the PC. In fact the full-speed USB is awfully slow for reading 1GB of data, but anyway it may be more convenient, than repeated removing of the SD/MMC card and puting it back (at least the user should have a choice). The device must be as cheap as possible, and built from the easily available (in EU, specifically in Poland) parts (therefore I wouldn't like to use PIC32). Maybe I'll stick at PIC18F4550 or 18F4553, implementing the bit banged SPI. SPI is called synchronously when transmitting the data, so it is relatively easy. I only have to assess the amount of cycles needed to transmit the single byte. I haved found the 40 instructions output only implementation: http://www.piclist.org/techref/postbot.asp?by=time&id=piclist/2004/03/03/105839a My best in/out implementation is 64 instruction long (8 instructions for a single bit): ; set the clock line to 'L' bcf clk_port, clk_pin,0 ; move the highest bit to the carry, and 0 to the lowest bit addwf WREG,0,0 ; set the data line to carry bcf sdo_port,sdo_pin,0 btfsc STATUS,0,0 bsf sdo_port,sdo_pin,0 ; read the input pin btfsc sdi_port, sdi_pin,0 ; set the bit 0 in WREG to SDI bsf WREG,0,0 ; set the clock line to 'H' bsf clk_port, clk_pin, 0 When repeated 8 times (using "copy&paste" technique) this routine transmits the byte located in the WREG, and replaces it with the byte received from the SPI in 64 instructions. Does anybody know how to improve it? --- Regards, Wojtek -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist