Difference between revisions of "Serial Communications Library -- BoostC and 16F877A"

From OpenCircuits
Jump to navigation Jump to search
Line 161: Line 161:
 
|Echo a series of keystrokes as hex values.
 
|Echo a series of keystrokes as hex values.
  
<!--------------------------------
+
<!-------------------------------->
 
|-valign="top"
 
|-valign="top"
|
+
|n
|
+
|Parse out a numeric parameter and send back to the PC as a decimal:  n23 returns a 23.
 
<!--------------------------------
 
<!--------------------------------
 
|-valign="top"
 
|-valign="top"

Revision as of 13:55, 24 September 2008

Summary

  • Name: Serial Communications Library -- BoostC and 16F877A
  • Purpose: A C library ( in source code form ) for serial communications together with a program demonstrating its use.
  • Status: This page in draft. Code works but still in refinement, code available, email russ_hensel
  • Technology: BoostC and PIC 16F877A
  • Author: russ_hensel ( where you can find an email address to reach me )
  • License: not fully determined, but open source and object code.


This is one of a series of articles on Microcontroller Serial Communications, rooted at this site here: Microcontroller Serial Communications Articles


Features

Feature Details


Code is for USART hardware on PIC 16F877A. Should be fairly easy to port to similiar processors
Receive is interrupt driven. Receive should be active all the time although overrunning the buffer is possible.
Microcontroller Serial Communications Articles
Transmit is blocking. During a transmit no activities that are not interrupt driven occur.
Command interface is included. PIC is setup to receive serial commands and respond to them.
Command interface includes a stop command to halt long running operations. Character is !


Input routines for parsing and converting a numerical parameter. This makes commands like r22 able to pass the argument ( converted to binary ) to a subroutine.
Option to make single letter commands case insensitive.


Realizes a protocal similar to the one found in the link on the right. MC_RS232_Comm
Beware of negative numbers which may not be handled as you expect.

Hardware for the Program

Stepper Motor Tester has a Eagle file that will work for this demo. You can drop the stepper driver chip. Even the level shifter can be dropped if you use a cable with a level shifter. It is an easy project to do on a proto board.

Compiling the Program

The code for the library and the demo program is in one zip file ( called .... ). Unzip into a directory of its own. Open the project file SerialDemo.__c and compile with the source boost compiler. The source files are SerialDemo.c SerialDemo.h.....

I am not sure if the program is small enough to compile with the free compiler, my compiler reports a size of 1616 bytes of ROM, which may be small enough.

Before you actually try it with real hardware review your clock frequency and baud rate settings in the code.

Running the Program

Running the DemoSerial demo program ( demo is set up to be caps insensitive, if you comment out this feature use lower case commands )

Once running the demo program supports the following commands. Use a terminal emulator set for..... One I like is ....... For full details on what each command does review the code, I have tried to fully comment the code so that it should be fairly easy to read. I have generally avoided coding tricks.

Command Details
r Report the version of the software ( and possibly other infomation ).
! Stop whatever software is doing, give stopped message.
d Print out a series of numbers using serial_print_dec

(The library has different version of serial_print_dec for different argument types )

h Print out a series of numbers using print_hex.


b Print out a series of numbers using print_bin.


e Echo a series of keystrokes as hex values.
n Parse out a numeric parameter and send back to the PC as a decimal: n23 returns a 23.

Using the Library in Your Own Program

The simplest way is probably to copy the whole BoostC project to a new directory and rename SerialDemo .c and .h. Adjust the include statements and the source code file list. Then add your own code. Otherwise ( if you already have a bunch of your own code ) you can add the serial library files to your project and cut and paste from SerialDemo.c into your project. Including functions from the librar;y that you do not use in your code should not be an isssue as the linker seems to eliminate them from the load file.

Code History

Origninal source code found, I think, on code on the SourceBoost website ( see program header for more inforation ). I have used the code on a series of different projects, it has evolvled with each one. I have added the code for a command interface, this is based on the idea that if you have serial capability then you may want to control it thru its serial connection.