Я хочу использовать АЦП PIC10f222, и у меня нет этой проблемы:
#include <10F222.h>
#list
#device PIC10F222
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOMCPU //Master Clear Pull-up disabled
#FUSES NOMCLR
#FUSES IOSC4 //INTOSC speed 4 MHz
#device adc=8
#use delay(internal=4000000)
#define set_options(value){#ASM \
MOVLW value \
OPTION \
#ENDASM}
setup_adc(true);
set_tris_b (0b111); //set as output
set_options(0xDF); // Enable pin B2 for normal i/o
set_adc_channel(0);
adc1=read_adc();
Но, когда при VDD изменения АЦП показывает различные значения (и это тоже хорошо, потому что опорное напряжение VDD).
Я посмотрел в паспорте PIC10F222 и обнаружил «абсолютное значение напряжения», равное:
результат = 0,6 * 256 / VDD
Я могу получить ВДД из приведенного выше уравнения, а затем получить точное значение АЦП следующим образом:
adc_set_channel(2);
adc1=read_adc();
vdd=0.6 * 256 / adc1 ;
adc_set_channel(0);
adc=read_adc();
//get the percise adc in popotion of VDD
....
Но adc1 (эталон абсолютного напряжения не будет меняться с другим VDD от 4.9 до 5.2),
Как я могу решить эту проблему?