Ah, jeje, creo que he visto el problema.
No has puesto #use fast_io(A)
Al no tenerlo, en el momento que haces output_a(0b0001000); me apuesto lo que quieras a que eso desconfigura la entrada analógica y la pone en digital.
Bueno antes que nada un saludo a todos....
Segun lo que entiendo del manual, el CCS por defecto usa #use standard_io(A) , el genera lineas de codigo en el compilado cuando se modificara el estado de un pin para asegurar la direccion de uso del pin (I/O). Lo pueden comprobar con el archivo *.lst que se genera cuando compilan. Ahi esta el *.asm que se convertira en *.hex ....
Por lo de la operacion aritmetica mira como lo hago yo....
unsigned long cont;
int temp;
duty(6); // es una funcion para asignar el ciclo del trabajo, ya que set_pwm1_duty() no tiene en cuenta los 2 bit menos significaivos
while(!t(jp)){ // t lo tengo definido como bit_test .... es muy largo y no me gusta colocarlo en la preguntas. jp en un pin, ahi hay un boton
vt=read_adc(); // aqui obtengo el valor entre 0 y 1023
if(vt!=vt_ant) // pregunto si es diferente al anterior y si lo es , que entre en el if
{
vt_ant=vt; // hago la conversion anterior igual a la nueva
cont=(0.13*vt)+6; // Aqui hago una regla de tres para convertir 0-1023 a 6-138... la operacion real era cont=(vt*138)/1023 + 6
// pero como se desbordaba la multiplicacion sobre los dos bytes que tiene cont, opte por 138/1023=0.13
temp=make8(cont,0); // Como cont es de 2 bytes solo necesito el byte menos significativo y con make8 saco el byte 0 de cont y lo llevo a temp
duty(temp);
}
Y por otro lado yo tambien tengo el problema del potenciometro, lo conecto de igual manera que Dark y por mas que muevo el pot solo me varian unos cuantos milivoltios a la entrada del pic. Cuando no lo tengo a la entrada del pic, funciona de maravilla el divisor de tension del pot. Lo mas curioso es que cuando conecto la entrada del pic directamente a 0v(GND) ó 5v(Vcc) el pin si cambia el voltaje y registra lo 1023 ó 0 , correspondientes a la conversion.
Con esos datos tambien pense que el pot (50k) no esta dentro del permitido segun en el manual (10k a lo mucho) y le coloque un seguidor pero igual no me funciono. Luego lei aca en el foro y vi las posibilidad de modificar el codigo para asegurar la correcta configuracion, coloque el #use fast_io(a) y no funciono, yo no uso el set_tris_a() pero igual me dio por usarlo y tampoco.... bueno en fin programe tanto ese pic que me canse y opte por cambiar de pin y se soluciono el problema. Puede ser que estuviese quemado, pero coloque otro pic nuevo y pasaba lo mismo.... hablo del 12f683 el pin An3(#3) ...
Ojala alguien tenga idea de lo que pasa y puedar iluminarnos mas acerca del tema.
Un Abraso...