Rev 931 Rev 985
Line 1... Line 1...
1 /**** IR Mrakomer3 ****/ 1 /**** IR Mrakomer3 ****/
2 #define VERSION "3.0" 2 #define VERSION "3.1"
3 #define ID "$Id: irmrak3.c 931 2007-12-27 15:03:55Z kakl $" 3 #define ID "$Id: irmrak3.c 985 2008-01-09 21:38:11Z kakl $"
4 #include "irmrak3.h" 4 #include "irmrak3.h"
5   5  
6 #define SA 0x00 // Slave Address (0 for single slave / 0x5A<<1 default) 6 #define SA 0x00 // Slave Address (0 for single slave / 0x5A<<1 default)
7 #define RAM_Access 0x00 // RAM access command 7 #define RAM_Access 0x00 // RAM access command
8 #define RAM_Tobj1 0x07 // To1 address in the eeprom 8 #define RAM_Tobj1 0x07 // To1 address in the eeprom
Line 12... Line 12...
12   12  
13 char VER[4]=VERSION; 13 char VER[4]=VERSION;
14 char REV[50]=ID; 14 char REV[50]=ID;
15   15  
16 int8 heat; 16 int8 heat;
-   17 int1 flag;
17   18  
18 #INT_RDA 19 #INT_RDA
19 rs232_handler() 20 rs232_handler()
20 { 21 {
21 char ch; 22 char ch;
Line 25... Line 26...
25 heat=0; // Need warmer 26 heat=0; // Need warmer
26 } 27 }
27 else 28 else
28 { 29 {
29 heat=MAXHEAT; // Stop heating 30 heat=MAXHEAT; // Stop heating
30 } 31 };
-   32  
-   33 flag=TRUE;
31 } 34 }
32   35  
33   36  
34 unsigned char PEC_calculation(unsigned char pec[]) // CRC calculation 37 unsigned char PEC_calculation(unsigned char pec[]) // CRC calculation
35 { 38 {
Line 146... Line 149...
146 setup_vref(FALSE); 149 setup_vref(FALSE);
147 setup_oscillator(OSC_4MHZ|OSC_INTRC); 150 setup_oscillator(OSC_4MHZ|OSC_INTRC);
148   151  
149 delay_ms(1000); 152 delay_ms(1000);
150 printf("\n\r* Mrakomer %s (C) 2007 KAKL *\n\r",VER); // Welcome message 153 printf("\n\r* Mrakomer %s (C) 2007 KAKL *\n\r",VER); // Welcome message
151 printf("* %s *\n\r\n\r",REV); 154 printf("* %s *\n\r",REV);
-   155 printf("<#seq.> <ambient temp.> <space temp.> <status>\n\r\n\r");
152 tempa=ReadTemp(SA, RAM_Tamb); // Dummy read 156 tempa=ReadTemp(SA, RAM_Tamb); // Dummy read
153 temp=ReadTemp(SA, RAM_Tobj1); 157 temp=ReadTemp(SA, RAM_Tobj1);
154   158  
155 n=0; 159 n=0;
156 heat=MAXHEAT; 160 heat=MAXHEAT;
-   161 flag=FALSE;
157 162  
158 enable_interrupts(GLOBAL); 163 enable_interrupts(GLOBAL);
159 enable_interrupts(INT_RDA); 164 enable_interrupts(INT_RDA);
160   165  
161 while(TRUE) 166 while(TRUE)
162 { 167 {
-   168  
-   169 if (flag)
163 n++; 170 {
-   171 n++; // Increment the number of measurement
164   172  
165 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor 173 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor
166 temp=ReadTemp(SA, RAM_Tobj1); 174 temp=ReadTemp(SA, RAM_Tobj1);
167   175  
-   176 to=(signed int16)(temp*2-27315);
-   177 ta=(signed int16)(tempa*2-27315);
-   178  
-   179 printf("%Lu %.1g %.1g ",n,(float)ta/100,(float)to/100);
-   180  
168 if((0==tempa)||(0==temp)) // Transfer error? 181 if((0==tempa)||(0==temp)) // Transfer error?
169 { 182 {
170 printf("%Lu;ta:-273;ts:-273;sta:-1\n\r",n); 183 printf("-1\n\r");
171 output_low(HEATING); 184 heat=MAXHEAT;
172 } 185 }
173 else 186 else
174 { 187 {
175 to=(signed int16)(temp*2-27315)/100; -  
176 ta=(signed int16)(tempa*2-27315)/100; -  
177   -  
178 printf("%Lu;ta:%Ld;ts:%Ld;sta:",n,ta,to); -  
179 if (heat>=MAXHEAT) 188 if (heat>=MAXHEAT) // Active heating?
180 { 189 {
181 printf("0\n\r"); 190 printf("0\n\r");
182 output_low(HEATING); -  
183 } 191 }
184 else 192 else
185 { 193 {
186 printf("1\n\r"); 194 printf("1\n\r");
-   195 }
-   196 }
-   197  
-   198 flag=FALSE;
-   199 };
-   200  
-   201 if (heat>=MAXHEAT) // Continue heating?
-   202 {
-   203 output_low(HEATING);
-   204 }
-   205 else
-   206 {
187 output_high(HEATING); 207 output_high(HEATING);
188 heat++; 208 heat++;
189 } 209 }
190 }; -  
191 restart_wdt(); 210 restart_wdt();
192 delay_ms(900); 211 delay_ms(1000);
193 } 212 }
194 } 213 }
195   214