Autor Tema: RS232 no funciona bien... alguna idea?  (Leído 2365 veces)

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

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
RS232 no funciona bien... alguna idea?
« en: 10 de Marzo de 2013, 08:28:55 »
bueno, pues la verdad es que me estoy ya mosqueando con el envio por RS232... tengo un pic18f2550 con un cristal de 12mhz, que junco con los pll activados consigo los 48mhz, este es el emisor...
despues tengo un pic16f628a trabajando con un oscilador externo de 4mhz.... para poderlo usar como generador de pwm de 4 canales por soft.... bueno pues el problema es que para probar la comunicacion estoy intentando enviad del emisor al receptor un valor int8... pero no hay manera que me llege el dato correcto.... ya que el pwm por hardware que es conforme lo tengo activado ahora para probar se vuelve loco....


este es el receptor.....

Código: CSS
  1. #include <16f628a.h> //pic a utilizar
  2. #fuses nomclr,xt,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
  3. #use delay (clock=4000000) //Fosc=4Mhz
  4. #use fast_io(b)
  5.  
  6. #use rs232(uart1,baud=9200,bits=8,parity=n,stop=1,ERRORS, rcv=pin_b1)
  7.  
  8. int16 valor_recibido;
  9. int16 valor;
  10. int8 dato=0xff;
  11.  
  12.  
  13. #int_rda
  14. void recepcion()
  15. {
  16.    if(kbhit()){
  17.       valor_recibido=0;
  18.       valor_recibido=getc();
  19.       valor=valor_recibido;
  20.       dato=0xFF;
  21.    }
  22. }
  23.    
  24.  
  25.  
  26. void main(void){
  27.    set_tris_b(0xF7);
  28.    setup_ccp1(CCP_PWM); //ccp1 modo PWM
  29.    setup_timer_2(T2_DIV_BY_16, 255, 1);
  30.    disable_interrupts(int_timer2);
  31.    enable_interrupts(int_rda);
  32.    enable_interrupts(global);
  33.  
  34.    while(true){
  35.     if(dato=0xFF){dato=0x00;set_pwm1_duty (valor);}  
  36.    }
  37. }


y este el emisor.... pegare solo la parte del codigo que trabaja.... ya que el resto de momento no influye en nada....


Código: CSS
  1. #include <18f2550.h>
  2. #device adc=10;
  3. #fuses NOMCLR,hspll,pll3,cpudiv2,PUT,NOWDT,NOBROWNOUT
  4. #use delay(clock=48000000)
  5.  
  6. #use fast_io(a)
  7. #use fast_io(b)
  8. #use fast_io(c)
  9. #include <tft_st7735_spi.h>
  10. //#include <TLV5617.c>
  11. #include <imagenes.h>
  12. #use rs232(uart1,baud=9200,bits=8,parity=n,stop=1,errors, xmit=PIN_C6)
  13.  
  14. void main(){
  15.  
  16.    set_tris_a(0xFF);
  17.    set_tris_b(0xF0);
  18.    set_tris_c(0x0F);
  19.    port_b_pullups(PIN_B4|PIN_B5|PIN_B6|pin_b7);
  20.    setup_adc(ADC_CLOCK_DIV_64);
  21.    setup_adc_ports (AN0_TO_AN3_ANALOG|VSS_VDD);
  22.    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
  23.    enable_interrupts(int_timer1);
  24.    enable_interrupts(int_rb);
  25.    disable_interrupts(global);
  26.    lcd_initial();
  27.    tft_color_simple(fondo);
  28.    pintar_texto(5,40,inicio,1,white,0);
  29.    pintar_texto(30,98,inicio_2,2,white,0);
  30.  
  31.    for(sub_menu=5;sub_menu<=1000;sub_menu+=5){
  32.       putc(sub_menu);
  33.       delay_ms(1000);
  34.    }
  35. ..... aqui continua con el programa... pero el resto es innecesario ya que aun no trasmite nada en el resto del programa....

decir que sub_menu es una variable de 8bits.....
a ver si me podeis echar una mano.... a ver de donde viene el dichoso problema.....

PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado _LAB_

  • PIC10
  • *
  • Mensajes: 36
Re: RS232 no funciona bien... alguna idea?
« Respuesta #1 en: 11 de Marzo de 2013, 01:37:27 »
Hola. No uso el CCS asi que mucha ayuda con el codigo no te puedo dar lo que si noto es que estas tratando de transmitir a 9200 baudio cuando deberías colocar 9600.
Saludos!.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: RS232 no funciona bien... alguna idea?
« Respuesta #2 en: 11 de Marzo de 2013, 02:01:49 »
Hola. No uso el CCS asi que mucha ayuda con el codigo no te puedo dar lo que si noto es que estas tratando de transmitir a 9200 baudio cuando deberías colocar 9600.
Saludos!.

probé de igual forma sin resultado... Creo que probare otra versión del ccs por sí las moscas, ya que no sería de entrañar que tuviera algún bug
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado _LAB_

  • PIC10
  • *
  • Mensajes: 36
Re: RS232 no funciona bien... alguna idea?
« Respuesta #3 en: 11 de Marzo de 2013, 13:39:11 »
Prueba primero cada pic con una comunicacion con el PC via serial para ir descartando posibles errores...
Además el mismo CCS en la ayuda tiene varios ejemplos que deberían funcionar sin problemas. Implementa estos y luego vas modificando, para ver como andas...
Saldos y suerte!!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: RS232 no funciona bien... alguna idea?
« Respuesta #4 en: 11 de Marzo de 2013, 15:15:22 »
Lee bien la ayuda del USE_Delay().
En vez de clock usa crystal y despues me cuentas si hubo cambios...

Y por supuesto, trata de usar velocidades estandar, como 9600, 4800, 19200.

Los 9200 solo complican a la rutina a hacer calculos, que en las demas ya estan hechos...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: RS232 no funciona bien... alguna idea?
« Respuesta #5 en: 11 de Marzo de 2013, 19:32:55 »
Prueba primero cada pic con una comunicacion con el PC via serial para ir descartando posibles errores...
Además el mismo CCS en la ayuda tiene varios ejemplos que deberían funcionar sin problemas. Implementa estos y luego vas modificando, para ver como andas...
Saldos y suerte!!
mi pc ni tiene rs232.... :(
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: RS232 no funciona bien... alguna idea?
« Respuesta #6 en: 11 de Marzo de 2013, 19:40:26 »
Lee bien la ayuda del USE_Delay().
En vez de clock usa crystal y despues me cuentas si hubo cambios...

Y por supuesto, trata de usar velocidades estandar, como 9600, 4800, 19200.

Los 9200 solo complican a la rutina a hacer calculos, que en las demas ya estan hechos...

sigo con las mismas..... cambie el #use delay(clock=XXXXX) por use delay(crystal=XXXXX) y no me funciona..... lo de 9200 baudios fue a una desesperada.....
probe por probar.... al igual que probe los rates mas bajos y mas altos.....
al final me tocara pillar un pic con spi que seguro me resulta menos molesto....
me pillare un 16f1503 que ya lleva 4 pwm, aunque solo podre usar 3 por hardware, y lo probare por spi.... ya que la funcion del 16f628A es para poder modificar 4 pwm para las velocidades de mi controlador de ventiladores....
seguire probando.... a ver si me bajo otra version del ccs y pruebo que ya creo que es lo ultimo que me falta por probar....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: RS232 no funciona bien... alguna idea?
« Respuesta #7 en: 11 de Marzo de 2013, 20:25:59 »
ppyote
Quita esta linea
#use fast_io(b) y esta otra: set_tris_b(0xF7);

Y prueba la recepcion a ver como va, sino funciona haz lo siguiente: implementa el programa del blink para que el led parpadee cada 500ms o 1 seg, esto para ver si el oscilador realmente esta llendo a 4Mhz como lo indicas, ahora bien, si notas que el destello del led no cuadra con el tiempo fijado el problema esta en los fuses seguramente  :shock:
Y nos cuentas para ver como te fue  :mrgreen:

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: RS232 no funciona bien... alguna idea?
« Respuesta #8 en: 13 de Marzo de 2013, 09:39:05 »
ppyote
Quita esta linea
#use fast_io(b) y esta otra: set_tris_b(0xF7);

Y prueba la recepcion a ver como va, sino funciona haz lo siguiente: implementa el programa del blink para que el led parpadee cada 500ms o 1 seg, esto para ver si el oscilador realmente esta llendo a 4Mhz como lo indicas, ahora bien, si notas que el destello del led no cuadra con el tiempo fijado el problema esta en los fuses seguramente  :shock:
Y nos cuentas para ver como te fue  :mrgreen:

está noche probare a ver sí funciona... A ver sí me da us respiro mi hijo y mi mujer y pruebo
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: RS232 no funciona bien... alguna idea?
« Respuesta #9 en: 15 de Marzo de 2013, 19:34:59 »
bueno... ya esta solucionado el problema....
cual era? era fallo del ccs... en los fuses del emisor, el 18f2550 los tenia asi....#fuses NOMCLR,HSPLL,PLL3,CPUDIV2,PUT,NOWDT,NOBROWNOUT y poniendo un delay(clock=48mhz) y como en anteriores mensajes me habian recomendado... probe con un led.... y cual es mi sorpresa que el oscilador no funcionaba bien... realmente estaba trabajando a 32mhz.... asi que cambie los fuses #fuses NOMCLR,HSPLL,PLL3,CPUDIV,PUT,NOWDT,NOBROWNOUT

problema del postcaler.... que en vez de ponerle CPUDIV ponia CPUDIV2... lo malo que me guiaba por el datasheet y este no se equivocaba, si no que era el puñetero ccs....

por si a alguien le sirve de ayuda... ahi queda eso... CCS cuanto te quiero pero... como te odio ....

gracias a todos por la ayuda... un saludo....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...