TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: E_Castillo en 13 de Mayo de 2012, 00:11:17

Título: 18F4550 y RS232 en CCS
Publicado por: E_Castillo en 13 de Mayo de 2012, 00:11:17
tengo el problema que no puedo establecer comunicación con el PIC18F4550, estoy usando un cristal de 20MHZ para el oscilador. Como podrán ver el código es de lo mas simple, pues con el simple echo de activarse la interrupción del RS232 debería de cambiar el estado de los leds, pero NO LO HACE!!!!

#include <18f4550.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 20000000)
#use rs232(baud=9600, parity=N, bits=8, STOP=1, xmit=PIN_C6, rcv=PIN_C7)
//char Dato;

#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
//Dato= getc();
output_B (0xFF); //enciende los leds si se activa la interrupción
}

void main()
{
enable_interrupts(global);//Habilito interrupción USART
enable_interrupts(int_rda);

set_tris_b( 0x00 ); // Puerto B como salida.
output_B (0x00); //inicializo puerto B

while(true){
//Código principal
}
}
Título: Re: 18F4550 y RS232 en CCS
Publicado por: edp en 26 de Mayo de 2012, 11:57:30
Yo tenia el mismo problema con un  18f4525, y despues de darle muchas vueltas creo que el problema viene al definir el puerto RS232, prueba a definir solo velocidad y los pines del puerto HW y ya contaras

#use rs232(baud=9600,  xmit=PIN_C6, rcv=PIN_C7)

Saludos
Título: Re: 18F4550 y RS232 en CCS
Publicado por: lucaspascual en 17 de Mayo de 2013, 18:17:16
tengo el problema que no puedo establecer comunicación con el PIC18F4550, estoy usando un cristal de 20MHZ para el oscilador. Como podrán ver el código es de lo mas simple, pues con el simple echo de activarse la interrupción del RS232 debería de cambiar el estado de los leds, pero NO LO HACE!!!!

#include <18f4550.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay (clock = 20000000)
#use rs232(baud=9600, parity=N, bits=8, STOP=1, xmit=PIN_C6, rcv=PIN_C7)
//char Dato;

#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART

{
//Dato= getc();
output_B (0xFF); //enciende los leds si se activa la interrupción
}

void main()
{
enable_interrupts(global);//Habilito interrupción USART
enable_interrupts(int_rda);

set_tris_b( 0x00 ); // Puerto B como salida.
output_B (0x00); //inicializo puerto B

while(true){
//Código principal
}
}

En FUSES cambia XT por HS.