Era justo lo que queria... asi que me propuse a hacerlo, a pesar de mi falta de experiencia en los microcontroladores...
Aqui esta el codigo para que lo prueben, lo simulen, agradezcan, critiquen o mejoren.
Espero sus ideas..
P.D: Uso mikro c y el pic 12f675.. Pero la misma logica se puede aplicar para otros lenguajes, otros programas y otros pics
Código:
unsigned int temp1=0, temp2=0;
void main () {
ADCON0 = 0x00; // Inicializar
ANSEL = 0b001010; // Se va a usar el AN1 y el AN3 como entradas para el ADC
CMCON = 0x07; // Deshabilita los comparadores
GPIO = 0; // Initializa los puertos GPIO
WPU = 0; //apaga los pull ups (no se para que? jeje)
TRISIO = 0b011010; // configura GP0 y GP3 como salidas digitales
ANSEL = 0b001010; // Lo pongo de nuevo por si acaso jeje
VCFG_bit = 0; // esto es obvio, esta incluido en el ADCON0 creo
Delay_ms (30); // Retardito por si acaso
do {
if(temp1==0){
ADCON0 = 0b001100;
GPIO.F2 = ~GPIO.F2; // GP2 cambia de estado
temp1 = (ADC_Read(3)*1)+10; // Read AN3 channel
}// Tanto el factor que multiplica al ADC_Read(3) como el termino que se suma sirve para calibrar el rango del VCO
temp1--; // tiempo en que dura el semiciclo positivo y el negativo del 1er VCO
if(temp2==0){
ADCON0 = 0b001100;
GPIO.F0 = ~GPIO.F0; // GP0 cambia de estado
temp2 = (ADC_Read(1)*1)+10; // Read AN1 channel
} //
temp2--; // tiempo en que dura el semiciclo positivo y el negativo del 2do VCO
} while (1); // endless loop
}
Aqui esta el codigo para que lo prueben, lo simulen, agradezcan, critiquen o mejoren.
Espero sus ideas..
P.D: Uso mikro c y el pic 12f675.. Pero la misma logica se puede aplicar para otros lenguajes, otros programas y otros pics
Última edición: