// Variables\r
//******************************************************************************\r
//! SPI status struct\r
-SPI_Status_t SPI;\r
+volatile SPI_Status_t SPI;\r
\r
\r
//******************************************************************************\r
\r
\r
case ADR_BATTCTRL:\r
- SPI_Put(eeprom_read_byte((unsigned char*)&BattControl + (SPI.Count)));\r
+ SPI_Put(eeprom_read_byte((unsigned char*)&BattControl + (SPI.Count)));\r
break;\r
\r
case ADR_TIMERS:\r
*/\r
void SPI_Init(unsigned char spi_mode)\r
{\r
+ unsigned char sreg_saved;\r
+\r
+ sreg_saved = SREG;\r
cli();\r
\r
// Configure outputs and inputs, enable pull-ups for DATAIN and CLOCK pins.\r
SPI.XferComplete = FALSE; // We haven't even started a transfer yet.\r
SPI.WriteCollision = FALSE; // ..And therefore a collision hasn't happened.\r
\r
- sei();\r
+ SREG = sreg_saved;\r
}\r
\r
\r