First, thanks to Mac and Peg for their eariler comments and suggestions which seem to be leading me in the right direction. Well, until this roadblock.
void main(void) {
EnableInterrupts;
SPIC1_MSTR = 1; // MCU set as SPI master
SPIC1_CPHA = 0; // clock phase default
SPIC1_SSOE = 1; // slave select output enable
SPIC2_MODFEN = 1; // ss pin acts as slave select
SPIC2_SPC0 = 0; // uses seperate pins for I/O
SPIC1_SPE = 1; // Enable SPI
SPIBR = 0; // Set baud rate to max (no divisors)
for(;
{ __RESET_WATCHDOG(); // feeds the dog
// yes, it's a very short for loop
}
} // end of main()
interrupt 18 void KBI_ISR(void)
{ KBISC_KBACK = 1;
if (SW1 == 0){
while (!SPIS_SPTEF);
SPID = 0x05;
while (!SPIS_SPRF);
my_status = (SPID);
}
else if (SW2 == 0){
while (!SPIS_SPTEF);
SPID = 0x03;
while (!SPIS_SPTEF);
SPID = 0x00;
while (!SPIS_SPRF);
my_serial = (my_serial | SPID) << 4;
while (!SPIS_SPRF);
my_serial = (my_serial | SPID);
}
}
So, everything seems to be good and I can check the various flags in the debugger, but writing to SPID (SPID = 0x05;) doesn't do anything and the value of SPID doesn't change. I haven't put a scope on the lines yet, so I don't know if SS is rising and falling as it should, but I'd at least figure that I'd see SPID change. Am I missing something here? That's a silly question.. of course I'm missing something, but what?
TIA
Rob