在MC68HC908SR12 datasheet Page 384页 24.14.1里表24-12描述温度斜率为: VDD=5V±10%,GAINA=2,GAINB=6 MIN 1.275 ADCsteps/度,Typ 1.338ADCsteps/度,Max 1.372ADCsteps/度 我的电源VDD=5V±10%,GAINA=2,GAINB=6,我在程序里的设置如下:
word AD_word; AMGCR=81;//GAINA=2,GAINB=6 AMSCR=34;//00100010 //AMCDIV[1:0]=00 Analog Module Clock Divider Control Bits, // Set AMCDIV1 and AMCDIV0 bits to //zero for optimum analog module performance. //OPIFR =1 Amplifier Ready Interrupt Flag Reset, //1 = Clear OPIF bit //OPIF=0 Amplifier Ready Interrupt Flag // 1 = Two-stage amplifier output is ready //0 //DOF=0 DC Offset Flag, This is a reserved bit. //CDIFR=1 Current Detect Interrupt Flag Reset, //Writing a logic 1 to this write-only //bit clears the CDIF bit. //CDIF=0 Current Detect Interrupt Flag, //1 = Current detect interrupt has occurred AMCR=240;//11110000 Analog Module Control Register (AMCR) //PWR1 PWR0=1 1 CurrentDetectModule=On //TemperatureSensor=On Two-StageAmplifier=On //OPCH1 OPCH0 1 1 Internal temperature sensor //AMIEN =0 Analog module CPU interrupt requests disabled //DO[2:0]=000 DC Offset Control Bits //Set these bits to zero for optimum analog module performance.
while(!AMSCR_OPIF);//wait for Amplifier Ready ADICLK=0x54;//01010100 //010 ADIV2 ADIV1 ADIV0 ADC INPUT CLOCK/4 //1 ADICLK select internal clock //01 MODE1 MODE0 Right justified mode ADSCR=0x00|13;//select OPOUT while(!ADSCR_COCO); AD_word= (ADR0H&0x03)*256+ ADR0L;
但我得到的AD转换的数据总是从690到720,什么数都有,不稳定,我觉得实际温度就是20几度, 应该如何得到正确的温度,各位牛人请帮我.万分感谢了。 |