Hola firepic, gracias por el cumplido
Vamos a analizar lo que has comentado en tu ultimo mensaje. Con respecto a lo que has dicho en el punto 1, no puedo estar mas de acuerdo contigo, utilizar #use fast_io ahorra tiempo al procesador ya que las instrucciones y funciones que vienen incluidas con el CCS (conocidas comunmente como built-in functions) no pierden tiempo configurando el registro tris cada vez que son llamadas. La unica desventaja (por asi decirlo, aunque realmente no lo sea) que esto conlleva es que la persona que realiza el programa debe tener pleno control del estado de los puertos durante cada instante del programa, y configurar los mismos mediante set_tris cuando se lo requiera.
El metodo #use fixed_io es otro método tambien muy útil sobretodo si la direcciones de los puertos no cambian mucho durante el transcurso del programa. El problema del fixed_io es que la mayoria de la gente malinterpreta su función y lo asimila mucho a la configuración #use standart_io, cuando en realidad es muy similar, sino identica, a la fast_io cuando en tiempo de ejecución hablamos. La confusión se da, a mi entender, porque en la ayuda de CCS no se explica adecuamente el tema (para variar
) lo que da lugar a malinterpretaciones del mismo. No se a ustedes que les parece, pero no quiero explayarme mas sobre el fixed_io porque deformaria la temática original del post, asi que sigamos con el ADC
.
firepic, con respecto a lo que has expuesto en el segundo y tercer punto, tambien estoy complementamente de acuerdo contigo y te aplaudo de pie, pues has explicado en forma breve y concisa como debería realizarse correctamente el programa.
Con respecto a los "detalles" los he subestimado de tal forma para no parecer un maniatico obsesivo por la optimización, limpieza y orden de codigo, que, en realidad lo soy
. El problema de programar en lenguaje C ,y en realidad cualquier lenguaje que no sea ASM, es que es muy fácil colocar cosas de mas y derrochar recursos de nuestro PIC, a veces a tal punto de necesitar uno más potente o con más memoria que el esencialmente requerido.
Pocher, a mi me gusta mucho CCS, creo que dentro de todo es un buen programa, pero he aprendido con las malas que ni la ayuda ni los ejemplos que ofrecen son del todo correctos, uno puede darse cuenta de ello dandose una vueltita por el foro de la pagina del compilador donde los usuarios cuentan realmente la verdad de las cosas (extraña coincidencia, lo de fixed_io es un claro ejemplo de ello). Microchip hace referencia a las limitaciones del oscilador RC interno del ADC en muchas de sus Application Notes y reference manual's. Puedes leer este tema si te interesa, a lo largo de el hablo varias veces sobre la configuración del oscilador del ADC:
Seguimiento a los voltajes de I/O de un trafoQuiero terminar mostrando una taba sacada del Microchip PIC mid-range MCU reference manual, en el apartado del ADC de 10 bits:
Lean lo que dice la nota 4 que se aplica a la fila de la tabla que ocupa el oscilador RC interno, traduzco:
Para frecuencias del dispositivo por encima de 1 MHz, el dispositivo debe estar en modo Sleep durante toda la conversión, o la precisión del ADC puede estar fuera de las especificaciones.
En otros articulos el tema se trata con un poco más de profundidad, sin embargo queria exponer esa simple consideración.
Nos estamos escribiendo.