示例#1
0
/********************************************Programme Principal************************************************/
int main(void)
{
init_OSC();
init_dsPIC();
init_DAC();
init_ADC();
while(1)
	{
	val=convertADC()*64;
	}
return 0;
}
示例#2
0
文件: H_C.c 项目: matthewk42/PCR-Code
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;	
	
}