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();
+}
-