TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: thegame en 14 de Octubre de 2012, 16:03:17

Título: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 14 de Octubre de 2012, 16:03:17
Hola que tal

Se muy bien que existen muchos temas acerca de lo mismo,pero me gustaria saber si alguien a tenido este problema con este PIC en especifico que es el que estoy usando,he intentado hacerlo por distintos medios pero sin exito,uso un max232 armado segun las hojas del fabricante y lo he checado con algunos otros proyectos y esa parte no parece estar mal,ademas esta montada ya en PCB,asi que descarto falsos contactos ya que lo he checado mil veces,coloco un codigo pequeño que realice para ver la parte de la recepcion de datos,les pido le echen una mirada y me digan si estoy cometiendo algun error.

Nota: en algun otro post lei que en ocaciones fallaba la interrupcion del RS232 y lo hice sin y con la misma sin resultados,la version del compilador que uso es la 4.120 de CCS

se acepta cualquier sugerencia,gracias.

Código: [Seleccionar]
#include<16f1933.h>

//Directivas al compilador
#fuses HS,NOWDT,MCLR,NODEBUG,PUT,NOBROWNOUT,NOLVP,NOPROTECT  //Bits de configuracion
#use delay(clock=20000000) //Velocidad del cristal
#use RS232(UART1,baud=9600,xmit=pin_c6,rcv=pin_c7,stop=1,parity=n,bits=8) //Configuracion para el RS232

#byte porta=0x00C

void main(void)
{
setup_adc(ADC_OFF); //Apagamos convertidor AD
setup_adc_ports(NO_ANALOGS); //Desactivamos el convertidor analogico-digital
setup_comparator(NC_NC_NC_NC);  //Desactivamos comparadores de manera general
setup_ccp1(CCP_OFF); //Desactivamos el comprador 1
setup_ccp2(CCP_OFF); //Desactivamos el comprador 2
setup_ccp3(CCP_OFF); //Desactivamos el comprador 3

//Configuramos los pines de los puertos atraves de los registros TRIS
set_tris_a(0b00000000);

while(true)  //Iniciamos ciclo infinito
{
if(kbhit())
{
bit_set(PORTA,5);
}
}
}
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 14 de Octubre de 2012, 16:33:21
Actualizare a una version de compilador mas actual para ver si se corrige,ya que por ejemplo el pickit2 no tiene soporte para ese pic desde MPLAB y en el ejecutable individual se tienen que actualizar las listas de dispositivos o no lo reconoce....espero que sea por ahi el problema....otro bug de CCS,amenos que me digan algo mas....
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 14 de Octubre de 2012, 17:40:42
Nop no se corrige,pase de la version 4.120 a la 4.130 y nada sigue igual....alguna idea???
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 14 de Octubre de 2012, 19:02:41
lo probaste en Proteus? para descartar falla de programa?

EDITO:

prueba a cambiar el bit_set(PORTA,5); por output_high(PIN_A4);
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 14 de Octubre de 2012, 20:00:47
No lo he probado en proteus,probare a cambiar lo que me comentas,gracias.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 14 de Octubre de 2012, 20:25:15
nop no funciona con el cambio que me mencionas  :(
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 14 de Octubre de 2012, 21:33:43
que extraño... supongo que con el programa deseas recibir algun dato? el programa que posteaste es solo para que cuando el pic detecte un start bit suba a 5v un pin, en proteus el codigo a mi me funciona, uso la version 4.104, apenas apreto una tecla en la virtual terminal el pin se activa, con el codigo que te propuse, basicamente solo eso hace una sola vez, si lo pruebas en pic real mide el voltaje de salida del pin. puede que te moleste pero, asegurate que el pin MCLR este a 5v ya que activas el master clear en los fuses, si no vas a usarlo cambia el MCLR por NOMCLR.

puedes cambiar el codigo que te propuse por output_toggle(PIN_AX); con eso el pin que coloques en X debiese cambiar su estado cada vez que el pic recibe un start bit.

espero te funcione Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 00:55:29
ijole pues esta muy raro,ya me decidi a reprogramarlo con el compilador de microchip,el hitech,volvi a releer como 10 veces las hojas de datos referente a la recepcion del rs232,ya que por ahora solo me interesa la recepcion,muchas gracias fantaxmax te lo agardesco,pondre aqui el resultado de este problema....colocare el hardware que estoy usando talves la estoy regando en eso...
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 01:01:26
Haber aqui esta el hardware que uso,igual ahi la estoy regando,creo que me involucre tanto en el problema que seguramente estoy dejando pasar algun detalle en el hardware,echenle un ojo y gracias.

Esquematico Max232 (http://img8.uploadhouse.com/fileuploads/16755/167550315fe05ceb9a1279fe880abc890683c005.jpg)
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 01:42:22
Alguien podria simular porfavor en proteus este codigo y decirme si funciona o no??? se los agradeceria,este esta en Hitech 9.70 y nada,creo que si va a ser un problema de hardware o almenos que la este regando en mi programacion:

Código: [Seleccionar]
//Libreria principal
#include<htc.h>

//Prototipos de funciones
void configuracion_rs232(void);

//Variables
unsigned char errores=0x00;
unsigned char dato_recibido=0x00;
unsigned char recibido=0;

void main(void)
{
configuracion_rs232();
while(1)
{
if(recibido==1)
{
//Leemos el bit de error FERR
if(FERR==1)
RA5=1;
else
RA5=0;
dato_recibido=RCREG;
if(dato_recibido!=0x00)
RA4=1;
}
recibido=0;
}
}

void configuracion_rs232(void)
{
//Configuramos tris
TRISA4=0; //para un led indicador
TRISA5=0; //Para un led indicador
TRISC7=1; //Recepcion RS232
TRISC6=0; //Transmision RS232
//Configuramos el baud rate
SPBRG=520;
BRGH=1;
BRG16=1;
//Habilitamos el puerto serie y el modo asincrono
SPEN=1;
SYNC=0;
//Habilitamos la interrupcion
RCIE=1;
PEIE=1;
GIE=1;
//Habilitamos la recepcion
RCIE=1;
}

void interrupt recepcion(void)
{
if(RCIF==1)
{
recibido=1;
}
RCIF=0;
}
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 01:55:23
Haber segun yo lo basico para que la recepcion funcione en cuanto a conexiones se refiere solo se requieren recepcion,transmision(para usarlo a futuro) y tierra,o no????

o si se ocupa algun otro pin??? esto es para poder conectar un lector de codigo de barras de la marca Posline modelo LC2300.

les dejo el link con el pinout del conector con el que me guie para hacer las conexiones,creen que tenga que conectar algo mas??? porque siento que va a ser de hardware

Pinout conector RS232 (http://www.hardwarebook.info/Serial_(PC_9))
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 12:18:05
Despues de muchas pruebas creo que el problema esta en mi lector,como que hace falta una inicializacion o algo asi aunque no hay mucha informacion del mismo,y tendre que probar mi target con la pc o con otra cosa.... :(

Se aceptan sugerencias.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 15 de Octubre de 2012, 12:35:30
esas 4 resistencias en serie nunca habia visto que las utilizaran en el max232, prueba retirandolas si ya estan en la placa, solo puentea ambos terminales de la resistencia y me cuentas

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 13:24:53
que cres que ya lo hice fantaxmax y nada sigue igual,siento que va a ser inicializacion,tendre que probar mi target con otro dispositivo o conectarlo a la PC para descartarlo,e investigar como preparar el lector para que transmita el dato. :(
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 15 de Octubre de 2012, 13:33:49
prueba primero con un programa que envie ejemplo una A por rs232 y conectalo al pc si la recibes obviamente el problema esta en otro lado, puedes hacer tambien un repetidor, tu le envias algo al pic y el pic te lo devuelve

Espero lo Soluciones

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 15 de Octubre de 2012, 16:27:27
ok asi lo hare muchas gracias por la ayuda,lo voy a arreglar :)
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 04:44:55
ok despues de mucho batallar mejor rediseñe y recontrui el pcb,mañana hare pruebas,gracias por la ayuda y aqui publicare los resultados
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 16 de Octubre de 2012, 08:38:56
ok despues de mucho batallar mejor rediseñe y recontrui el pcb,mañana hare pruebas,gracias por la ayuda y aqui publicare los resultados

los espero.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 15:36:15
pues hasta ahora esto es lo que llevo:

reconstrui el target y lo hice mas sencillo,cambie el max232 por el arreglo de transistores y funciona ok,lo conecte a la pc y realice una rutina de emision y recepcion y ok,en la pc veo correctamente la emision recepcion,incluso con cadenas de texto....

pero al conectar el lector (Posline LC2300) al target, no recibo ni papa,jaja,hice la prueba armando un cable con las 3 señales basicas TX,RX y GND y conectandolo a la pc y funcionaaaaaaaa osea que no hay necesidad de los otros pines o señales...

cambie los tipos de codigos de barras que estoy escaneando y si los lee el lector (emite un sonido al leer) pero no me envia el dato...

mis dos teorias de falla son:

1.- El lector requiere una rutina de inicializacion
2.- Mi firmware no jala con el lector

Alguna sugerencia.... :?
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 16:35:53
Ya revise la inicializacion de la intruccion #use rs232 y los registros correspondientes a el puerto serie se configuran bien en velocidad,recepcion,modo asincrono....
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 16 de Octubre de 2012, 16:42:43
en el pc usas la hyperterminal para obtener lo que envia el lector? si es asi no requiere inicializacion.
si usas un programa especializado, probablemente requiera inicializacion, pero descarto la opcion, ya que lee sin problemas al aplicarle voltaje.

no se me ocurre nada mas, puedes probar a con un pic capturar todos los datos que salen de la pc al momento de conectar el lector, y enviarlos por ejemplo al mismo pc o mostrarlos en una LCD, la linea TX del pc la conectarias a la RX del lector y la RX del pic, teoricamente no debieses tener problemas con esa conexion, ya que una es salida y dos son entradas, si llegase a salir algun dato o varios, es porque requiere inicializacion, y tu simplemente en tu firm le agregas esas lineas de codigo, y vuelves a probar la target con el lector, en el caso que no salieran datos, no se me ocurre donde este el problema.

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 17:01:07
que hare??? a seguir buscando la solucion.... :?
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 16 de Octubre de 2012, 17:05:38
que hare??? a seguir buscando la solucion.... :?

has eso que te digo captura los paquetes de salida y reenvialos al pc por otro puerto serial, si es que lo tienes, para descartar la rutina de inicializacion.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 17:06:21
buena idea fantaxmax...lo hare...no seria lo mismo si pusiera un programa en la PC que me capture todo lo que salga y entre del COM1 en el momento de conectar el lector???
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 16 de Octubre de 2012, 17:10:33
buena idea fantaxmax...lo hare...no seria lo mismo si pusiera un programa en la PC que me capture todo lo que salga y entre del COM1 en el momento de conectar el lector???

tambien es una buena idea, no se me habia ocurrido
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 17:19:40
Ok pues a ello,muchas gracias y te cuento que pasa...ojala sea eso
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 20:58:55
nada sin resultados,no veo que la pc le envie nada al lector continuo en la pelea.... :?
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 16 de Octubre de 2012, 23:57:17
no entiendo que pasa,ahora sin estar conectado el cable rs232 me hace cosas raras ya no se que hacer para que funcione correctamente jajaja
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 00:24:59
sinceramente, nose que puede ser, no se me ocurre ningun problema mas  :?

Espero que alguien te ayude a solucionarlo,

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 00:32:40
pues ni hablar,llevo 3 dias trabajando en esto y nada,una ultima pregunta,saben que voltaje minimo debe haber en MCLR para que opere el microcontrolador???
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 11:00:26
OK,sin resultados positivos aun,cuarto dia de trabajo continuo y es increible que no pueda echarlo a andar jaja,haber porfavor podria alguien colocar los pasos a seguir para una recepcion de RS232,gracias
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 12:35:34
pues ni hablar,llevo 3 dias trabajando en esto y nada,una ultima pregunta,saben que voltaje minimo debe haber en MCLR para que opere el microcontrolador???

MCLR debe estar a Vdd si es que esta activado en los fuses, si no da igual porque se usa como entrada

tu problema esta mas alla de mis conocimientos, lo siento,

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 12:59:40
gracias fantaxmax te agradesco la ayuda y comparto el avance que he tenido:

        -Cambie la version del compilador CCS de la 4.130 a la 4.128
        -Con el cambio de version estoy recibiendo pero el programa se queda pasmado

coloco el codigo que estoy probando y les comento donde no esta funcionando

Código: [Seleccionar]
#include<16f628a.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT,MCLR

#use rs232(BAUD=9600,XMIT=PIN_B2,RCV=PIN_B1,BITS=8,STOP=1,PARITY=N)

char recibio=0;

#INT_RDA
void recepcion(void)
{
recibio=1;
output_low(PIN_B3);
}

void config_interrupcion(void)
{
clear_interrupt(INT_RDA);
enable_interrupts(INT_RDA);
enable_interrupts(PERIPH);
enable_interrupts(GLOBAL);
}

void main(void)
{
config_interrupcion();
while(TRUE)
{
if(recibio==1)
{
output_low(PIN_B4);
}
}
}

-la instruccion del IF dentro del WHILE infinito,no la ejecuta.
-la de la interrupcion si me la hace correctamente,es decir entra a la interrupcion pero no al IF

Nota: los leds estan activos en bajo por ello les mando un 0 para encenderlos
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 13:22:12
no estoy seguro pero parece que cuando usas el uart por software como lo haces ahora, no funcionan las interrupciones, si vas a usar interrupciones por RDA, usa mejor el UART fisico, con eso a mi parecer debiese ingresar al if que no entra,

Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 13:49:55
amm pues yo tenia entendido que para hacerlo por software tenia que colocar esta instruccion FORCE_SW y de no hacerlo toma el UART del Hardware,talves me equivoco pero lo checo gracias fantaxmax
 
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 14:28:42
Nop no es eso,ahora se esta disparando la interrupcion de la nada incluso si desconecto el lector y sigue sin entrar al IF
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 15:21:54
Lo he conectado a la PC y con el siguiente codigo trabaja OK

Código: [Seleccionar]
#include<16f628a.h>
#use delay(clock=20000000)
#fuses MCLR,HS,NOWDT,NOPUT,NOBROWNOUT,NOPROTECT,NOLVP,NOCPD

#use rs232(BAUD=9600,XMIT=PIN_B2,RCV=PIN_B1,BITS=8,STOP=1,PARITY=N)

char c;

void config_interrupcion(void)
{
clear_interrupt(INT_EXT);
enable_interrupts(INT_EXT);
enable_interrupts(PERIPH);
enable_interrupts(GLOBAL);
}

void main(void)
{
//config_interrupcion();
printf("start");
while(TRUE)
{
if(kbhit())
{
c=getc();
if(c=='c')
{
output_toggle(PIN_B3);
}
}
}
}

Ahora me falta hacerlo funcionar con el Lector
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 15:47:09
Código: C
  1. #include<16f628a.h>
  2. #use delay(clock=20000000)
  3. #fuses MCLR,HS,NOWDT,NOPUT,NOBROWNOUT,NOPROTECT,NOLVP,NOCPD
  4.  
  5. #use rs232(BAUD=9600,XMIT=PIN_B2,RCV=PIN_B1,BITS=8,STOP=1,PARITY=N)
  6.  
  7. char c;
  8.  
  9. void config_interrupcion(void)
  10. {
  11.         clear_interrupt(INT_EXT);
  12.         enable_interrupts(INT_EXT);
  13.         enable_interrupts(PERIPH);
  14.         enable_interrupts(GLOBAL);
  15. }
  16.  
  17. void main(void)
  18. {
  19.         //config_interrupcion();
  20.         printf("start");
  21.         while(TRUE)
  22.         {
  23.                 if(kbhit())
  24.                 {
  25.                         c=getc();
  26.                         if(c!=0)
  27.                         {
  28.                                 output_toggle(PIN_B3);
  29.                                 delay_ms(1000); //lo uso para evitar que por cada byte que reciba cambie de estado
  30.                         }
  31.                 }
  32.         }
  33. }

prueba con ese codigo y el lector, cuando deslices la tarjeta, por cada transmision va a cambiar el estado, teoricamente Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 16:30:34
Probando tu codigo fantaxmax,con la PC,solo me lo ejecuta bien una ves y despues ya no responde,lo interesante aqui seria mas bien hacerlo trabajar para que me reciba y cheque la cadena completa de 8bytes que pretendo enviar,digamos que con un byte si funciona,hare mas pruebas y te comento,muchas gracias y se siguen aceptando sugerencias jeje
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 16:43:03
lo corrigo, agregale un c=0; despues del delay o antes como quieras, si lo estas probado con el pc, elimina el delay, el delay lo coloque solo para el lector dado que envia varios bytes de una, y podria el cambio no verse, en cambio con la pc puedes enviar un solo byte si lo deseas
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 17:51:27
Pues nop,de plano no logro hacer que el PIC me lea la cadena del lector,con la PC va bien pero con el lector de plano no,alguna idea de algo que me falte o que este mal
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 18:01:01
no tengo mas ideas, lo siento.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 19:05:40
alguien ha usado algun lector de codigo de barras similar al posline LC2300 o de algun otro tipo en conjunto con algun PIC
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 20:29:19
Ok,ya logre que el PIC me reciba lo que me envia el lector,uff,ahora el problema es que no siempre me acepta el codigo,es decir ese codigo activa silamente un pin del PIC por lo que en ocaciones no es a la primera pasada cuando funciona,digamos que tengo que pasarlo varias veces para que funcione

la pregunta ahora es,como hago para garantizar la lectura y chequeo del codigo????
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 20:49:19
imagino que en el programa con el que lo conseguiste, esperas los 8 bytes que envia el lector

y que bueno que lo consiguieras,
Saludos!
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 22:07:40
asi es,pero la recepcion no es confiable,en una pasada del codigo por el lector lo hace bien luego en las siguientes 3 no,jaja, y luego la siguiente es correcta y las siguientes 6 no jaja...

opte por poner solo un byte para recibir y el codigo de barras generarlo con ese mismo byte,por ahora eso me saca de problemas,aunque ahora tengo el detalle del voltaje en el MCLR,me llegan de 2.5 a 3v y no se activa el PIC,tengo que llevar el pin de MCLR a VDD desde el MPLAB y asi...sin problemas...que puedo hacer para corregir el voltaje???
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 22:20:25
Jojo ya lo arregle,me faltaba un punto de soldado en el pcb,como lo hice de dos caras jaja se me fue por la presion.

Pues por ahora funciona con un byte,creo que tengo un problema con mi recepcion pero...por ahora esto me sirve para solucionar el problema,y como hay que aportar al foro ahi va el codigo que me sirvio para esto,ojala alguien pueda completarlo y publicarlo para recibir correctamente digamos una cadena de 8 bytes,se que no es la gran cosa pero el chiste es aportar.

Especial agradecimiento al compañero fantaxmax que me estuvo ayudando y dando ideas,muchas gracias.

Código: [Seleccionar]
#include<16f628a.h>
#use delay(clock=20000000)
#fuses MCLR,HS,NOWDT,NOPUT,NOBROWNOUT,NOPROTECT,NOLVP,NOCPD

#use rs232(BAUD=9600,XMIT=PIN_B2,RCV=PIN_B1,BITS=8,STOP=1,PARITY=N)

char c[1]={'0'};
char clave[1]={'8'};
char count=0;

void main(void)
{
output_low(PIN_B5);
while(TRUE)
{
if(kbhit())
{
c[0]=getc();
}
if(c[0]==clave[0])
count++;

if(count==1)
{
output_toggle(PIN_B5);
count=0;
c[0]='0';
}
}
}

se que tal ves digan...por eso estaba llorando jajaja pues si jajaja pero es bueno cuando te resultan las cosas,lo voy a mejorar pero por tiempo ahora asi lo dejare
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 17 de Octubre de 2012, 22:23:22
Tambien mencionar que al pensar que mi PIC inicial el PIC16F1933 era el problema opte por reemplazar y migrar el proyecto a un PIC16F628A,pero dados los recientes eventos no deberia haber problema con el PIC16F1933....eso creo lo probare,tambien mensionar que la version de compilador usada fue la 4.128.
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: fantaxmax en 17 de Octubre de 2012, 22:39:15
para recibir los 8 bytes debes usar dos instrucciones gets con la primera recibes la trama correspondiente al primer track, con la segunda recibes la segunda trama, se usa dos dado que el lector al terminar la trama, si mal no recuerdo, una "pulsacion" de enter, creo que es 0x13, y eso la funcion la toma como termino del string, entonces inmediatamente debes volver a recibir otra string con la misma funcion.

con eso y si sabes el numero que se almacena en la tarjeta, armas tu propia puerta con codigo, si no es la misma tarjeta, el pic no hace nada
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 18 de Octubre de 2012, 16:22:47
buenas tardes a todos ya que esta el tema abierto quiero aprovechar...me estoy iniciando en esto de comunicación pc-pic y pues me hice el circuito que les muestro ahora que encontre en radikaldesig, hice la placa y al principio no me funciono después e hacer 3 placas mas me funciono...pero de la nada me dejo de funcionar...descarto el circuito de radikal porque cuando lo conecto al pc y toco una tecla me enciende el led de transmisión del rs232 y cuando lo conecto todo a los 5v me enciende el led de transmision del pic...pero desde ayer el pic no me manda nada...el led dice que transmite pero en la hyperterminal no recibo nada...no se si sera problema del codigo o del circuito...aqui les dejo el codigo y las imagenes del rs232, por cierto uso pic16f887 cristal de 10MHz con capacitores de 33nF, el codigo tambien lo consegui por internet para entenderle mejor al tema les agradeceria su ayuda...
Código: [Seleccionar]
#include <16f887.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=10000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#define LED_AZUL     PIN_B0
#define LED_VERDE    PIN_B1
#define LED_ROJO     PIN_B2
#define LED_AMARILLO PIN_B3
#define ENTRADA1  PIN_B4
#define ENTRADA2  PIN_B5
#define ENTRADA3  PIN_B6
#define ENTRADA4  PIN_B7

int opcion;


void mostrar_menu(){
   puts("\fComando     Control\r");
   puts("    0       Estado ENTRADAS");  
   puts("    1       Control LED-AZUL");
   puts("    2       Control LED-VERDE");
   puts("    3       Control LED-ROJO");
   puts("    4       Control LED-AMARILLO");
   puts(" Espacio    Menu");
   }


void funcion_led_azul(){
   output_toggle(LED_AZUL);
   if (input_state(LED_AZUL))
      puts("\fLed azul encendido");
   else
      puts("\fLed azul apagado");
}


void funcion_led_verde(){
   output_toggle(LED_VERDE);
   if (input_state(LED_VERDE))
      puts("\fLed verde encendido");
   else
      puts("\fLed verde apagado");
 }


void funcion_led_rojo(){
   output_toggle(LED_ROJO);
   if (input_state(LED_ROJO))
      puts("\fLed rojo encendido");
   else
      puts("\fLed rojo apagado");
}


void funcion_led_amarillo(){
   output_toggle(LED_AMARILLO);
   if (input_state(LED_AMARILLO))
      puts("\fLed amarillo encendido");
   else
      puts("\fLed amarillo apagado");
}


void funcion_lectura_entradas(){
   printf("\fEstado de la entrada 1 = %u", input(ENTRADA1));
   printf("\rEstado de la entrada 2 = %u", input(ENTRADA2));
   printf("\rEstado de la entrada 3 = %u", input(ENTRADA3));
   printf("\rEstado de la entrada 4 = %u\r", input(ENTRADA4));
}  


void main() {
  
   output_low(LED_AZUL),(LED_VERDE),(LED_ROJO),(LED_AMARILLO);
   puts("\fConexion establecida");
   puts("Pulsa barra espaciadora para abrir menu");
  
      for(;;){
         opcion = getc();
         switch(opcion){
         case ' ': mostrar_menu();
         break;
         case '0': funcion_lectura_entradas();
         break;        
         case '1': funcion_led_azul();
         break;
         case '2': funcion_led_verde();
         break;
         case '3': funcion_led_rojo();
         break;
         case '4': funcion_led_amarillo();
         break;
         }
      }
}
(http://www.radikaldesig.com/blog/rs232ttl/esquema.jpg)
(http://www.radikaldesig.com/blog/rs232ttl/comparacion.jpg)
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 18 de Octubre de 2012, 22:26:27
que tal jumu,tratare de darte algunas ideas y si digo alguna burrada que los expertos me corrijan vale....

No veo que configures tu MCLR,no se en que estado esta por default pero yo lo pondria en la configuracion de bits

revisaste la configuracion de tu hyperterminal,checa que sean los mismos parametros para la comunicacion,en el codigo no veo algo raro,salvo que a diferencia del que se publico al final de este tema, en la instruccion de #use RS232 use los bits de paridad y stop pero pues he visto programas en los que solo con la velocidad y la definicion de pines de transmision y recepcion es suficiente y mas si comentas que ya funcionaba....

revisa tambien tu cable fisico con el que conectas al pic,o descartalo usandolo en otra aplicacion o aparatejo jeje,o simplemente prueba con otro cable...

otra podrias revisar que los registros del PIC relacionados con el RS232 se configuren correctamente,simulando en MPLAB,aunque si dices que el led o leds se encienden significaria que recibe un dato correcto....

porque no pruebas con la instruccion "printf" en las funciones de los leds en lugar de puts con ambas te deberia funcionar pero...no esta de mas probar...te funciona printf para mostrar el estado de las entradas??

Ojala algunas te sirva
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 18 de Octubre de 2012, 23:03:08
muchas gracias por contestas...bueno tendria que probar...otra cosa cambie el pic dos veces y nada...voy a ver si consigo otro cable y ver cambiar lo que tu dices...como configuro el mclr??...tambien lo simule en proteus y me funciona...tambien con el conector virtual de proteus compim y con puertos virtuales y tambien me funciona...pero probare con lo que me dijiste...muchas gracias..
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 20 de Octubre de 2012, 11:55:54
Que tal jumu

pues en las directivas para el compilador donde tu tienes

#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT

quedaria asi:

#fuses MCLR,HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT

Para decirle que usaras el Master Clear Reset ahora como dije antes no se si por default al no colocarlo en la linea (como lo tienes tu) se active solo,lo desconozco yo siempre lo coloco.

Revisa tus conexiones de alimentacion que si le lleguen los 5v al pic y al pin correcto,asi como al pin de MCLR

Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 20 de Octubre de 2012, 22:02:43
buenas noches thegame pues hice lo que me dijiste le puse los 5v a mclr y nada...mañana voy a probar otro cable y seguir probando y en otro computador...para descartar alguno o si de por si el circuito conversor lo tengo dañado...muchas gracias :D te cuento eso de mclr me ayudo con otro pic y me funciono el proyecto solo eso me faltaba :D gracias
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 21 de Octubre de 2012, 17:12:28
thegame aqui pensando un poco sobre lo de la comunicacion con el pic...no creo que sea el cable porque cuando presiono alguna tecla el led de recepción que conecte con el pic enciende...y el de transmicion del pic enciende cuando lo conecto a los 5v...estuve buscando y lei que tambien tiene que ver el largo de los cables y la calidad...ahora probare que tal me va con nuevos cables y ver que sale...ojala sea eso...porque la verdad no se que mas hacer :(
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 21 de Octubre de 2012, 18:02:34
bueno creo que es el integrado del max232 el que esta malo...porque hice estas pruebas que encontre por internet...
Citar
Tal y como lo menciona migsantiago, primero verifica si tu puerto serial trabaja si problemas, esto lo haces realizando un "corto fisico" entre los pines 2 y 3 del puerto serial (Tx y Rx del db9) es decir haces un loopback. Si todo sale bien debes hacer luego un loopback en le max232 y si todo está bien definitivamente es u problema de l micro que está dañado o del programa del micro.
hice lo del puerto y el cable esta bueno...recibi lo que mande...y con el max232 no me recibio nada...asi que creo que cambiare el max232 por uno nuevo porque se me daño este :( y lo feo es que aqui en honduras no se consigue mucho cosas de electronica :S...muchas gracias thegame
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 22 de Octubre de 2012, 13:49:33
bueno ya solucione mi problema :D y con transistores...encontre un circuito muy facil de armar y eficaz lo arme en mi proto y me funciono al 100...en esta semana hare la placa para solar los componentes y listo :D aqui dejo el diagrama por si a alguien que no puede conseguir el integrado max232 lo haga con transistores faciles de encontrar...
(http://www.tecnotopia.com/wp-content/uploads/circuitos/art84_2.jpg)
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 24 de Octubre de 2012, 10:45:49
hola jumu,disculpa el trabajo me ha consumido mi tiempo para checar el foro,y si justamente yo igual use ese arreglo de transistores para mi proyecto y funciono y tambien justamente cuando usaba el max232 no me funcionaba correctamente en ocaciones y desde que lo use me funciono excelente,de echo los dos target que elabore los entregue con arreglo de transistores para la transmision y recepcion de RS232 jojo

solo que observando el que tu pones,el mio cambia un poquitin checa:

(http://img9.uploadhouse.com/fileuploads/16801/168011522371afe9f0568ffac9071ec869f0c022.gif)

Pero igual los dos fununcian  :D
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: jumu en 24 de Octubre de 2012, 23:58:04
que mas thegame...sii ese integrado cuando mas lo necesitas te falla X_X...pero gracias a Dios hay circuitos a transisitores :D...sii ese lo arme y me funciono...pero donde encontre este la persona que lo modifico puso que sin la resistencia de 4.7k se obtiene mejor los voltajes negativos...no se porque razon...pero puso asi en su pagina...entonces no se como esta eso pero de que funciona funciona y excelente :D
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 24 de Enero de 2013, 19:56:52
van a decir que como es posible pero...aun no logro hacer que el PIC16F1933 me transmita y reciba correctamente por el RS232 jaja siempre que pruebo la misma rutina en un PIC16F628A va de maravilla,pero en ese PIC16F1933....nada esta embrujado me cae que si....

alguien ha trabajado con ese PIC y el RS232
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 24 de Enero de 2013, 20:16:41
he simulado y he checado los registros correspondientes al RS232 y todo parece normal,se habilita el modulo,la recepcion,la transmision y no hay bits que marque errores y nada que funciona.... :5]....
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 24 de Enero de 2013, 20:46:06
encontre que el pin para la transmision esta multiplexado con la funcion de ccp3 y pwm si no me equivoco,lo he desactivado y nada.....alguna idea de alguien???
Título: Re: Problema recepcion RS232 en PIC16F1933
Publicado por: thegame en 25 de Enero de 2013, 13:55:09
ya por fin,pude recibir y transmitir bien,el problema el bit de configuracion del PLL que no lo deshabilitaba,gracias a todos y a la persona que me dio la idea jeje :-/