-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTemperatureController.h
111 lines (75 loc) · 3.57 KB
/
TemperatureController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* File: TemperatureController.h
* Author: kamal
*
* Created on November 3, 2015, 6:23 PM
*/
#ifndef TEMPERATURECONTROLLER_H
#define TEMPERATURECONTROLLER_H
#define _SUPPRESS_PLIB_WARNING
//#define _DISABLE_OPENADC10_CONFIGPORT_WARNING
#include <cstdlib>
#include <plib.h>
#include <stdint.h>
#include <math.h>
#include <xc.h>
#include "PeripheralSettingsAndMacros.h"
#include "PID.h"
#ifdef __cplusplus
extern "C" {
#endif
#define CS_LOW 0
#define CS_HIGH 1
#define LSD_CS(val) {LATGbits.LATG15 = val;}
#define PELTIER_TOP_CS(val) {LATGbits.LATG12 = val;}
#define PELTIER_BOTTOM_CS(val) {LATGbits.LATG14 = val;}
#define ADISCO_CS(val) {LATEbits.LATE7 = val;}
#define FACE_PLATE_CS(val) {LATEbits.LATE6 = val;}
#define LSD_CS_EX(val) {LSD_CS(val); PELTIER_TOP_CS(CS_HIGH); PELTIER_BOTTOM_CS(CS_HIGH); ADISCO_CS(CS_HIGH); FACE_PLATE_CS(CS_HIGH);}
#define PELTIER_TOP_CS_EX(val) {LSD_CS(CS_HIGH); PELTIER_TOP_CS(val); PELTIER_BOTTOM_CS(CS_HIGH); ADISCO_CS(CS_HIGH); FACE_PLATE_CS(CS_HIGH);}
#define PELTIER_BOTTOM_CS_EX(val) {LSD_CS(CS_HIGH); PELTIER_TOP_CS(CS_HIGH); PELTIER_BOTTOM_CS(val); ADISCO_CS(CS_HIGH); FACE_PLATE_CS(CS_HIGH);}
#define ADISCO_CS_EX(val) {LSD_CS(CS_HIGH); PELTIER_TOP_CS(CS_HIGH); PELTIER_BOTTOM_CS(CS_HIGH); ADISCO_CS(val); FACE_PLATE_CS(CS_HIGH);}
#define FACE_PLATE_CS_EX(val) {LSD_CS(CS_HIGH); PELTIER_TOP_CS(CS_HIGH); PELTIER_BOTTOM_CS(CS_HIGH); ADISCO_CS(CS_HIGH); FACE_PLATE_CS(val);}
#define DPDT_1(val) {LATAbits.LATA6 = val;}
//#define DPDT_2(val) { (val) > 0 ? mPORTASetBits(BIT_7): mPORTAClearBits(BIT_7); } //{LATAbits.LATA7 = val;}
#define DPDT_2(val) {LATAbits.LATA7 = val;}
#define CS_1(val) {LATEbits.LATE5 = val;}
#define CS_2(val) {LATEbits.LATE4 = val;}
#define CS_3(val) {LATEbits.LATE3 = val;}
#define CS_4(val) {LATEbits.LATE2 = val;}
#define CS_5(val) {LATEbits.LATE1 = val;}
#define CS_INIT() {\
mPORTESetPinsDigitalOut((unsigned int)0b11111110);\
mPORTGSetPinsDigitalOut(BIT_12 | BIT_14 | BIT_15);\
mPORTESetBits((unsigned int)0b11111110);\
mPORTESetBits(BIT_12 | BIT_14 | BIT_15);\
}
#define DPDT_INIT() {\
mPORTASetPinsDigitalOut(BIT_6 | BIT_7);\
mPORTAClearBits(BIT_6 | BIT_7);\
}
#define INT_PART(val) ((int)val)
#define FRAC_PART(val, mult) ((int) ((float)(val - INT_PART(val))* (float)mult))
// Command list
#define SET_VALUE 1
#define SEND_VALUE 0
#define PID_FREQ 120
#define SEND_ALL_THERMO_DATA_VIA_UART1 0xFF
#define SEND_ALL_THERMO_DATA_VIA_SPI2 99
#define SKIP_INTERVAL 121
#define HAS_TARGET_TEMP_REACHED 111
void AdjustTemperature(float target_temp);
float LSD_Temperature();
void TestUART2DataSendToRaspberryPi();
float PmodTC1_Temperature();
float LSD_Temperature();
void SPI1_TempMeasurement_Test();
void SPI1_TempMeasurement_LM_Thermo_Test();
void TemperatureSystemInit();
void AddTemperatureToList(float temp_value);
void ClearTemperatureList();
void Calculate_SD_And_MD(float target_temp, float *sd, float *md);
#ifdef __cplusplus
}
#endif
#endif /* TEMPERATURECONTROLLER_H */