Saludos, estoy trabajando en un lector de frecuencia ya que tengo un sensor de color que convierte la cantidad espectral de luz de color en una determinada frecuencia, implemente la rutina que lee frecuencia que viene en el ejemplo del CCS y la modifique a mis necesidades, realizo el control y de momento necesito transmitir 400 datos del PIC a la PC para analizar el comportamiento por medio del PIC (si se que se puede hacer con el osciloscopio pero necesito datos que el micro pueda detectar). Como salida de mi pic tengo 3 potenciometros digitales de incremento los cuales mueven la referencia de tres fuentes de luz.
Me sucede algo curioso, envio datos a la computadora a 9200Bps y obtentengo mi frecuencia bien la puedo analizar y puedo colocar mi referencia adecuadamente, pero cuando aumento la velocidad de transmision a 115600 si obtengo una buena lectura de frecuencia pero no un buen ajuste de las referencias.
Cuando inicio el programa posiciono mis 3 potenciomestros a 8.4KOhms y durante la ejecucion del programa solo muevo uno de ellos a 9.4KOhms.
Si configuro la velocidad del puerto en 9200 cuando inicia se colocan los potenciometros al valor fijado.
Si configuro la velocidad del puerto a 115600 los potenciometros no se mueven a donde les he indicado.
Aqui esta el codigo principal:
#include <16f873a.h>
#include "tcs230.h"
#include "lib.h"
#fuses HS,NOWDT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=115600, xmit=PIN_c6, rcv=PIN_c7) <-------- Aqui le he cambiado y solo funciona con 9200
#define LED_estado PIN_B7
#define IR 85
#define IV 85
#define IA 85
int sube=0;
int32 sensor;
void main()
{
int i=0;
inicializa_pot();
filtro_rojo();
escala_100();
sube_azul(IA);
sube_verde(IV);
sube_rojo(IR);
printf ("Espera de 10 segundos para estabilizar . . . \r\n");
delay_s(10);
printf ("Comienza la medicion \r\n");
for (i=1;i<=250;i++)
{
sensor=lee_freq8();
printf("%LU \r\n",sensor);
}
sube_rojo(10);
for (i=1;i<=250;i++)
{
sensor=lee_freq8()*64;
printf("%LU \r\n",sensor);
}
printf ("Termina la medicion \r\n");
}
Las funciones que indico se localizan tanto en TCS230.h y lib.h y ya fueron probadas multitud de ocaciones y funcionan adecuadamente, de hecho el programa realiza la funcion que deseo pero me paso esto. Solo es eso, ya que la comunicacion serie se da bien.
Si se necesita puedo colocar lo que tengo en mis librerias.
Saludos
FJPPitta