Autor Tema: Sin establecer comunicación UART RS232  (Leído 1500 veces)

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

Desconectado donvalles

  • PIC10
  • *
  • Mensajes: 35
Sin establecer comunicación UART RS232
« en: 04 de Diciembre de 2014, 16:11:14 »
Me cerarrón el post anterior asi que tuve que abrir este, tengo el mismo problema y me todo el dia intentando establecer la comunicacion entre el pic y la pc , no se porque no me anda, use tres cristales diferentes, primero uno de 6MHZ, no funciono ni con pll , el segundo con un cristal de 10MHZ tampoco funciono y el tercero con cristal de 16MHz niii, que puede ser quiero hacerlo a 9600.

Código: C++
  1. include <18F4685.h>
  2.  
  3. #device adc=8
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
  6. #FUSES HS//HS                       //H4 High speed osc with HW enabled 4X PLL         //#FUSES HS                       //High speed Osc (> 4mhz)
  7. #FUSES NOPROTECT                //Code not protected from reading
  8. #FUSES BROWNOUT                 //Reset when brownout detected
  9. //#FUSES BORV24                   //Brownout reset at 2.0V//#FUSES BORV20                   //Brownout reset at 2.0V
  10. #FUSES PUT                      //Power Up Timer
  11. #FUSES NOCPD                    //No EE protection
  12. #FUSES STVREN                   //Stack full/underflow will cause reset
  13. #FUSES NODEBUG                  //No Debug mode for ICD
  14. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  15. #FUSES NOWRT                    //Program memory not write protected
  16. #FUSES NOWRTD                   //Data EEPROM not write protected
  17. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  18. #FUSES FCMEN                    //Fail-safe clock monitor enabled
  19. #FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
  20. #FUSES BBSIZ4K                  //4K words Boot Block size
  21. #FUSES NOWRTC                   //configuration not registers write protected
  22. #FUSES NOWRTB                   //Boot block not write protected
  23. #FUSES NOEBTR                   //Memory not protected from table reads
  24. #FUSES NOEBTRB                  //Boot block not protected from table reads
  25. #FUSES NOCPB                    //No Boot Block code protection
  26. #FUSES NOLPT1OSC                //Timer1 configured for higher power operation
  27. #FUSES MCLR                     //Master Clear pin enabled
  28. #FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
  29.  
  30. //#use delay(clock=40000000,crystal=10000000)
  31. #use delay(clock=16000000)
  32.  
  33. #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,ERRORS)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Sin establecer comunicación UART RS232
« Respuesta #1 en: 04 de Diciembre de 2014, 16:45:25 »
Solo veo las palabras de configuracion en el codigo que pasaste, nada mas.

El pic funciona ? es decir cambia alguna salida al menos ? o es solo el UART que no anda ?. Imagino que es CCS

Desconectado donvalles

  • PIC10
  • *
  • Mensajes: 35
Re: Sin establecer comunicación UART RS232
« Respuesta #2 en: 04 de Diciembre de 2014, 19:17:17 »
El pic funciona a una velocidad de 57600 con cristal de 6MHz y pll x 4, pero cuando lo re configuro para 9600 no funciona más, el resto del codigo es bien simple


main(){
for(;;)
{
puts("Hola");
//printf("Hola");
delay_ms(1000);
}
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Sin establecer comunicación UART RS232
« Respuesta #3 en: 04 de Diciembre de 2014, 19:47:38 »
Cristal de 6Mhz  y PLL de 4x . No Serian 24Mhz?

Por lo tanto no deberias poner:

#use delay(clock=24000000)

Creo que deberia conocer el reloj para calcular el baud rate, y si lo estas poniendo mal, lo mas seguro que no ande. Deberia andar por que no tiene otra cosa... Si em decis que el PIC anda con esos fuses, entonces va a andar por mas que le cambies el baud rate, ya que modificar el baud rate es solo modificar un registro.

Y tambien no se por que omiten las configuraciones de paridad/bits ya que no se cual es el valor por default. ( parity=N,bits=8 ).

Te fijaste si el #use rs232 setea correctamente los TRIS de los puertos ? creo que vi una version que no lo hace, para eso podrias fijarte en el ASM. O configura los TRIS vos mismo.
tal cual lo pide el datasheet, y si no podes configurar el modulo USART escribiendo en los registros y con eso probar, de esa forma te liberas de que sea la instruccion #use rs232()
« Última modificación: 04 de Diciembre de 2014, 20:14:01 por KILLERJC »