Comunicacion RS232 de un PIC

Hola a todos,
estoy programando un PIC 18F2680, del que tengo que diseñar un protocolo de comunicaciones basado en CAN. Uso el compilador CCS, la version 4.104.

Empece probando las interrupciones por desborde del temporizador, y todo funciona correctamente.
En este momento, estoy probando la comunicacion por puerto serie RS232. Pero en este punto estoy teniendo dificultades, puesto que parece que nunca entro en la rutina de interrupcion por recepcion de datos RS232.

Asi pues, he creado un programita lo mas simple posible para comprobar si se ejecuta la rutina de interrupcion.

El codigo el programa es el siguiente:

Código:
#include "C:\Documents and Settings\Administrador\Escritorio\programar pics\serie\serie.h"


#int_RDA
void  RDA_isr(void) 
{
  entra= true;
}


void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_0);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_vref(FALSE);
   set_tris_c(0xFF);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);
   
   
   
   while(true)
   {

      if(entra == true)
         puts("Entra\r\n");
      else
         puts("No entra\r\n");
    //puts ("fdsdkjfsdjk\r");
      delay_ms(500);
   }
   
}

Y el .h es el siguiente
Código:
#include <18F2680.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV21                   //Brownout reset at 2.1V
#FUSES PUT                      //Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES PBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES BBSIZ4K                  //4K words Boot Block size
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES LPT1OSC                  //Timer1 configured for low-power operation
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

boolean entra = false;

El programa es muy simple, y cuando programo la placa y le doy alimentacion y conecto el conector serie de mi PC, en mi hyperterminal siempre se escribe "No entra", por lo que parece que nunca se entra en la rutina.

Otra duda que tengo es la siguiente:
uso el hyperterminal HTPE, y me conecto al puerto COM1. Puedo recibir datos, pero no se como escribir!! Cuando escribo, no se visualizan los datos en el terminal, y en el conector no se enciende la luz del Tx.
¿Es fallo del hyperterminal??

Bueno, muchas gracias de antemano, y espero ke me podais ayudar.

Un saludo
Miguel Angel
 
Hola, porque no pruebas de hacer encender un led cuando entre a la rutina de interrupcion. eso te aclarara si realmente no entra a la int o hay otro problema.
 
Atrás
Arriba