/********************************************Programme Principal************************************************/ int main(void) { init_OSC(); init_dsPIC(); init_DAC(); init_ADC(); while(1) { val=convertADC()*64; } return 0; }
void holdAtTemp(uint16_t targetTemp, uint16_t targetTime){ double readTemp; double lowerRange = 0; double upperRange = 0; double temp = 0; double avgTemp = 0.0; int numTemps = 0; lowerRange = targetTemp;// + 0.1; upperRange = targetTemp;// + 0.1; while(count_ms < 2*targetTime){//count increments at quarter seconds readTemp = convertADC(adc_read()); /* //send_serial("Denaturing temp is "); //send App uart_putchar(denTemp); uart_putchar('\n'); _delay_ms(1000); //send_serial("readTemp is "); //send App uart_putchar(readTemp); uart_putchar('\n'); _delay_ms(1000); */ _delay_ms(1);// don't forget about the delay in the adc_read function! if (readTemp < lowerRange){ OCR0A = (82 - (targetTemp-55)*2); // normalized to PWM @ 82 at 55C and increase duty cycle by 2 PWM values for each degree PORTB = Fan_OFF; // turn off fan PORTD = LED_OFF; // turn off led } else{ OCR0A = 255; // set heater to 0% duty cycle PORTB = Fan_OFF; // power off the fan PORTD = LED_ON; // turn on the led } if (readTemp > (upperRange + 1)){ OCR0A = 255; // heater PWM duty cycle set to 0% PORTB = Fan_ON; // turn on the fan PORTD = LED_OFF; // turn off led } if (timerFlag == 0){ // timer flag is true every 1/4 second temp += readTemp; // sums gathered temperatures numTemps++; // keep track of the number of temperatures gathered //timerFlag = 0; // reset the 1/4 second timer flag } if (timerFlag == 1){ avgTemp = temp / numTemps; // average the gathered temperature readings temp = 0; // reset the summed temperatures numTemps = 0; // reset the number of gathered temperatures timerFlag = 0; if (((avgTemp*10)/10 >= targetTemp+2) || ((avgTemp*10)/10 <= targetTemp-2)){ // if current temperature is outside of +/- 1C range count_ms = 0; //reset counter if temp is outside of +/- 1C range } //send_serial(avgTemp*10/10, count_ms); // } } count_ms = 0; //reset counter while(count_ms <= 8){ PORTD = LED_OFF; } count_ms = 0; //reset counter while(count_ms <= 8){ PORTD = LED_ON; } PORTD = LED_OFF; }