Autor Tema: Problema recepcion RS232 en PIC16F1933  (Leído 8168 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #45 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???
Nunca se deja de aprender

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #46 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
Nunca se deja de aprender

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #47 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.
Nunca se deja de aprender

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #48 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
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #49 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;
         }
      }
}


Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #50 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
Nunca se deja de aprender

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #51 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..

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #52 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

Nunca se deja de aprender

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #53 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

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #54 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 :(

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #55 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

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #56 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...

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #57 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:



Pero igual los dos fununcian  :D
Nunca se deja de aprender

Desconectado jumu

  • PIC12
  • **
  • Mensajes: 83
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #58 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

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Problema recepcion RS232 en PIC16F1933
« Respuesta #59 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
Nunca se deja de aprender