diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
 			
 			
 			
-			
+			
 				
 				
 			
@@ -16,7 +16,7 @@
 			
 			
 			
-			
+			
 				
 				
 			
diff --git a/inc/tempsense.h b/inc/tempsense.h
--- a/inc/tempsense.h
+++ b/inc/tempsense.h
@@ -7,6 +7,7 @@
 
 
 void tempsense_init(void);
-float tempsense_readtemp(void);
+void tempsense_readtemp(void);
+float tempsense_gettemp(void);
 
 #endif
diff --git a/lib/max31856/max31856.c b/lib/max31856/max31856.c
--- a/lib/max31856/max31856.c
+++ b/lib/max31856/max31856.c
@@ -10,7 +10,7 @@
 static float temp_latest = 0.0;
 static float temp_avg = 0.0;
 
-static SPI_HandleTypeDef* spiport;
+SPI_HandleTypeDef* spiport;
 static GPIO_TypeDef* csport;
 static uint32_t cspin;
 
@@ -48,7 +48,7 @@ void max31856_init(SPI_HandleTypeDef* sp
 
 	// TODO: Enable open/short detection
 	// Enables auto conv
-	__write_reg(MAX31856_CR0_REG, MAX31856_CR0_OCFAULT0 | MAX31856_CR0_AUTOCONVERT);
+	__write_reg(MAX31856_CR0_REG, MAX31856_CR0_AUTOCONVERT); //  MAX31856_CR0_OCFAULT0
 
 	// Averaging set to 1 sample, TC type set to K
 	__write_reg(MAX31856_CR1_REG, MAX31856_TCTYPE_K);
@@ -58,9 +58,9 @@ void max31856_init(SPI_HandleTypeDef* sp
 
 
 // Pull reading from the MAX31856 IC
-void max31856_process(void)
+float max31856_process(void)
 {
-	uint8_t tempbuf[4];
+	uint8_t tempbuf[3];
 	__read_reg(MAX31856_LTCBH_REG, tempbuf, 3);
 
 
@@ -74,14 +74,15 @@ void max31856_process(void)
 	float tempfloat = temp24;
 	tempfloat *= 0.0078125;
 
+	temp_latest = tempfloat;
 	return tempfloat;
 
 
 
 
 	// Read temperature from the MAX31856 (approx 10hz optimally)
-	uint8_t data[] = {0,0,0,0};
-	HAL_SPI_Transmit(spiport, data, 1, 100);
+//	uint8_t data[] = {0,0,0,0};
+//	HAL_SPI_Transmit(spiport, data, 1, 100);
 
 }
 
@@ -110,8 +111,12 @@ static void __write_reg(uint8_t reg, uin
 	// Assert the bus
 	__cs_assert();
 
+	HAL_Delay(1);
+
 	// Write data
-	HAL_SPI_Transmit(spiport, outarr, 2, 100);
+	volatile HAL_StatusTypeDef res = HAL_SPI_Transmit(spiport, outarr, 2, 100);
+
+	HAL_Delay(1);
 
 	// Release the bus
 	__cs_deassert();
@@ -122,18 +127,22 @@ static void __read_reg(uint8_t reg, uint
 	// Transmit buffer only uses first item for reg addr
 	uint8_t regarr[1] = {reg};
 
-
+	HAL_Delay(1);
 	// Assert the bus
 	__cs_assert();
+	HAL_Delay(1);
 
 	// Send address
-	HAL_SPI_Transmit(spiport, regarr, 1, 100);
+	volatile HAL_StatusTypeDef res = HAL_SPI_Transmit(spiport, regarr, 1, 100);
+	HAL_Delay(1);
 
 	// Receive data
-	HAL_SPI_Receive(spiport, rxbuf, len, 100);
+	volatile HAL_StatusTypeDef res2 = HAL_SPI_Receive(spiport, rxbuf, len, 100);
+	HAL_Delay(1);
 
 	// Release bus
 	__cs_deassert();
+	HAL_Delay(1);
 
 }
 
diff --git a/lib/max31856/max31856.h b/lib/max31856/max31856.h
--- a/lib/max31856/max31856.h
+++ b/lib/max31856/max31856.h
@@ -4,7 +4,7 @@
 #include "stm32f3xx_hal.h"
 
 void max31856_init(SPI_HandleTypeDef* spi_port, GPIO_TypeDef* cs_port, uint32_t cs_pin, uint32_t sensor_type);
-void max31856_process(void);
+float max31856_process(void);
 float max31856_latest_temp(void);
 float max31856_avg_temp(void);
 
diff --git a/lib/ssd1306/ssd1306.c b/lib/ssd1306/ssd1306.c
--- a/lib/ssd1306/ssd1306.c
+++ b/lib/ssd1306/ssd1306.c
@@ -63,11 +63,11 @@ void ssd1306_init(void)
 	hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
 	hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
 	hspi1.Init.NSS = SPI_NSS_SOFT;
-	hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
+	hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; //16;
 	hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
 	hspi1.Init.TIMode = SPI_TIMODE_DISABLED;
 	hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
-	hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLED;
+	hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLED;
 	HAL_SPI_Init(&hspi1);
 
 
diff --git a/src/main.c b/src/main.c
--- a/src/main.c
+++ b/src/main.c
@@ -65,7 +65,7 @@ int main(void)
 		if(HAL_GetTick() - last_5hz > 200)
 		{
 			tempsense_readtemp();
-//			runtime_status = tempsense_gettemp();
+			runtime_status()->temp = tempsense_gettemp();
 			last_5hz = HAL_GetTick();
 		}
 
diff --git a/src/system/flash.c b/src/system/flash.c
--- a/src/system/flash.c
+++ b/src/system/flash.c
@@ -73,6 +73,7 @@ void flash_restoresettings(void)
 		settings.val.k_i = 0;
 		settings.val.k_d = 0;
 		settings.val.windup_guard = 300;
+		settings.val.sensor_type = 1;
 		//torestore.values.can_id = 22;
 	}
 }
diff --git a/src/tempsense.c b/src/tempsense.c
--- a/src/tempsense.c
+++ b/src/tempsense.c
@@ -22,7 +22,7 @@ void tempsense_init(void)
 }
 
 // Returns the latest reading from the configured temperature sensor
-float tempsense_readtemp(void)
+void tempsense_readtemp(void)
 {
 
 	switch(flash_getsettings()->val.sensor_type)
@@ -35,6 +35,7 @@ float tempsense_readtemp(void)
 		case SENSOR_TC_T:
 		{
 			// Read MAX31856
+			max31856_process();
 		} break;
 
 		case SENSOR_NTC:
@@ -49,5 +50,8 @@ float tempsense_readtemp(void)
 	// Need to gracefully handle the timeout...
 }
 
+float tempsense_gettemp(void)
+{
+	return max31856_latest_temp();
+}
 
-