TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Jummi en 26 de Enero de 2011, 06:48:35
-
Estoy intentando enviar un dato a un pic18f4550 por el puerto serie y que me lo rebote usando el usb. El usb funciona bien, pero no soy capaz de enviar y recibir datos correctamente desde el puerto serie. Al principio pense que era un problema de que habia perturbaciones en la placa y hacia modificaba los datos, pero creo que el problema esta en la configuracion correcta para el uso del puerto. El programa, si lo compilo, funciona perfectamente en proteus, pero al montarlo no envia los datos bien. El cristal externo que uso es de 4 Mhz.
LA cabecera es esta :
#DEFINE OSC 48
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV2,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PC,errors)
Mire los foros aqui y añadi la linea de OSC 48, pero sigo sin tener resultados.
Alguien podria darme algo de luz en este problema?
Gracias a todos.
-
Ya encontre el problema, el Fuse CPUDIV2. Debe ser CPUDIV1.
-
y te funciona bien con PLL1 Y CPUDIV1 o usas fisicamente un cristal de 48MHz ?
Yo uso esta configuración para usb y rs232 pero con cristal de 20MHz y funciona biem
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN // 48 MHz para el USB y 20 MHz para el resto del sistema
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <usb_cdc_PER.h>
#define USB_CON_SENSE_PIN PIN_B2
Ya encontre el problema, el Fuse CPUDIV2. Debe ser CPUDIV1.