Analizando el ejemplo de CCS dice:
Hardware UART: ////
//// If you use a hardware UART, make sure MODBUS_SERIAL_INT_SOURCE ////
//// is set to MODBUS_INT_RDA, MODBUS_INT_RDA2, MODBUS_INT_RDA3, or ////
//// MODBUS_INT_RDA4 depending on which UART you are using. Also, ////
//// when using a hardware UART you do not need to specify the TX ////
//// and RX pins. The driver figures them out for you. ////
//// ////
//// Communicating with PC software: ////
//// To communicate with a PC, connect the board to your computer ////
//// using the serial cable provided with your board. Then ////
//// uncomment the #define USE_WITH_PC 1 line. In this ////
//// configuration the PC is the master and the PIC is the slave.
Luego el programa está extructurado del siguiente modo:
#define USE_WITH_PC 1
#define (__PCH__)
#if defined(__PCD__)
#include <24FJ128GA006.h>
#fuses PR,HS,NOWDT
#use delay(clock=20M)
#elif defined(__PCH__)
#include <18f4550.h>
#fuses HS, NOWDT
#use delay(clock=20M)
#else
#include <16F887.h>
#fuses HS,NOWDT
#use delay(clock=20M)
#endif
#define MODBUS_TYPE MODBUS_TYPE_SLAVE
#define MODBUS_SERIAL_TYPE MODBUS_RTU //use MODBUS_ASCII for ASCII mode
#define MODBUS_SERIAL_RX_BUFFER_SIZE 64
#define MODBUS_SERIAL_BAUD 9600
#ifndef USE_WITH_PC
#define MODBUS_SERIAL_INT_SOURCE MODBUS_INT_EXT
#if defined(__PCD__)
#define MODBUS_SERIAL_TX_PIN PIN_D8 // Data transmit pin
#define MODBUS_SERIAL_RX_PIN PIN_F6 // Data receive pin
//The following should be defined for RS485 communication
//#define MODBUS_SERIAL_ENABLE_PIN 0 // Controls DE pin for RS485
//#define MODBUS_SERIAL_RX_ENABLE 0 // Controls RE pin for RS485
#else
#define MODBUS_SERIAL_TX_PIN PIN_B1 // Data transmit pin
#define MODBUS_SERIAL_RX_PIN PIN_B0 // Data receive pin
//The following should be defined for RS485 communication
//#define MODBUS_SERIAL_ENABLE_PIN 0 // Controls DE pin for RS485
//#define MODBUS_SERIAL_RX_ENABLE 0 // Controls RE pin for RS485
#endif
#else
#define MODBUS_SERIAL_INT_SOURCE MODBUS_INT_RDA
#endif
#include <modbus.c>
#define MODBUS_ADDRESS 0xF7
Si mi intención es utilizar la UART pero tal y como está el progrma me lleva al uso de interrupcion externa. ¿Que me aconsejais? ¿INT_RDA ó INT_EXT?