Do you ever the the LCD_SELECT pin back to LOW before writing to the LCD? Try this:
#include <PCD8544.h>
#include <SD.h>
#define SPI_CLK 13 /* SPI CLK */
#define SPI_MISO 12 /* SPI MISO */
#define SPI_MOSI 11 /* SPI MOSI */
#define SD_SELECT 10 /* SD Card SPI Select */
#define LCD_SELECT 9 /* LCD SPI Select */
#define LCD_DC 8 /* LCD data/command */
#define LCD_RESET 7 /* LCD Reset */
PCD8544 LCD;
void setup() {
pinMode(LCD_SELECT, OUTPUT);
pinMode(SD_SELECT, OUTPUT);
Serial.begin(9600);
Serial.println("Starting LCD");
/* initialize LCD */
LCD.begin_custpins(84, 48, SPI_CLK, SPI_MOSI, LCD_DC,
LCD_RESET, LCD_SELECT);
// don't talk to LCD while we init the SD
digitalWrite(LCD_SELECT, HIGH);
digitalWrite(SD_SELECT, LOW);
/* initialize SD Card on SPI Bus */
if (!SD.begin(SD_SELECT)) {
Serial.println("SD card initialize failed, or not present");
} else {
Serial.println("SD card initialize success!");
}
digitalWrite(LCD_SELECT, LOW);
digitalWrite(SD_SELECT, HIGH);
LCD.setCursor(0, 0);
LCD.print("Started LCD!");
digitalWrite(LCD_SELECT, HIGH);
digitalWrite(SD_SELECT, LOW);
}
void loop() {
digitalWrite(LCD_SELECT, LOW);
digitalWrite(SD_SELECT, HIGH);
delay(1000);
LCD.println("LCD is running!"); // this does nothing when the SD library is initalized
digitalWrite(LCD_SELECT, HIGH);
digitalWrite(SD_SELECT, LOW);
}
The only thing I've done is what I've added digitalWrites at some places to be sure what the SD_SELECT and the LCD_SELECT always are talked to if they should, but not if the other one is talked to.
JanD