有人用过TINY24的内部温度传感器吗?
这两天被他弄疯掉了。
首先是1.1V参考源问题。 用内部5V做Vref,1.1V输入,采样结果与理论值相差20%! 同样的程序,同样内部5V做Vref,输入0.3V,0.5V,0.8V,和理论值相差1%。
方式是使用AD采样后从USART吧数据传送出来,基本能排除程序错误(外部输入,5V参考源下正确)。
其次是内部温度得到的AD值,基本等于典型的-40C,汗死。。。上海有这么冷吗?不过因为1.1V参考源问题没有排除,所以这条暂时无用。
有空请大家猜测一下可能是什么问题。
下面是程序,对应输入: 0x03 //00(RefVcc),PA3通道ADC采样的ADMUX设定值/// 0x21 //00(RefVcc),输入内部1.1V,///
两次采样,第一次舍弃,第二次通过USART传送
uint ADC_Acquisition(uchar cADMUX_Setting_Value) //ADC采样,返回10位结果/// { Uint_To_Uchar iADC_Value; uchar cADC_Convert_Delay_Loop; ADMUX = cADMUX_Setting_Value; //先切换通道/// ADCSRA |= 0x40; //ADCSRA=BIT6,转换开始/// for (cADC_Convert_Delay_Loop=250;cADC_Convert_Delay_Loop>0;cADC_Convert_Delay_Loop--) { //max=5*250/8=150us >> 50us/// if ((ADCSRA&0x40) == 0) { break; } } ADCSRA |= 0x40; //ADCSRA=BIT6,转换开始/// for (cADC_Convert_Delay_Loop=250;cADC_Convert_Delay_Loop>0;cADC_Convert_Delay_Loop--) { //max= >> 30us/// if ((ADCSRA&0x40) == 0) { break; } } iADC_Value.Uchars.Uchar_L = ADCL; iADC_Value.Uchars.Uchar_H = ADCH; return (iADC_Value.Uint); } |