International User's Manual Network Adapter RCM4000
User’s Manual 43
5.2  Dynamic C Function Calls
5.2.1 Digital I/O
The RCM4000 was designed to interface with other systems, and so there are no drivers 
written specifically for the I/O. The general Dynamic C read and write functions allow 
you to customize the parallel I/O to meet your specific needs. For example, use
WrPortI(PEDDR, &PEDDRShadow, 0x00);
to set all the Port E bits as inputs, or use
WrPortI(PEDDR, &PEDDRShadow, 0xFF);
to set all the Port E bits as outputs.
When using the auxiliary I/O bus on the Rabbit 4000 chip, add the line
#define PORTA_AUX_IO // required to enable auxiliary I/O bus
to the beginning of any programs using the auxiliary I/O bus.
The sample programs in the Dynamic C 
SAMPLES/RCM4000
 folder provide further 
examples.
5.2.2 Serial Communication Drivers
Library files included with Dynamic C provide a full range of serial communications sup-
port. The 
RS232.LIB
 library provides a set of circular-buffer-based serial functions. The 
PACKET.LIB
 library provides packet-based serial functions where packets can be delimited 
by the 9th bit, by transmission gaps, or with user-defined special characters. Both libraries 
provide blocking functions, which do not return until they are finished transmitting or 
receiving, and nonblocking functions, which must be called repeatedly until they are fin-
ished, allowing other functions to be performed between calls. For more information, see 
the Dynamic C Function Reference Manual and Technical Note TN213, Rabbit Serial 
Port Software.
5.2.3 SRAM Use
The RCM4000 module has a battery-backed data SRAM and a program-execution 
SRAM. Dynamic C provides the 
protected
 keyword to identify variables that are to be 
placed into the battery-backed SRAM. The compiler generates code that maintains two 
copies of each protected variable in the battery-backed SRAM. The compiler also generates 
a flag to indicate which copy of the protected variable is valid at the current time. This flag 
is also stored in the battery-backed SRAM. When a protected variable is updated, the 
“inactive” copy is modified, and is made “active” only when the update is 100% complete. 
This assures the integrity of the data in case a reset or a power failure occurs during the 
update process. At power-on the application program uses the active copy of the variable 
pointed to by its associated flag.










