Line 1... |
Line 1... |
1 |
/**** IR Mrakomer 4 ****/ |
1 |
/**** IR Mrakomer 4 ****/ |
2 |
#define VERSION "4.1" |
2 |
#define VERSION "4.1" |
3 |
#define ID "$Id: irmrak4.c 1884 2011-02-26 10:11:40Z kakl $" |
3 |
#define ID "$Id: irmrak4.c 1958 2011-04-24 14:44:01Z kakl $" |
4 |
|
4 |
|
5 |
#include "irmrak4.h" |
5 |
#include "irmrak4.h" |
6 |
|
6 |
|
7 |
#bit CREN = 0x18.4 // USART registers |
7 |
#bit CREN = 0x18.4 // USART registers |
8 |
#bit SPEN = 0x18.7 |
8 |
#bit SPEN = 0x18.7 |
Line 135... |
Line 135... |
135 |
|
135 |
|
136 |
/*-------------------------------- MAIN --------------------------------------*/ |
136 |
/*-------------------------------- MAIN --------------------------------------*/ |
137 |
void main() |
137 |
void main() |
138 |
{ |
138 |
{ |
139 |
unsigned int16 seq, temp, tempa; |
139 |
unsigned int16 seq, temp, tempa; |
140 |
signed int16 ta, to1, to2, tTouch, taOld; |
140 |
signed int16 ta, to1, to2, tTouch; |
141 |
int8 tLSB,tMSB; // Temperatures from TouchMemory |
141 |
int8 tLSB,tMSB; // Temperatures from TouchMemory |
142 |
int8 safety_counter; |
142 |
int8 safety_counter; |
143 |
int8 heatTime, heatPower; |
143 |
int8 heatTime; |
144 |
int1 repeat; // Status flags |
144 |
int1 repeat; // Status flags |
145 |
int1 automatic; |
145 |
int1 automatic; |
146 |
|
146 |
|
147 |
output_high(DOME); // Close Dome |
147 |
output_high(DOME); // Close Dome |
148 |
output_low(HEATING); // Heating off |
148 |
output_low(HEATING); // Heating off |
Line 152... |
Line 152... |
152 |
|
152 |
|
153 |
seq=0; // Variables initiation |
153 |
seq=0; // Variables initiation |
154 |
heat=0; |
154 |
heat=0; |
155 |
open=0; |
155 |
open=0; |
156 |
heatTime=0; |
156 |
heatTime=0; |
157 |
heatPower=0; |
- |
|
158 |
taOld=2000; |
- |
|
159 |
repeat=TRUE; |
157 |
repeat=TRUE; |
160 |
automatic=FALSE; |
158 |
automatic=FALSE; |
161 |
|
159 |
|
162 |
welcome(); |
160 |
welcome(); |
163 |
|
161 |
|
Line 293... |
Line 291... |
293 |
} |
291 |
} |
294 |
|
292 |
|
295 |
if(automatic) // Solve automatic mode |
293 |
if(automatic) // Solve automatic mode |
296 |
{ |
294 |
{ |
297 |
if (heatTime==0) |
295 |
if (heatTime==0) |
298 |
{ |
296 |
{ |
299 |
if((ta<taOld)&&(heatPower<20)) heatPower++; // Need wormer ? |
297 |
if((tTouch<=-300)&&(ta<=300)) {heat=(700-tTouch)/400;} else {heat=1;} // Needs warmer? |
300 |
if((ta>taOld)&&(heatPower>0)) heatPower--; // Need colder ? |
- |
|
301 |
|
- |
|
302 |
if((ta>=300)&&(ta<2000)) heatPower=1; |
- |
|
303 |
if(ta>=2000) heatPower=0; |
- |
|
304 |
|
- |
|
305 |
taOld=ta; |
- |
|
306 |
heatTime=20; |
298 |
heatTime=MAXHEAT; |
307 |
if(ta>-10000) heat=heatPower; |
- |
|
308 |
} |
299 |
} |
309 |
heatTime--; |
300 |
heatTime--; |
- |
|
301 |
|
- |
|
302 |
if(ta>2000) heat=0; // Overtemperature protection |
- |
|
303 |
if(tTouch>2000) heat=0; |
- |
|
304 |
if(ta<-10000) heat=0; // Sensor Error protection |
- |
|
305 |
if(tTouch<-10000) heat=0; |
310 |
|
306 |
|
311 |
if((abs(to1-to2)<100)&&(tTouch>to1)&&(abs(tTouch-to1)>800)) open=1; // Open the dome |
307 |
if((abs(to1-to2)<100)&&(tTouch>to1)&&(abs(tTouch-to1)>800)) open=1; // Control the dome |
- |
|
308 |
if(to1<-10000) open=0; // Sensor Error protection |
- |
|
309 |
if(tTouch<-10000) open=0; |
312 |
} |
310 |
} |
313 |
|
311 |
|
314 |
{ // printf |
312 |
{ // printf |
315 |
char output[8]; // Output buffer |
313 |
char output[8]; // Output buffer |
316 |
int8 j; // String pointer |
314 |
int8 j; // String pointer |