serint.h File Reference

Interrupt driven Serial receive and transmit handler. More...


Defines

#define SER_RXBUF_SIZE   32
#define SER_TXBUF_SIZE   32
#define SER_USE_INTERRUPT
#define SERINT_RXBUF_OVERRUN   0x01
#define SERINT_TXBUF_OVERRUN   0x10
#define serIsGetReady()   (idxSerRxbufPut != idxSerRxbufGet)
#define serRxBufEmpty()   (idxSerRxbufPut == idxSerRxbufGet)
#define SPBRG_VAL   ( ((CLOCK_FREQ/BAUD_RATE)/64) - 1)
#define USART_USE_BRGH_LOW

Functions

void serEnable (void)
BYTE serGetByte (void)
BYTE serGetStat (void)
void serInit (void)
void serPut2Bytes (BYTE b1, BYTE b2)
void serPutByte (BYTE c)
void serPutByteHex (BYTE c)
void serPutDebugMsgRomStr (BYTE debugCode, BYTE msgCode, ROM char *msgString)
void serPutRomString (ROM char *str)
void serPutRomStringAndNull (ROM char *str)
void serPutString (BYTE *s)
void serPutStringAndNull (BYTE *str)
void serReset (void)
void serRxIsr (void)
void serService (void)
void serTxIsr (void)

Variables

BYTE idxSerRxbufGet
BYTE idxSerRxbufPut


Detailed Description

Interrupt driven Serial receive and transmit handler.

Author:
Modtronix Engineering
Dependencies:
Compiler:
MPLAB C18 v2.10 or higher
HITECH PICC-18 V8.35PL3 or higher

Description

This module implements an interrupt driven serial port driver. To use this module:

Configuration

The following defines are used to configure this module, and should be placed in the projdefs.h (or similar) file. For details, see Project Configuration. To configure the module, the required defines should be uncommended, and the rest commented out.
 //*********************************************************************
 //-------------- Serint Configuration --------------------
 //*********************************************************************
 #define SER_RXBUF_SIZE  32  //Size of Rx buffer, must be 8,16,32,64,128 or 256
 #define SER_TXBUF_SIZE  32    //Size of TX buffer, must be 8,16,32,64,128 or 256

 //Comment this line if the transmit routines should NOT wait for the bytes to be send via
 //USART if tx buffer is full
 #define SER_WAIT_FOR_TXBUF

 //Uncomment this line if the application does NOT configure the USART
 //#define BAUD_RATE    9600    //USART BAUD rate
 //Comment this line if the application does NOT configures the USART
 #define APP_CONFIGURES_SERPORT  //Our application does all serial port configuration!

Define Documentation

#define SER_RXBUF_SIZE   32

#define SER_TXBUF_SIZE   32

#define SER_USE_INTERRUPT

#define SERINT_RXBUF_OVERRUN   0x01

#define SERINT_TXBUF_OVERRUN   0x10

 
#define serIsGetReady (  )     (idxSerRxbufPut != idxSerRxbufGet)

Are there any bytes in the receive buffer.

Returns:
1 if true, else 0

 
#define serRxBufEmpty (  )     (idxSerRxbufPut == idxSerRxbufGet)

Are there any bytes in the receive buffer.

Returns:
0 if not empty, 1 if empty

#define SPBRG_VAL   ( ((CLOCK_FREQ/BAUD_RATE)/64) - 1)

#define USART_USE_BRGH_LOW


Function Documentation

void serEnable ( void   ) 

Enables the serial port AND . Can only be called after serInit() has been called.

BYTE serGetByte ( void   ) 

Get the next byte in the RX buffer. Before calling this function, the serIsGetReady() function should be called to check if there is any data available on the serial port.

Returns:
Returns byte received via the serial port.

BYTE serGetStat ( void   ) 

Get the current status of this module

Returns:
The status of this module. Consists out of SER_STAT_XXX flags

void serInit ( void   ) 

Initialize this module

void serPut2Bytes ( BYTE  b1,
BYTE  b2 
)

Sent the given two bytes via the USART.

Parameters:
b1 The first byte to be sent.
b2 The second byte to be sent.

void serPutByte ( BYTE  c  ) 

Send the given byte to the USART. It is added to the transmit buffer, and asynchronously transmitted.

Parameters:
c Byte to write out on the serial port

void serPutByteHex ( BYTE  c  ) 

Send the ASCII hex value of the given byte to the USART. It is added to the transmit buffer, and asynchronously transmitted. For example, if c=11, then "0B" will be sent to the USART

Parameters:
c Byte to write out on the serial port

void serPutDebugMsgRomStr ( BYTE  debugCode,
BYTE  msgCode,
ROM char *  msgString 
)

Sent the given debug message to the USART. The following is sent: [debugCode][msgCode][msgString]

Parameters:
debugCode The Debug Message's "Debug Code". This will be the first byte sent.
msgCode The Debug Message's "Message Code". This will be the second byte sent.
msgString The Debug Message's "Message String", has to be a NULL terminated string. This will be sent after the msgCode.

void serPutRomString ( ROM char *  str  ) 

Transmit a NULL terminated string. It is added to the transmit buffer, and asynchronously transmitted. The NULL is NOT sent!

Parameters:
str Null terminated string to write out on the serial port

void serPutRomStringAndNull ( ROM char *  str  ) 

Transmit a NULL terminated string. It is added to the transmit buffer, and asynchronously transmitted. The NULL is ALSO sent!

Parameters:
str Null terminated string to write out on the serial port

void serPutString ( BYTE s  ) 

Transmit a NULL terminated string. It is added to the transmit buffer, and asynchronously transmitted. The NULL is NOT sent!

Parameters:
s Null terminated string to write out on the serial port

void serPutStringAndNull ( BYTE str  ) 

Transmit a NULL terminated string. It is added to the transmit buffer, and asynchronously transmitted. The NULL is ALSO sent!

Parameters:
str Null terminated string to write out on the serial port

void serReset ( void   ) 

Resets this module, and empties all buffers.

void serRxIsr ( void   ) 

Called in the USART RX ISR

void serService ( void   ) 

Service this module

void serTxIsr ( void   ) 

Called in the USART TX ISR


Variable Documentation


Generated on Wed Feb 3 12:45:35 2010 for SBC65EC Web Server by  doxygen 1.5.8