Have you ever encounter failure on the SD card API, SD.begin() or SD.exists() ?
One of the solution is to properly put the SD headers after any other header files ( eg. TimerOne.h ) such as below:
#include <TimerOne.h>
#include <SPI.h>
#include <SD.h>
After putting the SD headers the sequence above, both SD and MicroSD card readers working correctly.