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 {
163 n++; -  
164   -  
165 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor -  
166 temp=ReadTemp(SA, RAM_Tobj1); -  
167   168  
168 if((0==tempa)||(0==temp)) // Transfer error? -  
169 { -  
170 printf("%Lu;ta:-273;ts:-273;sta:-1\n\r",n); -  
171 output_low(HEATING); -  
172 } -  
173 else 169 if (flag)
174 { 170 {
-   171 n++; // Increment the number of measurement
-   172  
-   173 tempa=ReadTemp(SA, RAM_Tamb); // Read temperatures from sensor
-   174 temp=ReadTemp(SA, RAM_Tobj1);
-   175  
175 to=(signed int16)(temp*2-27315)/100; 176 to=(signed int16)(temp*2-27315);
176 ta=(signed int16)(tempa*2-27315)/100; 177 ta=(signed int16)(tempa*2-27315);
177   178  
178 printf("%Lu;ta:%Ld;ts:%Ld;sta:",n,ta,to); 179 printf("%Lu %.1g %.1g ",n,(float)ta/100,(float)to/100);
-   180  
179 if (heat>=MAXHEAT) 181 if((0==tempa)||(0==temp)) // Transfer error?
180 { 182 {
181 printf("0\n\r"); 183 printf("-1\n\r");
182 output_low(HEATING); 184 heat=MAXHEAT;
183 } 185 }
184 else 186 else
185 { 187 {
-   188 if (heat>=MAXHEAT) // Active heating?
-   189 {
186 printf("1\n\r"); 190 printf("0\n\r");
-   191 }
-   192 else
-   193 {
187 output_high(HEATING); 194 printf("1\n\r");
188 heat++; 195 }
189 } 196 }
-   197  
-   198 flag=FALSE;
190 }; 199 };
-   200  
-   201 if (heat>=MAXHEAT) // Continue heating?
-   202 {
-   203 output_low(HEATING);
-   204 }
-   205 else
-   206 {
-   207 output_high(HEATING);
-   208 heat++;
-   209 }
191 restart_wdt(); 210 restart_wdt();
192 delay_ms(900); 211 delay_ms(1000);
193 } 212 }
194 } 213 }
195   214