amigos amantes de los micros!
he aqui una nueva pregnuta de mi proyecto estoy leyendo tres señales analogicas por un adc del pic16f874a y de los tres canales que leo (ra0,ra1,ra2) el 3 que corresponde al ra2 esta super inestable, es decir es los otros 2 canales tengo un valor de 0x76 y en el canal inestable tengo 0xf9... escuche por ahi que cuando leo los 3 canales del pic dan problemas el adc es correcto? he aqui mi codigo sencillito:
unsigned int numero1,numero2,numero3,numero4,numero5,numero6;
void main() {
ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = 0xFF; // PORTA como entrada analogica
Usart_Init(9600);
do {
//chanel 0
ADCON0.F3=0;
ADCON0.F4=0;
ADCON0.F5=0;
temp_res = Adc_Read(0); // Get results of AD conversion
numero1=ADRESH; //parte alta del registro
numero2=ADRESL; //parte baja del registro
Delay_ms(9);
//chanel 1
ADCON0.F3=1;
ADCON0.F4=0;
ADCON0.F5=0;
temp_res = Adc_Read(1); // Get results of AD conversion
numero3=ADRESH; //parte alta del registro
numero4=ADRESL; //parte baja del registro
Delay_ms(9);
//chanel 2
ADCON0.F3=0;
ADCON0.F4=1;
ADCON0.F5=0;
temp_res = Adc_Read(2); // Get results of AD conversion
numero5=ADRESH; //parte alta del registro
numero6=ADRESL;
Delay_ms(9);
Usart_Write(numero1); //manda patrte alta
Delay_ms(2);
Usart_Write(numero2); //manda parte baja
Delay_ms(1000);
Usart_Write(numero3); //manda patrte alta
Delay_ms(2);
Usart_Write(numero4); //manda parte baja
Delay_ms(1000);
Usart_Write(numero5); //manda patrte alta
Delay_ms(2);
Usart_Write(numero6); //manda parte baja
Delay_ms(2); //retardo 1 segundo
Delay_ms(1000);
//resetea todas las variables
ADRESH=0;
ADRESL=0;
numero1,numero2,numero3,numero4,numero5,numero6=0;
Delay_ms(20);
} while(1);
}
he aqui una nueva pregnuta de mi proyecto estoy leyendo tres señales analogicas por un adc del pic16f874a y de los tres canales que leo (ra0,ra1,ra2) el 3 que corresponde al ra2 esta super inestable, es decir es los otros 2 canales tengo un valor de 0x76 y en el canal inestable tengo 0xf9... escuche por ahi que cuando leo los 3 canales del pic dan problemas el adc es correcto? he aqui mi codigo sencillito:
unsigned int numero1,numero2,numero3,numero4,numero5,numero6;
void main() {
ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = 0xFF; // PORTA como entrada analogica
Usart_Init(9600);
do {
//chanel 0
ADCON0.F3=0;
ADCON0.F4=0;
ADCON0.F5=0;
temp_res = Adc_Read(0); // Get results of AD conversion
numero1=ADRESH; //parte alta del registro
numero2=ADRESL; //parte baja del registro
Delay_ms(9);
//chanel 1
ADCON0.F3=1;
ADCON0.F4=0;
ADCON0.F5=0;
temp_res = Adc_Read(1); // Get results of AD conversion
numero3=ADRESH; //parte alta del registro
numero4=ADRESL; //parte baja del registro
Delay_ms(9);
//chanel 2
ADCON0.F3=0;
ADCON0.F4=1;
ADCON0.F5=0;
temp_res = Adc_Read(2); // Get results of AD conversion
numero5=ADRESH; //parte alta del registro
numero6=ADRESL;
Delay_ms(9);
Usart_Write(numero1); //manda patrte alta
Delay_ms(2);
Usart_Write(numero2); //manda parte baja
Delay_ms(1000);
Usart_Write(numero3); //manda patrte alta
Delay_ms(2);
Usart_Write(numero4); //manda parte baja
Delay_ms(1000);
Usart_Write(numero5); //manda patrte alta
Delay_ms(2);
Usart_Write(numero6); //manda parte baja
Delay_ms(2); //retardo 1 segundo
Delay_ms(1000);
//resetea todas las variables
ADRESH=0;
ADRESL=0;
numero1,numero2,numero3,numero4,numero5,numero6=0;
Delay_ms(20);
} while(1);
}