temp_threshold, temp_control, temp_event done

This commit is contained in:
Dhanya Maliakal
2018-01-11 15:37:24 +01:00
parent a87687199f
commit 2d6e4c95a2
15 changed files with 725 additions and 6 deletions

View File

@ -312,7 +312,7 @@
#define TEMP_CTRL_REG (0x5F << 11)
#define TEMP_CTRL_PROTCT_THRSHLD_OFST (0)
#define TEMP_CTRL_PROTCT_THRSHLD_MSK (0x000007FF << TEMP_CTRL_PRTCT_THRSHLD_OFST)
#define TEMP_CTRL_PROTCT_THRSHLD_MSK (0x000007FF << TEMP_CTRL_PROTCT_THRSHLD_OFST)
#define TEMP_CTRL_PROTCT_ENABLE_OFST (16)
#define TEMP_CTRL_PROTCT_ENABLE_MSK (0x00000001 << TEMP_CTRL_PROTCT_ENABLE_OFST)
#define TEMP_CTRL_OVR_TMP_EVNT_OFST (31)

View File

@ -1146,13 +1146,67 @@ void configurePll() {
int setThresholdTemperature(int val) {
if (val >= 0) {
printf("\nThreshold Temperature: %d\n", val);
val *= (10.0/625.0);
#ifdef VERBOSE
printf("Converted Threshold Temperature: %d\n", val);
#endif
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_PROTCT_THRSHLD_OFST) & TEMP_CTRL_PROTCT_THRSHLD_MSK)));
#ifdef VERBOSE
printf("Converted Threshold Temperature set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_THRSHLD_MSK) >> TEMP_CTRL_PROTCT_THRSHLD_OFST));
#endif
}
uint32_t temp = ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_THRSHLD_MSK) >> TEMP_CTRL_PROTCT_THRSHLD_OFST);
// conversion
temp *= (625.0/10.0);
printf("Threshold Temperature %f °C\n",(double)temp/1000.00);
return temp;
}
int setTemperatureControl(int val) {
if (val >= 0) {
// binary value
if (val > 0 ) val = 1;
printf("\nTemperature control: %d\n", val);
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_PROTCT_ENABLE_OFST) & TEMP_CTRL_PROTCT_ENABLE_MSK)));
#ifdef VERBOSE
printf("Temperature control set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_ENABLE_MSK) >> TEMP_CTRL_PROTCT_ENABLE_OFST));
#endif
}
return ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_PROTCT_ENABLE_MSK) >> TEMP_CTRL_PROTCT_ENABLE_OFST);
}
int setTemperatureEvent(int val) {
if (val >= 0) {
// set bit to clear it
val = 1;
printf("\nTemperature Event: %d\n", val);
bus_w(TEMP_CTRL_REG, bus_r(TEMP_CTRL_REG) | (((val << TEMP_CTRL_OVR_TMP_EVNT_OFST) & TEMP_CTRL_OVR_TMP_EVNT_MSK)));
#ifdef VERBOSE
printf("Temperature Event set to %d\n", ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_OVR_TMP_EVNT_MSK) >> TEMP_CTRL_OVR_TMP_EVNT_OFST));
#endif
}
return ((bus_r(TEMP_CTRL_REG) & TEMP_CTRL_OVR_TMP_EVNT_MSK) >> TEMP_CTRL_OVR_TMP_EVNT_OFST);
}
int setNetworkParameter(enum NETWORKINDEX mode, int value) {
if (mode != TXN_FRAME)
return -1;
if (value >= 0) {
printf("\nSetting transmission delay: %d\n", value);
bus_w(CONFIG_REG, ((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK));
bus_w(CONFIG_REG, bus_r(CONFIG_REG) | (((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK)));
#ifdef VERBOSE
printf("Transmission delay set to %d\n", ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST));
#endif

View File

@ -91,6 +91,7 @@ enum NETWORKINDEX { TXN_FRAME };
#define FIX_PATT_VAL (0xACDC2014)
#define ADC_PORT_INVERT_VAL (0x453b2a9c)
#define MAX_TIMESLOT_VAL (0x1F)
#define MAX_THRESHOLD_TEMP_VAL (127999) //millidegrees
#define SAMPLE_ADC_HALF_SPEED (SAMPLE_DECMT_FACTOR_2_VAL + SAMPLE_DGTL_SAMPLE_0_VAL + SAMPLE_ADC_DECMT_FACTOR_0_VAL + SAMPLE_ADC_SAMPLE_0_VAL) /* 0x1000 */