TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jvichu en 24 de Junio de 2013, 11:45:49
-
Hola amigos de todopic, tengo una duda y me gustaría compartirla con vosotros a ver si alguien puede arrojar un poco de luz sobre este asunto.
El caso es que dispongo de una placa de evaluacion de Microchip (PicDEM Z Net) que monta un pic 18F4620 para el desarrollo de aplicaciones con Zigbee, el caso es que quiero comunicar el pic que lleva esta placa con un pic 18F2620 que he montado en un circuito aparte mediante la USART.
Lo que me tiene un poco desconcertado es que el pic 18F4620 de la placa de evaluación, a la salida del pin RC6 obtengo siempre 3,3v tanto si envía datos como sino.
Puedo saber si esta enviando datos o no porque esta placa dispone de un puerto serial que conecto a mi ordenador y puedo ver por hyperterminal si se escribe algo.
¿Sabeis porque puede estar sacando ese voltaje?
Un saludo.
-
Un apunte, he visto que el registro SPEN del RCSTA esta a 1 lo que indica que el Serial Port esta habilitado.
¿Es posible que ese voltaje lo saque porque esta configurado como puerto serie?
Muchas gracias.
-
Sería de muchísima ayuda ver tu código para poder decirte supongo que ese pin lo tienes configurado como digital y de salida
-
Hola jvichu
Si te fijas en la pág 203 de la hoja de datos del 4620, verás que es necesario configurar RC6 y RC7 como entrada. Si, a pesar de que una de ellas funciona como salida.
• bit TRISC<7> must be set (= 1)
• bit TRISC<6> must be set (= 1)
Me ha quitado varias horas de vida este chiste.
Te sugiero un archivo con una serie de librerias que viene desde microchip que facilita muchísimo el uso de periféricos, yo no empiezo a programar si no abro este archivo antes.
http://ww1.microchip.com/downloads/en/devicedoc/mplab_c18_libraries_51297f.pdf
suerte
-
Hola, muchas gracias por vuestras respuestas, os comento:
Sería de muchísima ayuda ver tu código para poder decirte supongo que ese pin lo tienes configurado como digital y de salida
QIQE el código es de microchip no lo he hecho yo y no se muy bien donde hace las cosas, he hecho una búsqueda por todos los ficheros del proyecto pero no he encontrado la configuración de los pines RC7 y RC6 del puerto C, de todas maneras he hecho debug mediante el ICD2 y he visto que el valor que tiene el TRISC es 0xD0, es decir los pines RC7 y RC6 que son los de la USART si que están como entrada como apuntaba irukza.
De todas maneras os pongo la función que inicializa el módulo USART por si veis algo que a mi se me escape.
#define USART_USE_BRGH_HIGH
#if defined(USART_USE_BRGH_LOW)
#define SPBRG_VAL ( ((CLOCK_FREQ/BAUD_RATE)/64) - 1)
#else
#define SPBRG_VAL ( ((CLOCK_FREQ/BAUD_RATE)/16) - 1)
#endif
#if SPBRG_VAL > 255
#error "Calculated SPBRG value is out of range for currnet CLOCK_FREQ."
#endif
void ConsoleInit(void)
{
#if defined(USART_USE_BRGH_HIGH)
TXSTA = 0x24;
#else
TXSTA = 0x20;
#endif
RCSTA = 0x90; // 0b10010000;
SPBRG = SPBRG_VAL;
}
Si te fijas en la pág 203 de la hoja de datos del 4620, verás que es necesario configurar RC6 y RC7 como entrada. Si, a pesar de que una de ellas funciona como salida.
Irukza gracias por el apunte, como he comentado antes creo que si que están los pines RC6 y RC7 como entrada, aunque en la página que me comentabas creo que hay una nota donde pone que "EUSART podrá automaticamente reconfigurar un pin de entrada a salida cuando lo necesite" muy fuerte :shock:
Muchas gracias a los dos, si necesitais cualquier otra cosa os lo digo.
Yo aun sigo dandome de cabezazos con esto porque la alternativa es un poco cara :(