-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththerm.h
122 lines (101 loc) · 3.13 KB
/
therm.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
111
112
113
114
115
116
117
118
119
120
121
122
//----------------------------------------------------------------------------
//Ìîäóëü ïîääåðæêè òåðìîìåòðà DS18B20, çàãîëîâî÷íûé ôàéë
//----------------------------------------------------------------------------
#ifndef THERM_H
#define THERM_H
//----------------------------- Êîíñòàíòû: -----------------------------------
#define TEMP_MIN 0 //ìèíèìàëüíàÿ èçìåðÿåìàÿ òåìïåðàòóðà, *0.1°C
#define TEMP_MAX 999 //ìàêñèìàëüíàÿ èçìåðÿåìàÿ òåìïåðàòóðà, *0.1°C
#define TEMP_FAIL -1000 //êîä îøèáêè òåìïåðàòóðû
enum OwpAct_t //êîäû îïåðàöèé íà øèíå 1-Wire
{
OWP_NONE,
OWP_RESET,
OWP_RW,
OWP_ACT,
OWP_READY,
OWP_FAIL
};
//----------------------------------------------------------------------------
//--------------------- Àáñòðàêòíûé êëàññ TOwpAction: ------------------------
//----------------------------------------------------------------------------
extern "C" void USART2_IRQHandler(void);
class TOwpAction
{
private:
static char DataRd;
friend void USART2_IRQHandler(void);
protected:
volatile static OwpAct_t Action;
static char BitCounter;
static char DataWr;
char Data;
public:
TOwpAction(char data);
OwpAct_t Result;
char Value;
virtual void Start(void) = 0;
void Execute(void);
};
//----------------------------------------------------------------------------
//----------------------------- Êëàññ TOwpReset: -----------------------------
//----------------------------------------------------------------------------
class TOwpReset : public TOwpAction
{
private:
public:
TOwpReset(char data = 0xF0) : TOwpAction(data) {};
void Start(void);
};
//----------------------------------------------------------------------------
//------------------------------- Êëàññ TOwpRW: ------------------------------
//----------------------------------------------------------------------------
class TOwpRW : public TOwpAction
{
private:
public:
TOwpRW(char data = 0xFF) : TOwpAction(data) {};
void Start(void);
};
//----------------------------------------------------------------------------
//------------------------------ Êëàññ TOwpTask: -----------------------------
//----------------------------------------------------------------------------
class TOwpTask
{
private:
char MaxActions;
char ActCount;
char Index;
OwpAct_t State;
bool Error;
public:
TOwpTask(char maxact);
TOwpAction** Actions;
void AddAction(TOwpAction *act);
void Start(void);
void Execute(void);
bool Done(void);
bool Fail(void);
};
//----------------------------------------------------------------------------
//----------------------------- Êëàññ TTherm: --------------------------------
//----------------------------------------------------------------------------
class TTherm
{
private:
TGpio<PORTA, PIN2> Pin_OWPO;
TGpio<PORTA, PIN3> Pin_OWPI;
TSoftTimer *ThermTimer;
TOwpTask *OwpStartTherm;
TOwpTask *OwpReadTherm;
int16_t CalculateT(void);
public:
TTherm(void);
void Execute(void);
bool Update;
int16_t Value;
};
//----------------------------------------------------------------------------
extern TTherm *Therm;
//----------------------------------------------------------------------------
#endif