Digi BL4S100 User Manual

BL4S100
C-Programmable Single-Board Computer with Networking
User’s Manual
019–0172_D
BL4S100 User’s Manual
Part Number 019-0172_D • Printed in U.S.A.
Digi International reserves the right to make changes and
improvements to its products without providing notice.
Trademarks
Rabbit, RabbitCore, and Dynamic C are registered trademarks of Digi International Inc.
RabbitNet is a trademark of Digi International Inc.
The latest revision of this manual is available on the Digi International Inc. website,
www.digi.com, for free, unregistered download.
Digi International Inc.
www.digi.com

TABLE OF CONTENTS

Chapter 1. Introduction 4
1.1 BL4S100 Description ...........................................................................................................................4
1.2 BL4S100 Features.................................................................................................................................4
1.3 Development and Evaluation Tools......................................................................................................6
1.3.1 Tool Kit .........................................................................................................................................6
1.3.2 Software ........................................................................................................................................7
1.3.3 Optional Add-Ons .........................................................................................................................7
1.4 CE Compliance .....................................................................................................................................8
1.4.1 Design Guidelines .........................................................................................................................9
1.4.2 Interfacing the BL4S100 to Other Devices...................................................................................9
Chapter 2. Getting Started 10
2.1 BL4S100 Connections ........................................................................................................................11
2.1.1 Hardware Reset ...........................................................................................................................12
2.2 Installing Dynamic C ..........................................................................................................................13
2.3 Starting Dynamic C ............................................................................................................................14
2.4 Run a Sample Program .......................................................................................................................14
2.4.1 Troubleshooting ..........................................................................................................................14
2.4.2 Run a ZigBee Sample Program (BL4S100/BL4S150 only) .......................................................15
2.5 Where Do I Go From Here? ...............................................................................................................16
Chapter 3. Subsystems 17
3.1 BL4S100 Pinouts ................................................................................................................................18
3.1.1 Connectors ..................................................................................................................................18
3.2 Digital I/O ...........................................................................................................................................19
3.2.1 Digital Inputs...............................................................................................................................19
3.2.2 Digital Outputs............................................................................................................................22
3.3 Serial Communication ........................................................................................................................25
3.3.1 RS-232 ........................................................................................................................................25
3.3.2 Programming Port .......................................................................................................................25
3.3.3 Ethernet Port ...............................................................................................................................26
3.4 A/D Converter Inputs..........................................................................................................................27
3.4.1 A/D Converter Calibration..........................................................................................................29
3.5 USB Programming Cable ...................................................................................................................30
3.5.1 Changing Between Program Mode and Run Mode ....................................................................30
3.6 Other Hardware...................................................................................................................................31
3.6.1 Clock Doubler .............................................................................................................................31
3.6.2 Spectrum Spreader ......................................................................................................................31
3.7 Memory...............................................................................................................................................32
3.7.1 SRAM .........................................................................................................................................32
3.7.2 Flash Memory .............................................................................................................................32
3.7.3 VBAT RAM Memory.................................................................................................................32
BL4S100 User’s Manual 1
Chapter 4. Software 33
4.1 Running Dynamic C ...........................................................................................................................33
4.1.1 Upgrading Dynamic C ................................................................................................................35
4.1.2 Add-On Modules.........................................................................................................................35
4.2 Sample Programs ................................................................................................................................36
4.2.1 Digital I/O ...................................................................................................................................37
4.2.2 Serial Communication.................................................................................................................43
4.2.3 A/D Converter Inputs..................................................................................................................45
4.2.4 Real-Time Clock .........................................................................................................................46
4.2.5 TCP/IP Sample Programs ...........................................................................................................46
4.2.6 ZigBee Sample Programs............................................................................................................46
4.3 BL4S100 Libraries..............................................................................................................................47
4.4 BL4S100 Function Calls.....................................................................................................................48
4.4.1 Board Initialization .....................................................................................................................48
4.4.2 Digital I/O ...................................................................................................................................49
4.4.3 Rabbit RIO Interrupt Handlers....................................................................................................75
4.4.4 Serial Communication.................................................................................................................79
4.4.5 A/D Converter Inputs..................................................................................................................80
4.4.6 SRAM Use ..................................................................................................................................94
Chapter 5. Using the Ethernet TCP/IP Features 95
5.1 TCP/IP Connections ...........................................................................................................................95
5.2 TCP/IP Sample Programs ...................................................................................................................97
5.2.1 How to Set IP Addresses in the Sample Programs .....................................................................97
5.2.2 How to Set Up your Computer for Direct Connect ....................................................................98
5.2.3 Run the
5.2.4 Running More Demo Programs With a Direct Connection......................................................100
5.3 Where Do I Go From Here? .............................................................................................................102
PINGME.C Demo ............................................................................................................99
Chapter 6. Using the ZigBee Features 103
6.1 Introduction to the ZigBee Protocol .................................................................................................103
6.2 ZigBee Sample Programs .................................................................................................................104
6.2.1 Setting Up the Digi XBee USB Coordinator ............................................................................105
6.2.2 Setting up Sample Programs .....................................................................................................107
6.3 Dynamic C Function Calls................................................................................................................111
6.4 Where Do I Go From Here? .............................................................................................................111
Appendix A. Specifications 112
A.1 Electrical and Mechanical Specifications ........................................................................................113
A.1.1 Exclusion Zone.........................................................................................................................115
A.1.2 Headers.....................................................................................................................................115
A.2 Jumper Configurations.....................................................................................................................116
A.3 Use of Rabbit Microprocessor Parallel Ports ...................................................................................118
Appendix B. Power Supply 120
B.1 Power Supplies.................................................................................................................................120
B.2 Batteries and External Battery Connections ....................................................................................121
B.2.1 Replacing the Backup Battery..................................................................................................121
Appendix C. Demonstration Board 122
C.1 Connecting Demonstration Board....................................................................................................123
C.2 Demonstration Board Features.........................................................................................................124
C.2.1 Pinout........................................................................................................................................124
C.2.2 Configuration............................................................................................................................124
Appendix D. Rabbit RIO Resource Allocation 126
BL4S100 User’s Manual 2
D.1 Digital I/O Pin Associations ............................................................................................................127
D.2 Interpreting Error Codes ..................................................................................................................128
Appendix E. Plastic Enclosure 130
E.1 Assembly Instructions ......................................................................................................................131
E.2 Dimensions.......................................................................................................................................133
Appendix F. Additional Configuration Instructions 134
F.1 XBee Module Firmware Downloads................................................................................................134
F.1.1 Dynamic C v. 10.44 and Later..................................................................................................134
F.2 Digi
®
XBee USB Configuration ......................................................................................................135
F.2.1 Additional Reference Information ............................................................................................136
F.2.2 Update Digi
®
XBee USB Firmware.........................................................................................138
Index 139
Schematics 142
BL4S100 User’s Manual 3

1. INTRODUCTION

The BL4S100 series of high-performance, C-programmable single-board computers offers built-in RS232, digital I/O and analog inputs combined with the Ethernet and Zigbee network connectivity in a compact form fac­tor. The BL4S100 single-board computers are ideal for both discrete manu-
facturing and process-control applications.
A Rabbit® 4000 microprocessor provides fast data processing.

1.1 BL4S100 Description

Throughout this manual, the term BL4S100 refers to the complete series of BL4S100 single­board computers unless other production models are referred to specifically.
The BL4S100 is an advanced single-board computer that incorporates the powerful Rabbit 4000 microprocessor, serial flash memory, static RAM, digital inputs, digital outputs, A/D converter inputs, RS-232 serial ports, and Ethernet and ZigBee network connectivity.

1.2 BL4S100 Features

Rabbit 4000 microprocessor operating at 40.00 MHz.
Screw-terminal connectors
512KB SRAM (battery-backed), 512KB/1MB fast SRAM, and 1MB/2MB flash memory
options.
20 digital I/O: 12 protected digital inputs, and 8 sinking digital outputs.
Advanced input capabilities including event counting, event capture, and quadrature
decoders that may be set up on all the digital input pins.
Independent PWM and PPM capability on all the digital output pins.
Eight 11-bit A/D converter inputs (plus one bit for sign).
Ethernet and ZigBee network connectivity.
Three serial ports:
Two 3-wire RS-232 serial ports or one 5-wire RS-232 serial port:
One serial port dedicated to programming/debugging.
Battery-backed real-time clock.
BL4S100 User’s Manual 4
Watchdog supervisor.
Four BL4S100 models are available. Their standard features are summarized in Table 1.
Table 1. BL4S100 Models
Feature
Microprocessor Rabbit 4000 running at 40.00 MHz
Program Execution SRAM 512KB 1MB
Data SRAM 512KB
Serial Flash Memory (program)
A/D Converter 12 bits
Ethernet Interface 10Base-T
ZigBee Interface
BL4S100 BL4S110 BL4S150 BL4S160
1MB 2MB
ZigBee PRO
(802.15.4)
ZigBee PRO
(802.15.4)
BL4S100 single-board computers are programmed over a standard PC USB port through a programming cable supplied with the Tool Kit.
NOTE: BL4S100 Series single-board computers cannot be programmed via the RabbitLink.
Appendix A provides detailed specifications.
Visit the website for up-to-date information about additional add-ons and features as they become available. The website also has the latest revision of this user’s manual.
BL4S100 User’s Manual 5

1.3 Development and Evaluation Tools

set up.exe

1.3.1 Tool Kit

A Tool Kit contains the hardware essentials you will need to use your own BL4S100 single­board computer. These items are supplied in the Tool Kit.
Getting Started instructions.
Dynamic C CD-ROM, with complete product documentation on disk.
USB programming cable, used to connect your PC USB port to the BL4S100.
Universal AC adapter, 12 V DC, 1 A (includes Canada/Japan/U.S., Australia/N.Z.,
U.K., and European style plugs).
Demonstration Board with pushbutton switches and LEDs. The Demonstration Board
can be hooked up to the BL4S100 to demonstrate the I/O and capabilities of the BL4S100.
DB9 to bare leads serial cable.
CAT 5/6 Ethernet crossover cable.
Screwdriver.
Rabbit 4000 Processor Easy Reference poster.
Registration card.
Figure 1. BL4S100 Tool Kit
BL4S100 User’s Manual 6

1.3.2 Software

GND
J7
20
11
10
D2 Q1
D3 Q2
D4 Q3
RP1
J4
RP2
D5 Q4
D6 Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R3
3
U4
C13
R24
R
3
0
R
2
5 R
3
5
J
6
C7
C11
2
JP1
C6
C10
J1
8
7
2
1
D
1
0
D11
C2
C3
C4
R
4
U1 R6 R23
R5
C5
R26
R34
R13R14R
1
5R16R17
R
1
8
R
1
9R20
R
2
1R22
R
1
2
R7
R8R
9
R1
0
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74
R69 R72 R73 R74
U18
J10 2
1
J11 2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65 C64 C68
R63
R65
L2
BT1
C86
C87
R86
U20
C96
C91C
92
C95 C97
C
1
0
1
C
1
0
2
C
1
0
3
C
1
0
4
C
1
0
5
C
1
0
6
C
1
0
7
C
1
0
8
R
9
8
R
9
9
R
1
0
0
R
1
0
1 R
1
0
2
R
1
0
3
R
1
0
4
R
1
0
5
R
1
0
6
R
1
0
7
R
1
0
8
R
1
0
9
R
1
1
0
R
1
1
1
R
1
1
2
R
1
1
3
ADC PROGRAMMER
GND
2
J1
2
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J
1
3
2
RP6
1
S3 J16
S4
C
1
14
2
7
8
J14
R
117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D1
8
C112
R
116R118
L10L11
C1
09
L8
C
11
0
L9
L4
R88
C
98
L
5
C
1
11
L
6
C9
9
L7
U
2
1
C100
R95
R96
R7
7
C94
R92 C113 R97
U19
R75
R85
C
9
0
R76
C
8
9
C
88
U17
L3
C17C
18
C19
C
20
C21C
22
C
2
3 C
2
4
C41 C44
R54
R
5
5
C46
C49
C47 C50
U15
R62
R
6
0
D17
C60
R66 C78
C80 C82
C81 C83
C84
4
3
1
2
Y4
R67 R68
R70
R71
R
7
9 R
8
0 R
7
8 R
8
1 R
8
2 R
8
3
R84
C70 C75
C72
C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C
6
6
1
R59
C
3
8 C
4
2 C
4
3
C30 C33
C29
C32
C37
C52
R
5
8
C51
C
5
7
C67
C62 C63
C53 C54
R57 C61 4 1
3
R
6
1
Y3
R64
U
9
R47
U13
R46
R
5
1
C27
U5
C34
C31
C
2
8
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C3
6
U
12
C26
C25
U6
R48
R49
D16
U11
R
2
8
R
2
9
R50
C48
C1
R2
C
16
C1
5
C
1
4
U3
C9
C1
2
C8 R27
R39
R42
R
37
R32 R36
XBee
S
e
r
ie
s 2
The BL4S100 is programmed using version 10.44 or later of Rabbit’s Dynamic C. A co m-
patible version is included on the Tool Kit CD-ROM.
This version of Dynamic C includes the popular µC/OS-II real-time operating system, point-to-point protocol (PPP), FAT file system, RabbitWeb, and other select libraries
.
Rabbit also offers for purchase the Rabbit Embedded Security Pack featuring the Secure Sockets Layer (SSL) and a specific Advanced Encryption Standard (AES) library. In addi­tion to the Web-based technical support included at no extra charge, a one-year telephone­based technical support subscription is also available for purchase. Visit our website for further information and complete documentation, or contact your Rabbit sales representative or authorized distributor.

1.3.3 Optional Add-Ons

Rabbit has a plastic enclosure and a Mesh Network Add-On Kit available for the BL4S100.
Mesh Network Add-On Kit (Part No. 101-1272)
Digi
XBee Series 2 RF module
®
XBee USB (used as ZigBee coordinator)
RF Interface module
The XBee Series 2 RF module is installed on the RF Interface module, which can be connected via an RS-232 serial connection to a Windows PC for setup. The Mesh Net­work Add-On Kit enables you to explore the wireless capabilities of BL4S100 models that offer a ZigBee network interface.
Plastic enclosure (Part No. 181-0041)
Further details on the plastic enclosure are provided in Appendix E.
Visit our website at www.digi.com or contact your Rabbit sales representative or authorized distributor for further information.
BL4S100 User’s Manual 7

1.4 CE Compliance

Equipment is generally divided into two classes.
CLASS A CLASS B
Digital equipment meant for light industrial use Digital equipment meant for home use
Less restrictive emissions requirement: less than 40 dB µV/m at 10 m (40 dB relative to 1 µV/m) or 300 µV/m
More restrictive emissions requirement: 30 dB µV/m at 10 m or 100 µV/m
These limits apply over the range of 30–230 MHz. The limits are 7 dB higher for frequen­cies above 230 MHz. Although the test range goes to 1 GHz, the emissions from Rabbit­based systems at frequencies above 300 MHz are generally well below background noise levels.
The BL4S100 single-board computer has been tested and was found to be in conformity with the following applicable immunity and emission standards. The BL4S110, BL4S150, and BL4S160 single-board computers are also CE qualified as they are sub-versions of the BL4S100 single-board computer. Boards that are CE-compliant have the CE mark.
Immunity
The BL4S100 series of single-board computers meets the following EN55024/1998 immunity standards.
EN61000-4-3 (Radiated Immunity)
EN61000-4-4 (EFT)
EN61000-4-6 (Conducted Immunity)
Additional shielding or filtering may be required for a heavy industrial environment.
Emissions
The BL4S100 series of single-board computers meets the following emission standards.
EN55022:1998 Class B
FCC Part 15 Class B
Your results may vary, depending on your application, so additional shielding or filtering may be needed to maintain the Class B emission qualification.
BL4S100 User’s Manual 8

1.4.1 Design Guidelines

Note the following requirements for incorporating the BL4S100 series of single-board computers into your application to comply with CE requirements.
General
The power supply provided with the Tool Kit is for development purposes only. It is the
customer’s responsibility to provide a CE-compliant power supply for the end-product application.
When connecting the BL4S100 single-board computer to outdoor cables, the customer
is responsible for providing CE-approved surge/lighting protection.
Rabbit recommends placing digital I/O or analog cables that are 3 m or longer in a
metal conduit to assist in maintaining CE compliance and to conform to good cable design practices.
When installing or servicing the BL4S100, it is the responsibility of the end-user to use
proper ESD precautions to prevent ESD damage to the BL4S100.
Safety
All inputs and outputs to and from the BL4S100 series of single-board computers must
not be connected to voltages exceeding SELV levels (42.4 V AC peak, or 60 V DC).
The lithium backup battery circuit on the BL4S100 single-board computer has been
designed to protect the battery from hazardous conditions such as reverse charging and excessive current flows. Do not disable the safety features of the design.

1.4.2 Interfacing the BL4S100 to Other Devices

Since the BL4S100 series of single-board computers is designed to be connected to other devices, good EMC practices should be followed to ensure compliance. CE compliance is ultimately the responsibility of the integrator. Additional information, tips, and technical assistance are available from your authorized Rabbit distributor, and are also available on our website.
BL4S100 User’s Manual 9

2. GETTING STARTED

Chapter 2 explains how to connect the programming cable and power sup­ply to the BL4S100.
BL4S100 User’s Manual 10

2.1 BL4S100 Connections

GND
J7
20
11
10
D2 Q1
D3
Q2
D4 Q3
RP1
J4
RP2
D5 Q4
D6 Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R33
U4
C13
R24
R30
R25
R35
J6
C7
C11
2
JP1
C6
C10
J1
8
7
2
1
D10
D11
C2
C3
C4
R4
U1
R6 R23
R5
C5
R26
R34
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R12
R7R8R9
R10
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74 R69 R72 R73 R74
U18
J10
2
1
J11
2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65
C64 C68
R63
R65
L2
BT1
C86 C87
R86
U20
C96
C91
C92
C95 C97
C101
C102
C103
C104
C105
C106
C107
C108
R98
R99
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R110
R111
R112
R113
ADC PROGRAMMER
GND
2
J12
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J13
2
RP6
1
S3 J16
S4
C114
2
7
8
J14
R117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D18
C112
R116
R118
L10 L11
C109
L8
C110
L9
L4
R88
C98
L5
C111
L6
C99
L7
U21
C100
R95
R96
R77
C94
R92 C113
R97
U19
R75
R85 C90
R76
C89
C88
U17
L3
C17
C18
C19
C20
C21
C22
C23
C24
C41 C44
R54
R55
C46 C49
C47 C50
U15
R62
R60
D17
C60
R66
C78
C80 C82
C81 C83
C84
4
3
1
2 Y4
R67 R68 R70
R71
R79
R80
R78
R81
R82
R83
R84
C70 C75
C72 C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C66
1
R59
C38
C42
C43
C30 C33
C29
C32
C37
C52
R58
C51
C57
C67
C62 C63
C53 C54
R57 C61
4
1
3
R61
Y3
R64
U9
R47
U13
R46
R51
C27
U5
C34
C31
C28
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C36
U12
C26
C25
U6
R48
R49
D16
U11
R28
R29
R50
C48
C1 R2
C16
C15
C14
U3
C9
C12
C8
R27
R39
R42
R37
R32 R36
XBee
Series 2
Colored
edge
To
PC USB port
PROG
DIAG
Programming
Cable
PROG
J8
Step 1 — Connect Programming Cable
The programming cable connects the BL4S100 to the PC running Dynamic C to download programs and to monitor the BL4S100 module during debugging.
Connect the 10-pin PROG connector of the programming cable to header J8 on the BL4S100. Ensure that the colored edge lines up with pin 1 as shown. (Do not use the DIAG connector, which is used for monitoring only.) Connect the other end of the pro­gramming cable to an available USB port on your PC or workstation.
Figure 2. Programming Cable Connections
Your PC should recognize the new USB hardware, and the LEDs in the shrink-wrapped area of the USB programming cable will flash — if you get an error message, you will have to install USB drivers. Drivers for Windows XP are available in the Dynamic C
Drivers\Rabbit USB Programming Cable\WinXP_2K folder — double-click DPInst.exe to install the USB drivers. Drivers for other operating systems are available
online at www.ftdichip.com/Drivers/VCP.htm.
BL4S100 User’s Manual 11
Step 2 — Connect Power Supply
Once all the other connections have been made, you can connect power to the BL4S100.
First, prepare the AC adapter for the country where it will be used by selecting the plug. The Tool Kit presently includes Canada/Japan/U.S., Australia/N.Z., U.K., and European style plugs. Snap in the top of the plug assembly into the slot at the top of the AC adapter as shown in Figure 3, then press down on the spring-loaded clip below the plug assembly to allow the plug assembly to click into place. Release the clip to secure the plug assembly in the AC adapter.
Connect the power supply to header J17 on the BL4S100 as shown in Figure 3. Be sure to match the latch mechanism with the top of the connector to header J17 on the BL4S100 as shown. The Micro-Fit® connector will only fit one way.
Figure 3. Power Supply Connections
Plug in the AC adapter. The red LED next to the power connector at J17 should light up. The BL4S100 is now ready to be used.
CAUTION: Unplug the power supply while you make or otherwise work with the connections
to the headers. This will protect your BL4S100 from inadvertent shorts or power spikes.

2.1.1 Hardware Reset

A hardware reset is done by unplugging the power supply, then plugging it back in, or by pressing the RESET button located next to the Ethernet jack.
BL4S100 User’s Manual 12

2.2 Installing Dynamic C

If you have not yet installed Dynamic C version 10.44 (or a later version), do so now by inserting the Dynamic C CD from the BL4S100 Tool Kit in your PC’s CD-ROM drive. If autorun is enabled, the CD installation will begin automatically.
If autorun is disabled or the installation does not start, use the Windows Start | Run menu or Windows Disk Explorer to launch setup.exe from the root folder of the CD-ROM.
The installation program will guide you through the installation process. Most steps of the process are self-explanatory.
NOTE: If you have an earlier version of Dynamic C already installed, the default instal-
lation of the later version will be in a different folder, and a separate icon will appear on your desktop.
The online documentation is installed along with Dynamic C, and an icon for the docu­mentation menu is placed on the workstation’s desktop. Double-click this icon to reach the menu. If the icon is missing, create a new desktop icon that points to default.htm in the
docs folder, found in the Dynamic C installation folder. The latest versions of all docu-
ments are always available for free, unregistered download from our websites as well.
The Dynamic C User’s Manual provides detailed instructions for the installation of Dynamic C and any future upgrades.
Once your installation is complete, you will have up to three icons on your PC desktop. One icon is for Dynamic C, one opens the documentation menu, and the third is for the Rabbit Field Utility, a tool used to download precompiled software to a target system.
If you have purchased any of the optional Dynamic C modules, install them after installing Dynamic C. The modules may be installed in any order. You must install the modules in the same directory where Dynamic C was installed.
BL4S100 User’s Manual 13

2.3 Starting Dynamic C

Once the BL4S100 is connected to your PC and to a power source, start Dynamic C by double-clicking on the Dynamic C icon on your desktop or in your Start menu. Select
Store Program in Flash on the “Compiler” tab in the Dynamic C Options > Project Options Serial Converter
menu. Then click on the “Communications” tab and verify that Use USB to
is selected to support the USB programming cable. Click OK.
You may have to select the COM port assigned to the USB programming cable on your PC. In Dynamic C, select Options > Project Options, then select this COM port on the “Communications” tab, then click OK. You may type the COM port number followed by
Enter on your computer keyboard if the COM port number is outside the range on the
dropdown menu.

2.4 Run a Sample Program

You are now ready to test your set-up by running a sample program.
Use the File menu to open the sample program PONG.C, which is in the Dynamic C
SAMPLES folder. Press function key F9 to compile and run the program. The STDIO
window will open on your PC and will display a small square bouncing around in a box.
This program shows that the CPU is working. The sample program described in Section 5.2.3, “Run the PINGME.C Demo,” tests the TCP/IP portion of the board.

2.4.1 Troubleshooting

If you receive the message No Rabbit Processor Detected, the programming cable may be connected to the wrong COM port, a connection may be faulty, or the target sys­tem may not be powered up. First, check to see that the red power LED next to header J5 is lit. If the LED is lit, check both ends of the programming cable to ensure that it is firmly plugged into the PC and the programming header on the BL4S100 with the marked (col­ored) edge of the programming cable towards pin 1 of the programming header.
If Dynamic C appears to compile the BIOS successfully, but you then receive a communi­cation error message when you compile and load a sample program, it is possible that your PC cannot handle the higher program-loading baud rate. Try changing the maximum download rate to a slower baud rate as follows.
Locate the Serial Options dialog on the “Communications” tab in the Dynamic C
Options > Project Options menu. Select a slower Max download baud rate. Click OK
to save.
If a program compiles and loads, but then loses target communication before you can begin debugging, it is possible that your PC cannot handle the default debugging baud rate. Try lowering the debugging baud rate as follows.
Locate the Serial Options dialog on the “Communications” tab in the Dynamic C
Options > Project Options menu. Choose a lower debug baud rate. Click OK to save.
Press <Ctrl-Y> to force Dynamic C to recompile the BIOS. You should receive a Bios
compiled successfully
BL4S100 User’s Manual 14
message once this step is completed successfully.

2.4.2 Run a ZigBee Sample Program (BL4S100/BL4S150 only)

Waiting to join network... done Cmd - Description ===================== ATCH - Read the current channel. Will be zero if we are not associated with a network. ATID - Set or read the current PAN ID. If you set the ID you must write it to non-volitile memory ("WR") and then reset the network software ("NR"). ATOP - Read the operating PAN ID. ATMY - Read the current network address. Will be 0xFFFE if we are not associated with a network. ATSH - Read the upper four bytes of the radio IEEE address. ATSL - Read the lower four bytes of the radio IEEE address. ATNI - Set or read the Node Identifier. ATBH - Set or read the maximum number of Broadcast Hops. ATNT - Set or read the Node Discovery timeout value (in 0.1s). ATSC - Set or read the list of channels to scan. This value is a bit-field list. ATSD - Set or read the channel scan duration value. ATNJ - Set or read the Node Joining Time value. ATAI - Read the Association Indicator. A zero value means we are associated with a network. ATPL - Set or read the transmission power level. ATVR - Read the radio software version number. ATHV - Read the radio hardware version number.
MENU - Display this menu (not an AT command.)
Valid command formats (AT prefix is optional, CC is command):
[AT]CC 0xXXXXXX (where XXXXXX is an even number of hexidecimal characters) [AT]CC YYYY (where YYYY is an integer, up to 32 bits) [AT]NI "Node ID String" (where quotes contain string data)
Enter AT Command:
This section explains how to run a sample program in which the BL4S100/BL4S150 is used in its default setup as a router and the Digi XBee USB is used as the ZigBee coordinator.
1. Connect the Digi XBee USB acting as a ZigBee coordinator to an available USB port
on your PC or workstation. Your PC should recognize the new USB hardware.
2. Find the file AT_INTERACTIVE.C, which is in the Dynamic C SAMPLES\XBee folder.
To run the program, open it with the File menu, then compile and run it by pressing F9. The Dynamic C STDIO window will open to display a list of AT commands. Type
MENU to redisplay the menu of commands.
Appendix F provides additional configuration information if you experience conflicts while doing development simultaneously with more than one ZigBee coordinator, or if you wish to upload new firmware.
BL4S100 User’s Manual 15

2.5 Where Do I Go From Here?

NOTE: If you purchased your BL4S100 through a distributor or Rabbit partner, contact
the distributor or partner first for technical support.
If there are any problems at this point:
Use the Dynamic C Help menu to get further assistance with Dynamic C.
Check the Rabbit Technical Bulletin Board and forums at www.digi.com/support/ and
at www.digi.com/forum/support/rabbit.
Click tech.support@digi.com to send an email to Technical Support.
If the sample program ran fine, you are now ready to go on to explore other BL4S100 features and develop your own applications.
When you start to develop an application involving the analog inputs, run USERBLOCK_
READ_WRITE.C
stants before you run any other sample programs in case you inadvertently write over them while running another sample program.
Chapter 3, “Subsystems,” provides a description of the BL4S100’s features, Chapter 4, “Software,” describes the Dynamic C software libraries and introduces some sample programs, and explains the TCP/IP features.
in the SAMPLES\UserBlock folder to save the factory calibration con-
BL4S100 User’s Manual 16

3. SUBSYSTEMS

BL4S100
RABBIT
®
4000
RS-232
Digital Inputs
Digital
Outputs
Programming
Port
Ethernet
A/D
Converter
Fast SRAM
(program)
Serial Flash
Data
SRAM
RABBIT
®
RIO
ZigBee PRO
(802.15.4)
optional
Real-Time
Clock
Main
Clock
Chapter 3 describes the principal subsystems for the BL4S100.
•Digital I/O
• Serial Communication
• A/D Converter Inputs
• Memory
Figure 4 shows these Rabbit-based subsystems designed into the BL4S100.
BL4S100 User’s Manual 17
Figure 4. BL4S100 Subsystems

3.1 BL4S100 Pinouts

J4
J3
J5
RNET
J15
J16
J14
J17
2
GND+KIN0
IN1
IN2
IN3
OUT0
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
GND
+K1
+K2
+5 V
GND
+5 V
TXF/RTS
RXF/CTS
TXD/1-W
RXD
RS-232
AIN0
AIN1
AIN2
AIN3
AIN4
AIN5
AIN6
AIN7
AGND
IN11
IN10
IN9
IN8
IN7
IN6
IN5
IN4
GND
XBee
Series 2
Analog Inputs
Digital Inputs
Digital Outputs
Digital Inputs
Ethernet
Power Supply
1
3
4
2
n.c.
GND
n.c.
+RAW
The BL4S100 pinouts are shown in Figure 5.
Figure 5. BL4S100 Pinouts

3.1.1 Connectors

Standard BL4S100 models are equipped with an RJ-45 Ethernet jack, four 1 × 9 screw­terminal headers and one 1 × 6 screw-terminal header for the I/O and RS-232 signals. The polarized 2 × 2 Micro-Fit connector at J17 is for the power supply connection.
BL4S100 User’s Manual 18

3.2 Digital I/O

100 kW
27 kW
+K
+5 V
+3.3 V
IN0IN11
Rabbit® RIO
J13

3.2.1 Digital Inputs

The BL4S100 has 12 digital inputs, IN0–IN11, each of which is protected over a range of –36 V to +36 V. The inputs are factory-configured to be pulled up to +5 V, but they can also be pulled up to +K or pulled down to 0 V by changing a jumper as shown in Figure 6.
CAUTION: Do not simultaneously jumper more than one setting when configuring the pull-up or pull-down options.
Figure 6. BL4S100 Digital Inputs IN0–IN11 [Pulled Up to +5 V—Factory Default]
Table 2 summarizes the jumper settings.
Table 2. BL4S100 Digital Input Pull-Up/Pull-Down Jumper Settings
Pins Jumpered Pulled Up/Pulled Down
1–2 Inputs pulled up to +K
2–4 or 4–6 Inputs pulled down to GND
5–6 Inputs pulled up to +5 V
BL4S100 User’s Manual 19
The actual switching threshold is approximately
+40 V
+36 V
+3.3 V
40 V
Normal Switching
Levels
Spikes
Digital Input Voltage
Spikes
Spikes
1.40 V. Anything below this value is a logic 0, and anything above 1.90 V is a logic 1. The digital inputs are each fully protected over a range of -36 V to +36 V, and can handle short spikes of ±40 V.
NOTE: If the inputs are pulled up to +K, the
voltage range over which the digital inputs are protected changes to +K – 36 V to +36 V.
Figure 7. BL4S100 Digital Input
Protected Range
CAUTION: Do not allow the voltage on a digital input pin to exceed ±36 V to avoid damaging the input.
Individual digital input channels may be also used for counters, synching, interrupts, input capture, or as quadrature decoder inputs. The use of these channels for interrupts, input capture, and as quadrature decoders is described below.
Blocks of digital input pins are associated with counters/timers on the Rabbit RIO chip. Table 3 provides complete details for these associations.
Table 3. Counter/Timer Associations for BL4S100 Digital Input Pins
Configurable I/O
Pin(s)
IN0–IN2 0 XBee RF module
IN3–IN5 1
IN6–IN7 2 OUT0–OUT1
IN8–IN9 3 OUT2–OUT3
IN10 6
IN11 7
Counter/Timer
Blocks
Block Shared
With
Appendix D provides further details on the blocks and pins associated with the Rabbit RIO chip to facilitate configuring each block consistently and to identify misconfigured pins when a software function call returns a Mode Conflict error code.
BL4S100 User’s Manual 20
Keep the following guidelines in mind when selecting special uses for the digital input pins.
Channel 0
Begin
Count
End
Count
Channel 1
Start
Event
End
Event
Interrupts, event counters, and input capture are available on any digital input pin.
Each Quadrature Decoder channel requires at least two digital input pins associated
with the same counter/timer block; three digital input pins associated with the same counter/timer block are needed if you need indexing. Quadrature Decoder channels are
configured using the setDecoder() function call.
Sample programs in the DIO subdirectory in SAMPLES\BL4S1xx show how to set up and use digital inputs for interrupts, pulse capture, and quadrature decoders.
3.2.1.1 Interrupt, Counter, and Event Capture Setup
External interrupts on the BL4S100 digital input pins are configured using the setEx-
tInterrupt()
function call. The interrupt can be set up to occur on a rising edge, a fall-
ing edge, or either edge.
An input channel may be set up to count events, with the count incrementing or decrementing, using the rising edge, fall­ing edge, or either edge as triggers to start/ end the count. This feature is configured
using the setCounter() function call.
A more extensive use of the timing abilities of the BL4S100 inputs can be realized through the event capture function call,
setCapture(). Here the count of a par-
ticular clock cycle is noted at the start of the event and at the end of the event so that the time between them can be determined. This can be set up on one or two input channels. The event counter can be reset with the
resetCounter() function call.
The counter readings can be obtained via the getBegin() or getEnd() function calls.
BL4S100 User’s Manual 21

3.2.2 Digital Outputs

+K1 or +K2
SINKING OUTPUT
Rabbit® RIO
470 W
OUT0OUT7
+Ka
+Kb
LOAD
A
A
B
B
PULL-UP
RESISTORS
The BL4S100 has eight digital outputs, OUT0–OUT7, which can each sink up to 200 mA. Figure 8 shows a wiring diagram for using the sinking digital outputs.
Figure 8. BL4S100 Digital Outputs
OUT0–OUT3 are powered by +K1, and OUT4–OUT7 are powered by +K2. +K1 and +K2 can each be up to 36 V. They don't have to be the same. All the sinking current, which could be up to 1.6 A, is returned through the GND pin. Be sure to use a suitably sized ground wire and keep the distance to the power supply as short as possible.
All the digital outputs sink actively. They can be used as low-side drivers, or as an H-bridge driver. When the BL4S100 is first powered up or reset, all the outputs are disabled, that is at a high-impedance state.
For the H bridge, which is shown in Figure 9, Ka and Kb should be the same. This is most easily accomplished by using outputs from the same bank on one connector.
Figure 9. H Bridge
Individual digital output channels may be used for PWM/PPM outputs.The use of these channels for PWM/PPM is described in Section 3.2.2.1.
BL4S100 User’s Manual 22
Blocks of digital output pins are associated with counters/timers on the Rabbit RIO chip. Table 4 provides complete details for these associations.
Table 4. Counter/Timer Associations for BL4S100 Digital Output Pins
Configurable I/O
Pin(s)
OUT0–OUT1 2 IN6–IN7
OUT2–OUT3 3 IN8–IN9
OUT4–OUT5 4
OUT6–OUT7 5 A/D converter
Counter/Timer
Blocks
Block Shared With
RabbitNet
(reserved for future use)
Appendix D provides further details on the blocks and pins associated with the Rabbit RIO chip to facilitate configuring each block consistently and to identify misconfigured pins when a software function call returns a Mode Conflict error code.
Keep the following guidelines in mind when selecting special uses for the digital output pins.
When using digital output pins for PWM/PPM outputs, the output pins can only share
the same RIO block if they are using the same period or frequency.
The PWM.C and the PPM.C sample programs in the DIO subdirectory in SAMPLES\
BL4S1xx
show how to set up and use the PWM/PPM outputs.
BL4S100 User’s Manual 23
3.2.2.1 PWM/PPM Outputs Setup
Period
Duty
Cycle
Inverted
Noninverted
PWM
OUTPUT
Period
Duty
Cycle
Shifted
PPM
OUTPUT
Offset
A PWM output is described as noninverted when it starts high, remains high for a duty cycle that is a fraction of the period, then goes low for the remainder of the period.
Similarly, an inverted PWM output starts low, remains low for a duty cycle that is a fraction of the period, then goes high for the remainder of the period.
A PWM output is normally set up to start when triggered by an event, and may be set up so that the leading and trailing edges of several PWM outputs are aligned as long as the all the PWM outputs are on the same block of a particular Rabbit RIO chip.
A PPM ouput is similar to a PWM output, except it is shifted by an offset relative to the event that triggered the start of the PPM output.
A PPM output is either inverted or nonin­verted, based on whether it starts high or low, and may be set up so that their lead­ing and trailing edges of several PPM out­puts are aligned as long as the all the PPM outputs are on the same block of a particu­lar Rabbit RIO chip
PWM and PPM outputs on the BL4S100 are configured using the setPWM() and
setPPM() function calls.
BL4S100 User’s Manual 24

3.3 Serial Communication

The BL4S100 has two RS-232 serial ports, which can be configured as one RS-232 serial channel (with RTS/CTS) or as two RS-232 (3-wire) channels using the serMode() soft­ware function call. Table 5 summarizes the options.
Table 5. Serial Communication Configurations
Serial Port
Mode
D F
0 RS-232, 3-wire RS-232, 3-wire
1 RS-232, 5-wire CTS/RTS
The BL4S100 also has one CMOS serial channel that serves as the programming port.
All three serial ports operate in an asynchronous mode. An asynchronous port can handle 7 or 8 data bits. A 9th bit address scheme, where an additional bit is sent to mark the first byte of a message, is also supported. Serial Port A, the programming port, can be operated alternately in the clocked serial mode. In this mode, a clock line synchronously clocks the data in or out. Either of the two communicating devices can supply the clock. The BL4S100 boards supports standard asynchronous baud rates up to 115,200 bps.

3.3.1 RS-232

The BL4S100 RS-232 serial communication is supported by an RS-232 transceiver. This transceiver provides the voltage output, slew rate, and input voltage immunity required to meet the RS-232 serial communication protocol. Basically, the chip translates the Rabbit microprocessor’s CMOS signals to RS-232 signal levels. Note that the polarity is reversed in an RS-232 circuit so that a +3.3 V output becomes approximately -10 V and 0 V is out­put as +10 V. The RS-232 transceiver also provides the proper line loading for reliable communication.
RS-232 can be used effectively at the BL4S100’s maximum baud rate for distances of up to 15 m.

3.3.2 Programming Port

The BL4S100 has a 10-pin programming header. The programming port uses the Rabbit 4000 Serial Port A for communication, and is used for the following operations.
Programming/debugging
Cloning
The programming port is used to start the BL4S100 in a mode where the BL4S100 will download a program and then execute the program. The programming port transmits information to and from a PC while a program is being debugged.
The Rabbit 4000 startup-mode pins (SMODE0, SMODE1) are presented to the program­ming port so that an externally connected device can force the BL4S100 to start up in an
BL4S100 User’s Manual 25
external bootstrap mode. The BL4S100 can be reset from the programming port via the
ETHERNET
RJ-45 Plug
1. E_Tx+
2. E_Tx
3. E_Rx+
6. E_Rx
1
8
RJ-45 Jack
/RESET_IN line.
The Rabbit microprocessor status pin is also presented to the programming port. The status pin is an output that can be used to send a general digital signal.
NOTE: Refer to the Rabbit 4000 Microprocessor User’s Manual for more information
related to the bootstrap mode.

3.3.3 Ethernet Port

Figure 10 shows the pinout for the Ethernet port (J4). Note that there are two standards for numbering the pins on this connector—the convention used here, and numbering in reverse to that shown. Regardless of the numbering convention followed, the pin positions relative to the spring tab position (located at the bottom of the RJ-45 jack in Figure 10) are always absolute, and the RJ-45 connector will work properly with off-the-shelf Ethernet cables.
Figure 10. RJ-45 Ethernet Port Pinout
Two LEDs on the RJ-45 Ethernet jack indicate an Ethernet link (green LNK) and Ethernet activity (yellow ACT).
The grounded RJ-45 connector is shielded to minimize EMI effects to/from the Ethernet signals.
BL4S100 User’s Manual 26

3.4 A/D Converter Inputs

ADC
953 kW
10 pF
AIN0
AGND
AIN1
10 pF
105 kW
105 kW
953 kW
The single A/D converter chip used in the BL4S100 has a resolution of 12 bits (11 bits for the value and one bit for the polarity) amplifier. Each external input has circuitry that provides scaling and filtering. All 8 external inputs are scaled and filtered to provide the user with an input impedance of 1 M and a variety of single-ended unipolar, and differential bipolar ranges as shown in Table 6.
Figure 11 shows a pair of A/D converter input circuits. The resistors form an approx. 10:1 attenuator, and the capacitors filter noise pulses from the A/D converter inputs.
. The A/D converter chip has a programmable-gain
Figure 11. Buffered A/D Converter Inputs
The A/D converter chip can only accept positive voltages. By pairing the analog inputs, differential bipolar measurements are possible, and can be configured for each channel pair with the opmode parameter in the anaInConfig() software function call. The available voltage ranges are listed in Table 6.
BL4S100 User’s Manual 27
Table 6. A/D Converter Input Voltage Ranges
100 W
J11
AIN0
AIN1
Apply jumpers for factory-default current measurements
J10
AIN2
AIN3
Amplifier
Gain
1 0–20 V ± 20 V
2 0–10 V ± 10 V
4 0–5 V ± 5 V
5 0–4 V ± 4 V
*
8
10 0–2 V ± 2 V
16 0–1.25 V ± 1.25 V
20 0–1 V ± 1 V
* 4–20 mA operation is available with an ampli-
fier gain of 8
Single-Ended
Voltage Range
Differential
Unipolar
0–2.5 V ± 2.5 V
Bipolar
In the differential mode, each individual channel is limited to half the total voltage—for example, the range for a gain code of 1 is ±20 V, but each channel is limited to 0–20 V.
Note that while the differential bipolar mode can return a negative value, this negative value can only indicate negative with respect to the two differential voltages since the A/D converter cannot handle a voltage below -0.2 V.
When using channels AIN0–AIN3 for current measurements, remember to set the corre­sponding jumper(s) on headers J10 and J11. The current measurements are realized by actu­ally measuring the voltage drop across a 100 resistor.
Figure 12. Analog Current Measurements
The A/D converter inputs are factory-calibrated, and the calibration constants are stored in the user block.
BL4S100 User’s Manual 28

3.4.1 A/D Converter Calibration

When you start to develop your application, run USERBLOCK_READ_WRITE.C in the
SAMPLES\UserBlock folder to save the factory calibration constants in case you inad-
vertently write over them while running the sample programs.
To get the best results from the A/D converter, it is necessary to calibrate each mode (single-ended, differential, and current) for each of its gains. It is imperative that you cali­brate each of the A/D converter inputs in the same manner as they are to be used in the application. For example, if you will be performing floating differential measurements or differential measurements using a common analog ground, then calibrate the A/D con­verter in the corresponding manner. The calibration table in software only holds calibra­tion constants based on mode, channel, and gain. Other factors affecting the calibration must
be taken into account by calibrating using the same mode and gain setup as in the intended use.
Sample programs are provided to illustrate how to read and calibrate the various A/D inputs for the three operating modes.
Mode Read Calibrate
Single-Ended, unipolar ADC_RD_SE_UNIPOLAR.C ADC_CAL_SE_UNIPOLAR.C
Differential, bipolar ADC_RD_DIFF.C ADC_CAL_DIFF.C
4–20 mA ADC_RD_MA.C ADC_CAL_MA.C
These sample programs are found in the ADC subdirectory in SAMPLES\BL4S1xx. See Section 4.2.3 for more information on these sample programs and how to use them.
BL4S100 User’s Manual 29

3.5 USB Programming Cable

GND
J7
20
11
10
D2 Q1
D3 Q2
D4 Q3
RP1
J4
RP2
D5
Q4
D6
Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R33
U4
C13
R24
R30
R25
R35
J6
C7
C11
2
JP1
C6
C10
J1
8
7
2
1
D10
D11
C2
C3
C4
R4
U1
R6 R23
R5
C5
R26
R34
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R12
R7R8R9
R10
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74 R69 R72 R73 R74
U18
J10
2
1
J11
2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65
C64 C68
R63
R65
L2
BT1
C86 C87
R86
U20
C96
C91
C92
C95 C97
C101
C102
C103
C104
C105
C106
C107
C108
R98
R99
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R110
R111
R112
R113
ADC PROGRAMMER
GND
2
J12
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J13
2
RP6
1
S3 J16
S4
C114
2
7
8
J14
R117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D18
C112
R116
R118
L10 L11
C109
L8
C110
L9
L4
R88
C98
L5
C111
L6
C99
L7
U21
C100
R95
R96
R77
C94
R92 C113
R97
U19
R75
R85 C90
R76
C89
C88
U17
L3
C17
C18
C19
C20
C21
C22
C23
C24
C41 C44
R54
R55
C46 C49
C47 C50
U15
R62
R60
D17
C60
R66 C78
C80 C82
C81 C83
C84
4
3
1
2 Y4
R67 R68 R70
R71
R79
R80
R78
R81
R82
R83
R84
C70 C75
C72 C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C66
1
R59
C38
C42
C43
C30 C33
C29
C32
C37
C52
R58
C51
C57
C67
C62 C63
C53 C54
R57 C61
4
1
3
R61
Y3
R64
U9
R47
U13
R46
R51
C27
U5
C34
C31
C28
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C36
U12
C26
C25
U6
R48
R49
D16
U11
R28
R29
R50
C48
C1 R2
C16
C15
C14
U3
C9
C12
C8
R27
R39
R42
R37
R32 R36
XBee
Series 2
Power
RESET BL4S100 when changing mode:
Cycle power off/on or press RESET
after removing or attaching programming cable.
Program Mode
Run Mode
RESET
PROG
DIAG
Colored
edge
To
PC USB port
PROG
DIAG
Programming
Cable
The USB programming cable is used to connect the serial programming port of the BL4S100 to a PC USB port. The programming cable converts the voltage levels used by the PC USB port to the CMOS voltage levels used by the Rabbit microprocessor.
When the PROG connector on the programming cable is connected to the programming header on the BL4S100, programs can be downloaded and debugged over the serial interface.
The DIAG connector of the programming cable may be used on the programming header on the BL4S100 with the BL4S100 operating in the Run Mode. This allows the programming port to be used as a regular serial port.

3.5.1 Changing Between Program Mode and Run Mode

The BL4S100 is automatically in Program Mode when the PROG connector on the pro­gramming cable is attached, and is automatically in Run Mode when reset with no program­ming cable is attached or the DIAG connector is attached. When the Rabbit microprocessor is reset, the operating mode is determined by the status of the SMODE pins. When the pro­gramming cable’s PROG connector is attached, the SMODE pins are pulled high, placing the Rabbit microprocessor in the Program Mode. When the programming cable’s PROG connector is not attached, the SMODE0 pin is pulled low and the SMODE1 pin is high so that the Rabbit 4000 powers up in the clocked serial bootstrap mode to load the program from the serial flash when the BL4S100 is operating in the Run Mode.
A program “runs” in either mode, but can only be downloaded and debugged when the BL4S100 is in the Program Mode.
Refer to the Rabbit 4000 Microprocessor User’s Manual for more information on the pro-
Figure 13. BL4S100 Program Mode and Run Mode Setup
gramming port and the programming cable.
BL4S100 User’s Manual 30

3.6 Other Hardware

3.6.1 Clock Doubler

The BL4S100 takes advantage of the Rabbit microprocessor’s internal clock doubler. A built-in clock doubler allows half-frequency crystals to be used to reduce radiated emissions.
The clock doubler may be disabled if the higher clock speeds are not required. Disabling the clock doubler will reduce power consumption and further reduce radiated emissions. The clock doubler is disabled with a simple configuration macro as shown below.
1. Select the “Defines” tab from the Dynamic C Options > Project Options menu.
2. Add the line CLOCK_DOUBLED=0 to always disable the clock doubler.
The clock doubler is enabled by default, and usually no entry is needed. If you need to specify that the clock doubler is always enabled, add the line CLOCK_DOUBLED=1 to always enable the clock doubler.
3. Click OK to save the macro. The clock doubler will now remain off or on according to your setting whenever you are using the project file where you defined the macro.

3.6.2 Spectrum Spreader

The Rabbit microprocessors features a spectrum spreader, which help to mitigate EMI problems. By default, the spectrum spreader is on automatically, but it may also be turned off or set to a stronger setting. The means for doing so is through a simple configuration macro as shown below.
1. Select the “Defines” tab from the Dynamic C Options > Project Options menu.
2. Normal spreading is the default, and usually no entry is needed. If you need to specify nor­mal spreading, add the line
ENABLE_SPREADER=1
For strong spreading, add the line
ENABLE_SPREADER=2
To disable the spectrum spreader, add the line
ENABLE_SPREADER=0
NOTE: The strong spectrum-spreading setting is not recommended since it may limit
the maximum clock speed or the maximum baud rate. It is unlikely that the strong set­ting will be used in a real application.
3. Click OK to save the macro. The spectrum spreader will be set according to the macro value whenever a program is compiled using this project file.
NOTE: Refer to the Rabbit 4000 Microprocessor User’s Manual for more information
on the spectrum-spreading settings and the maximum clock speed.
BL4S100 User’s Manual 31

3.7 Memory

3.7.1 SRAM

All BL4S100 boards have 512KB of battery-backed data SRAM, and 512KB–1MB of fast program execution SRAM.

3.7.2 Flash Memory

BL4S100 boards have 1MB—2MB of serial flash memory.
Writing to arbitrary flash memory addresses at run time is also discouraged. Instead, define a “user block” area to store persistent data. The functions writeUserBlock() and readUserBlock() are provided for this.

3.7.3 VBAT RAM Memory

The tamper detection feature of the Rabbit microprocessor can be used to detect any attempt to enter the bootstrap mode. When such an attempt is detected, the VBAT RAM memory in the Rabbit microprocessor is erased. The serial bootloader on the BL4S100 boards uses the bootstrap mode to load the SRAM, which erases the VBAT RAM memory on any reset, and so it cannot be used for tamper detection.
BL4S100 User’s Manual 32

4. SOFTWARE

Dynamic C is an integrated development system for writing embedded software. It runs on an IBM-compatible PC and is designed for use with single-board computers and other devices based on the Rabbit micropro­cessor.
Chapter 4 provides the libraries, function calls, and sample programs related to the BL4S100

4.1 Running Dynamic C

Since the BL4S100 has a serial flash memory, all software development must be done in the static SRAM. The flash memory and SRAM options are selected with the Options >
Program Options > Compiler
tab for the program to run normally.
menu. Select Store Program in Flash on the “Compiler”
For debugging purposes, you may select Store Program in RAM on the “Compiler” tab so that download speed is as fast as possible. Note that programs stored in RAM will be lost when the BL4S100 is reset, so this option should be used only for debugging.
Developing software with Dynamic C is simple. Users can write, compile, and test C and assembly code without leaving the Dynamic C development environment. Debugging occurs while the application runs on the target. Alternatively, users can compile a program to an image file for later loading. Dynamic C runs on PCs under Windows NT and later—
see Rabbit’s Technical Note TN257, Running Dynamic C® With Windows Vista®, for additional information if you are using a Dynamic C under Windows Vista. Programs can be downloaded at baud rates of up to 460,800 bps after the program compiles.
BL4S100 User’s Manual 33
Dynamic C has a number of standard features:
Full-feature source and/or assembly-level debugger, no in-circuit emulator required.
Royalty-free TCP/IP stack with source code and most common protocols.
Hundreds of functions in source-code libraries and sample programs:
Exceptionally fast support for floating-point arithmetic and transcendental functions.
RS-232 and RS-485 serial communication.
Analog and digital I/O drivers.
2
I
C, SPI, GPS, file system.
LCD display and keypad drivers.
Powerful language extensions for cooperative or preemptive multitasking
Loader utility program to load binary images into Rabbit targets in the absence of
Dynamic C.
Provision for customers to create their own source code libraries and augment on-line
help by creating “function description” block comments using a special format for library functions.
Standard debugging features:
Breakpoints—Set breakpoints that can disable interrupts.
Single-stepping—Step into or over functions at a source or machine code level, µC/OS-II aware.
Code disassembly—The disassembly window displays addresses, opcodes, mnemonics, and
machine cycle times. Switch between debugging at machine-code level and source-code level by simply opening or closing the disassembly window.
Watch expressions—Watch expressions are compiled when defined, so complex expressions
including function calls may be placed into watch expressions. Watch expressions can be updated with or without stopping program execution.
Register window—All processor registers and flags are displayed. The contents of general registers
may be modified in the window by the user.
Stack window—shows the contents of the top of the stack.
Hex memory dump—displays the contents of memory at any address.
STDIO window—
detected for debugging purposes.
printf outputs to this window and keyboard input on the host PC can be
printf output may also be sent to a serial port or file.
BL4S100 User’s Manual 34

4.1.1 Upgrading Dynamic C

4.1.1.1 Patches and Updates
Dynamic C patches that focus on bug fixes and updates are available from time to time. Check the website at www.digi.com/support/ for the latest patches, workarounds, and updates.
The default installation of a patch or update is to install the file in a directory (folder) different from that of the original Dynamic C installation. Rabbit recommends using a different directory so that you can verify the operation of the patch or update without over­writing the existing Dynamic C installation. If you have made any changes to the BIOS or to libraries, or if you have programs in the old directory (folder), make these same changes to the BIOS or libraries in the new directory containing the patch. Do not simply copy over an entire file since you may overwrite an update; of course, you may copy over any programs you have written. Once you are sure the new patch or update works entirely to your satisfaction, you may retire the existing installation, but keep it available to handle legacy applications.

4.1.2 Add-On Modules

Starting with Dynamic C version 10.40, Dynamic C includes the popular µC/OS-II real­time operating system, point-to-point protocol (PPP), FAT file system, RabbitWeb, and other select libraries. Rabbit also offers for purchase the Rabbit Embedded Security Pack featuring the Secure Sockets Layer (SSL) and a specific Advanced Encryption Standard (AES) library.
In addition to the Web-based technical support included at no extra charge, a one-year telephone-based technical support subscription is also available for purchase.
Visit our website at www.digi.com for further information and complete documentation.
BL4S100 User’s Manual 35

4.2 Sample Programs

Sample programs are provided in the Dynamic C Samples folder. The sample program
PONG.C demonstrates the output to the STDIO window.
The various directories in the Samples folder contain specific sample programs that illus­trate the use of the corresponding Dynamic C libraries.
The SAMPLES\BL4S1xx folder provides sample programs specific to the BL4S100. Each sample program has comments that describe the purpose and function of the program. Fol­low the instructions at the beginning of the sample program.
To run a sample program, open it with the File menu (if it is not still open), then compile and run it by pressing F9. The BL4S100 must be in Program mode (see Section 3.5, “USB Programming Cable,”) and must be connected to a PC using the programming cable as described in Section 2.1, “BL4S100 Connections.” See Appendix C for information on the power-supply connections to the Demonstration Board.
Complete information on Dynamic C is provided in the Dynamic C User’s Manual.
TCP/IP specific functions are described in the Dynamic C TCP/IP User’s Manual, which is included in the online documentation set. Information on using the TCP/IP features and sample programs is provided in Chapter 5, “Using the Ethernet TCP/IP Features.”
ZigBee specific functions are described in An Introduction to ZigBee, which is included in the online documentation set. Information on using the TCP/IP features and sample pro­grams is provided in Chapter 6, “Using the ZigBee Features.”
BL4S100 User’s Manual 36

4.2.1 Digital I/O

DIGITAL INPUTS IN0IN11
HEADERS J3 & J4
BL4S100
CONNECT TO
BL4S100
HEADER J4
J3
J4
GND
J7
20
11
10
D2 Q1
D3
Q2
D4 Q3
RP1
J4
RP2
D5 Q4
D6 Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R33
U4
C13
R24
R30
R25
R35
J6
C7
C11
2
JP1
C6 C10
J1
8
7
2
1
D10
D11
C2
C3
C4
R4
U1
R6 R23
R5
C5
R26
R34
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R12
R7R8R9
R10
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74 R69 R72 R73 R74
U18
J10
2
1
J11
2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65
C64 C68
R63
R65
L2
BT1
C86 C87
R86
U20
C96
C91
C92
C95 C97
C101
C102
C103
C104
C105
C106
C107
C108
R98
R99
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R110
R111
R112
R113
ADC PROGRAMMER
GND
2
J12
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J13
2
RP6
1
S3
J16
S4
C114
2
7
8
J14
R117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D18
C112
R116
R118
L10 L11
C109
L8
C110
L9
L4
R88
C98
L5
C111
L6
C99
L7
U21
C100
R95
R96
R77
C94
R92 C113
R97
U19
R75
R85 C90
R76
C89
C88
U17
L3
C17
C18
C19
C20
C21
C22
C23
C24
C41 C44
R54
R55
C46 C49
C47 C50
U15
R62
R60
D17
C60
R66
C78
C80 C82
C81 C83
C84
4
3
1
2 Y4
R67 R68 R70
R71
R79
R80
R78
R81
R82
R83
R84
C70 C75
C72 C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C66
1
R59
C38
C42
C43
C30 C33
C29
C32
C37
C52
R58
C51
C57
C67
C62 C63
C53 C54
R57
C61
4
1
3
R61
Y3
R64
U9
R47
U13
R46
R51
C27
U5
C34
C31
C28
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C36
U12
C26
C25
U6
R48
R49
D16
U11
R28
R29
R50
C48
C1 R2
C16
C15
C14
U3
C9
C12
C8
R27
R39
R42
R37
R32 R36
XBee
Series 2
DEMO BOARD
POWER
JP15
JP1
JP2
The following sample programs are found in the SAMPLES\BL4S1xx\DIO subdirectory.
Figure 14 shows the signal connections for the sample programs that illustrate the use of the digital inputs.
Figure 14. Digital Inputs Signal Connections
DIGIN.C—Demonstrates the use of the digital inputs. Using the Demonstration Board,
you can see an input channel toggle from HIGH to LOW in the Dynamic C STDIO window when you press a pushbutton on the Demonstration Board.
DIGIN_BANK.C—Demonstrates the use of digInBank() to read digital inputs. Using
the Demonstration Board, you can see an input channel toggle from HIGH to LOW in the Dynamic C STDIO window when you press a pushbutton on the Demonstration Board. The banking functions allow I/O banks to be input or output more efficiently.
BL4S100 User’s Manual 37
Figure 15 shows the signal connections for the sample programs that illustrate the use of
DIGITAL OUTPUTS
OUT0OUT3
HEADERS J3 & J4
BL4S100
J3
J4
GND
J7
20
11
10
D2 Q1
D3 Q2
D4 Q3
RP1
J4
RP2
D5 Q4
D6 Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R33
U4
C13
R24
R30
R25
R35
J6
C7
C11
2
JP1
C6
C10
J1
8
7
2
1
D10
D11
C2
C3
C4
R4
U1
R6 R23
R5
C5
R26
R34
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R12
R7R8R9
R10
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74 R69 R72 R73 R74
U18
J10
2
1
J11
2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65
C64 C68
R63
R65
L2
BT1
C86 C87
R86
U20
C96
C91
C92
C95 C97
C101
C102
C103
C104
C105
C106
C107
C108
R98
R99
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R110
R111
R112
R113
ADC PROGRAMMER
GND
2
J12
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J13
2
RP6
1
S3 J16
S4
C114
2
7
8
J14
R117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D18
C112
R116
R118
L10 L11
C109
L8
C110
L9
L4
R88
C98
L5
C111
L6
C99
L7
U21
C100
R95
R96
R77
C94
R92 C113
R97
U19
R75
R85 C90
R76
C89
C88
U17
L3
C17
C18
C19
C20
C21
C22
C23
C24
C41 C44
R54
R55
C46 C49
C47 C50
U15
R62
R60
D17
C60
R66
C78
C80 C82
C81 C83
C84
4
3
1
2 Y4
R67 R68 R70
R71
R79
R80
R78
R81
R82
R83
R84
C70 C75
C72 C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C66
1
R59
C38
C42
C43
C30 C33
C29
C32
C37
C52
R58
C51
C57
C67
C62 C63
C53 C54
R57 C61
4
1
3
R61
Y3
R64
U9
R47
U13
R46
R51
C27
U5
C34
C31
C28
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C36
U12
C26
C25
U6
R48
R49
D16
U11
R28
R29
R50
C48
C1 R2
C16
C15
C14
U3
C9
C12
C8
R27
R39
R42
R37
R32 R36
XBee
Series 2
DEMO BOARD
POWER
to GND
on
Header J4
JP15
OUT0 OUT1 OUT2 OUT3
JP1
JP2
the digital outputs.
Figure 15. Digital Outputs Signal Connections
DIGOUT.C—Demonstrates the use of the sinking digital outputs. Using the Demonstra-
tion Board, you can see an LED toggle on/off via a sinking output that you selected via the Dynamic C STDIO window.
DIGOUT_BANK.C—Demonstrates the use of digOutBank() to control the sinking
digital outputs. Using the Demonstration Board, you can see an LED toggle on/off via a sinking output that you selected via the Dynamic C STDIO window. The banking func­tions allow I/O banks to be input or output more efficiently.
BL4S100 User’s Manual 38
INTERRUPTS.C—Demonstrates the use of the Rabbit RIO interrupt service capabilities.
J3
Oscilloscope GND
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
Set up the Demonstration Board as shown in Figure 14 with IN0 connected to SW1.
The sample program sets up two interrupt sources, an external interrupt tied to pushbutton switch SW1, and a rollover interrupt tied to a timer that is producing a PWM output. The Dynamic C STDIO window will show a count of rollovers that have occurred since the PWM signal was started. The window will also display Button Pressed each time the pushbutton switch is pressed. Each time the button is pressed, the timeout timer that removes the message is reset, so you can keep the message on the screen indefinitely by pressing the button repeatedly.
PPM.C—Demonstrates the use of up to eight PPM channels on the digital output pins
on headers J3 and J4. The PPM signals are set for a frequency of 200 Hz, with the duty cycle adjustable from 0 to 100% and an offset adjustable from 0 to 100% by the user. These pins can be connected to an oscilloscope to view the waveform being generated. The overall frequency can be adjusted in the #define PPM_FREQ line. Follow these instructions when running this sample program.
1. The digital outputs on the BL4S100 do not have an internal pull-up resistor and will not register on the oscilloscope without a pull-up resistor. The Demonstration Board has pull-up resistors— connect OUT0–OUT3 on the BL4S100 to SW1–SW4 on header J1 of the Demonstration Board.
2. Connect the oscilloscope probe to digital output pins OUT0–OUT3 on headers J3 or J4. Remember to connect the oscilloscope ground to GND on header J4.
Once you compile and run the sample program, change the duty cycle and offsets for a given PPM channel via the Dynamic C STDIO window and watch the change in wave­forms on the oscilloscope. Signals on OUT0 and OUT1 will all be synchronized with each other as they share the same overall counter block that sets the cycle frequency. The same is true for PPM signals on OUT2 and OUT3 (and the remaining digital outputs when you connect them to J1 on the Demonstration Board instead of those already connected). The two blocks may have a phase shift from each other, but will run at the same frequency.
PULSE_CAPTURE.C—Demonstrates the use of two input capture inputs tied to PPM
channels on the digital I/O pins on header J3. The input capture feature allows the begin and end positions of a pulse to be measured in a given time window. We take advantage of the counter synchronization feature of the underlying Rabbit RIO chip to create cap­ture windows and pulse modulation windows that are synchronized. This guarantees that we always catch the begin edge first on a quickly repeating waveform. This was done to create an interactive element to this sample program, but capturing real-world repetitive signals will usually not have this advantage. Follow the instructions below when running this sample program.
1. Connect I/O pins IN0 and OUT0 together.
2. Connect I/O pins IN3 and OUT2 together.
3. Connect the oscilloscope ground to GND on header J3.
4. Use the oscilloscope probes on the IN0 and the OUT0 pair or the IN3 and OUT2 pair to view the PPM signals.
BL4S100 User’s Manual 39
Once the connections have been made, compile and run this sample program. Change
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
DEMO BOARD SW1
the offset and duty cycle for a given PPM channel via the Dynamic C STDIO window and watch the change to the begin and end counts measured on the input capture inputs. The PPM frequency can be changed in the #define PPM_FREQ line.
Rabbit recommends that you run and understand both the INTERRUPTS.C and the PULSE_
CAPTURE.C
TURE_IRQ.C
sample programs before looking at PULSE_CAPTURE_IRQ.C since PULSE_CAP-
uses concepts covered in the simpler sample programs.
PULSE_CAPTURE_IRQ.C—Demonstrates the use of an advanced pulse capture
method using RIO interrupts.
IN0 is configured as the pulse capture input, and OUT0– OUT7 are configured as PWM outputs of varying fre­quencies and duty cycles that provide signals to test the capture with. Connect IN0 and OUT0 together.
If an external signal source is available, connect it to IN0 for capture.
If an external signal source is not available, connect IN0 on the BL4S100 to SW1.
Once you compile and run this sample program, press any key on your PC keyboard to pause or unpause the display—the capture will continue in the background. Change the IN0 connection to any of OUT0–OUT7 or an external source to capture a different signal.
This sample program will continuously capture single pulses in an interrupt service request for display
PWM.C—Demonstrates the use of the eight PWM channels on digital output pins
OUT0–OUT7. The PWM signals are set for a frequency of 200 Hz with the duty cycle adjustable from 0 to 100% by the user. These pins can be connected to an oscilloscope to view the waveform being generated. The overall frequency can be adjusted in the
#define PWM_FREQ line. Follow these instructions when running this sample program.
1. The digital outputs on the BL4S100 do not have an internal pull-up resistor and will not register on the oscilloscope without a pull-up resistor. The Demonstration Board has pull-up resistors— connect OUT0–OUT3 on the BL4S100 to SW1–SW4 on header J1 of the Demonstration Board.
2. Connect the oscilloscope probe to digital output pins OUT0–OUT3 on headers J3 or J4. Remember to connect the oscilloscope ground to GND on header J4.
Once you compile and run the sample program, change the duty cycle for a given PWM output channel via the Dynamic C STDIO window and watch the change in waveforms on the oscilloscope. Signals on the same RIO counter block (OUT0 and OUT1 for example) will all be synchronized with each other. Different blocks may have a phase shift from each other, but will run at the same frequency.
Global synchronization can be used to synchronize different block on the RIO, but this is not demonstrated in this sample program.
BL4S100 User’s Manual 40
QUADRATURE_DECODER.C—Demonstrates the use of quadrature decoders on the
DIGITAL I/O
HEADER J3
BL4S100
J3
J4
GND
J7
20
11
10
D2 Q1
D3 Q2
D4
Q3
RP1
J4
RP2
D5 Q4
D6 Q5
D7 Q6
D8 Q7
D9 Q8
U2
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
BUTTON
DS1
DS2
R1
S2
S1
J5
RX TX/1W CTS RTS +5 V GND
RNET
J2
2
4
3
RNET
PWR
D1
J8
2
R41 R31 R43
R45
R40
R38R44
R33
U4
C13
R24
R30
R25
R35
J6
C7
C11
2
JP1
C6
C10
J1
8
7
2
1
D10
D11
C2
C3
C4
R4
U1
R6 R23
R5
C5
R26
R34
R13
R14
R15
R16
R17
R18
R19
R20
R21
R22
R12
R7R8R9
R10
R11
D12
U7
D15
U8
D14
D13
20
11
10
C58
L1
J9
C69 C74 R69 R72 R73 R74
U18
J10
2
1
J11
2
1
AIN0 AIN1
AIN2 AIN3
R87 R89 R90 R93
AIN0 AIN1 AIN2 AIN3 AIN4 AIN5 AIN6 AIN7 AGND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
RST
PWR
AGND
C65
C64 C68
R63
R65
L2
BT1
C86 C87
R86
U20
C96
C91
C92
C95 C97
C101
C102
C103
C104
C105
C106
C107
C108
R98
R99
R100
R101
R102
R103
R104
R105
R106
R107
R108
R109
R110
R111
R112
R113
ADC PROGRAMMER
GND
2
J12
J15
R115
RP5
RP3
R94
R91
D19
D20
D21
D22
D23
D24
D25 D26
RP4
J13
2
RP6
1
S3 J16
S4
C114
2
7
8
J14
R117
D27
DS3
DS4
J17
2
PWR
IN
L12
3
4
C93
D18
C112
R116
R118
L10 L11
C109
L8
C110
L9
L4
R88
C98
L5
C111
L6
C99
L7
U21
C100
R95
R96
R77
C94
R92 C113 R97
U19
R75
R85 C90
R76
C89
C88
U17
L3
C17
C18
C19
C20
C21
C22
C23
C24
C41 C44
R54
R55
C46 C49
C47 C50
U15
R62
R60
D17
C60
R66
C78
C80 C82
C81 C83
C84
4
3
1
2 Y4
R67 R68 R70
R71
R79
R80
R78
R81
R82
R83
R84
C70 C75
C72 C76
C73 C77
C71
C85
C79
U16
Y1
C55
Y2
C59
C66
1
R59
C38
C42
C43
C30 C33
C29
C32
C37
C52
R58
C51
C57
C67
C62 C63
C53 C54
R57
C61
4
1
3
R61
Y3
R64
U9
R47
U13
R46
R51
C27
U5
C34
C31
C28
R56
C45
C40
C39
U14
C56
U10
R53
Q9
R52
C35
C36
U12
C26
C25
U6
R48
R49
D16
U11
R28
R29
R50
C48
C1 R2
C16
C15
C14
U3
C9
C12
C8
R27
R39
R42
R37
R32 R36
XBee
Series 2
DEMO BOARD
POWER
CONNECT TO
BL4S100
HEADER J4
JP15
IN0 + OUT0 IN1 + OUT1
JP1
JP2
IN4 IN3
IN2 GND to GND on Header J4
BL4S100. See Figure 16 for hookup instructions of the digital I/O pins on headers J3 and J4 with the Demonstration Board.
Figure 16. Quadrature Decoder Signal Connections
Once the connections have been made, compile and run this sample program. Press button SW1 on the Demonstration Board to decrement the quadrature counter, or press button SW2 on the Demonstration Board to increment the quadrature counter. The counter will continue to increment or decrement as you hold down the corresponding pushbutton. Press button SW3 on the Demonstration Board to reset the quadrature counter.
BL4S100 User’s Manual 41
PPM_QUADRATURE_DECODER.C—Demonstrates the use of two PWM and two PPM
J3
OUT2 OUT1 OUT0 IN3 IN2 IN1 IN0 +K GND
IN11 IN10 IN9 IN8 IN7 IN6 IN5 IN4 GND
+5 V +K2 +K1 GND OUT7 OUT6 OUT5 OUT4 OUT3
J4
J16
output channels connected back to four digital inputs to simulate two Quadrature Decoders feeding signals into the BL4S100. The PWM and PPM outputs are adjusted through a menu system to simulate the movement of a Quadrature Decoder. The results of the Quadrature Decoder inputs are displayed continuously to show the effects of the PWM and PPM outputs.
The high-speed Quadrature Decoder counts the number of rollovers that occur (one per 1000 counts). The low-speed Quadrature Decoder displays the current count in the register.
Once the connections are made as shown, and you compile and run this sample program, change the frequency/ direction for a given Quadrature Decoder via the Dynamic C
STDIO window and watch the register counts on the low-
speed channel and the register rollovers on the high-speed channel.
BL4S100 User’s Manual 42

4.2.2 Serial Communication

J5
RX TX/1W CTS RTS +5 V GND
J5
RX TX/1W CTS RTS +5 V GND
J5
RX TX/1W CTS RTS +5 V GND
J5
RX TX/1W CTS RTS +5 V GND
Rx
Tx
GND
The following sample programs are found in the SAMPLES\BL4S1xx\RS232 subdirectory.
PARITY.C—This sample program repeatedly sends byte values 0–127 from Serial Port D
to Serial Port F. The program will cycle through parity types on Serial Port D. Serial Port F will always be checking parity, so parity errors should occur during most sequences. The results are displayed in the Dynamic C STDIO window.
Connect Tx/1-W to CTS (RxF) on header J5 before compiling and running this sample program. You may wish to do <Ctrl-Q> to stop the program to see the data, which go by rather quickly.
NOTE: For the sequence that does yield parity errors, the errors won't
occur for each byte received. This is because certain byte patterns along with the stop bit will appear to generate the correct parity for the UART.
SIMPLE3WIRE.C—This program demonstrates basic RS-232
serial communication using the Dynamic C STDIO window. Fol­low these instructions before running this sample program.
Connect Tx/1-W to CTS (RxF), then connect Rx to RTS (TxF) before compiling and running this sample program.
SIMPLE5WIRE.C—This program demonstrates 5-wire RS-232 serial communication
using the Dynamic C STDIO window. Follow these instructions before running this sample program.
Before you compile and run this sample program, connect Tx/1-W to Rx, then connect RTS to CTS.
To test flow control, disconnect RTS from CTS while running this program. Characters should stop printing in the Dynamic C STDIO window and should resume when RTS and CTS are connected again.
COMPUTER_PARITY.C—This sample program demonstrates using parity over a simple
three-wire RS-232 connection. Parity is selected for the BL4S100 and for the serial ter­minal emulation program. Characters typed in either the Dynamic C STDIO window or in the serial terminal emulation program are echoed in both displays. Parity errors are counted and displayed by the Rabbit microprocessor on the BL4S100.
Before you compile and run this sample program, use the long serial cable (Part No. 540-0094) to connect Tx (brown wire), Rx (red wire) and GND (black wire) on header J5 to a PC COM port.
Open a Hyperterminal session (Start > Accessories >
Communications
). Select the PC COM port the cable is
connected to and set the default serial parameters:
Bits per second: 115200
Data bits: 8
Parity: None
BL4S100 User’s Manual 43
Stop bits: 1
Flow control: None
Once you compile and run this program, configure the serial port using the following menu options in the Dynamic C STDIO window.
Menu
q - Quit
s - Send "Sample Text"
r - Reset Counters
n - Set No Parity
e - Set Even Parity
o - Set Odd Parity
Type in the Hyperterminal window to send characters to the sample program. The char­acters typed will be echoed in the terminal emulation program and will be displayed on the top of the Dynamic C STDIO window with a message displaying whether there was an error or not. There may be some differences for special characters such as new lines (enter key), delete, backspace, and others. Each character sent will also increment either the successful or the error counter, depending on the parity of both the BL4S100 and the terminal emulation program.
COMPUTER3WIRE.C—This sample program demonstrates basic initialization for a sim-
ple three-wire RS-232 connection. Characters typed in either the Dynamic C STDIO window or in a serial terminal emulation program are echoed in both displays.
The setup and run instructions are the same as for the COMPUTER_PARITY.C sample program.
COMPUTER5WIRE.C—This sample program demonstrates basic initialization for a sim-
ple five-wire RS-232 connection. Characters typed in either the Dynamic C STDIO window or in a serial terminal emulation program are echoed in both displays.
The setup and run instructions are the same as for the COMPUTER_PARITY.C sample program.
BL4S100 User’s Manual 44

4.2.3 A/D Converter Inputs

The following sample programs are found in the SAMPLES\BL4S1xx\ADC subdirectory. You will need a separate power supply and a multimeter to use with these sample programs.
NOTE: The calibration sample programs will overwrite the calibration constants set at
the factory. Before you run these sample programs, run
WRITE.C
stants in case you inadvertently write over them while running other sample programs.
NOTE: For best results use a multimeter with a resolution of at least 4½ digits.
in the SAMPLES\UserBlock folder to save the factory calibration con-
USERBLOCK_READ_
ADC_CAL_DIFF.CDemonstrates how to recalibrate a differential A/D converter
channel using two measured voltages to generate two coefficients, gain and offset, which are rewritten into the user block. The voltage that is being monitored is displayed continuously.
Once you compile and run this sample program, connect the power supply across a differential channel pair, then follow the instructions in the Dynamic C STDIO window.
ADC_CAL_MA.C—Demonstrates how to recalibrate a milli-amp A/D converter chan- nel using two measured currents to generate two coefficients, gain and offset, which are rewritten into the reserved user block. The current that is being moni­tored is displayed continuously.
Before you compile and run this sample program, jumper pins 1–2 and 5–6 on headers J10 and J11. Then connect a current meter in series with the power supply connected to one of pins AIN0–AIN3 and AGND, then compile and run the sample program, and follow the instructions in the Dynamic C STDIO window.
ADC_CAL_SE_UNIPOLAR.C—Demonstrates how to recalibrate a single-ended uni- polar A/D converter channel using two measured voltages to generate two coeffi­cients, gain and offset, which are rewritten into the reserved user block. The voltage that is being monitored is displayed continuously.
Before you compile and run this sample program, connect the power supply (which should be OFF) between the pin (AIN0–AIN7) of the channel you are calibrating and AGND, then compile and run the sample program, and follow the instructions in the Dynamic C STDIO window.
ADC_AVERAGING_SE_UNIPOLAR.C—Demonstrates how to read and display the aver-
age voltage of each of the single-ended analog input channels using a sliding window. The voltage is calculated from coefficients read from the display—the two calibration coefficients, gain and offset, in the Dynamic C STDIO window for each channel, and mode of operation.
Before you compile and run this sample program, connect the power supply (which should be OFF) between the pin (AIN0–AIN7) of an analog input channel and AGND, then compile and run the sample program, and follow the instructions in the Dynamic C
STDIO window.
BL4S100 User’s Manual 45
ADC_RD_CALDATA.C—Demonstrates how to display the two calibration coefficients,
gain and offset, in the Dynamic C STDIO window for each channel and mode of operation.
ADC_RD_DIFF.C—Demonstrates how to read and display voltage and equivalent val-
ues for a differential A/D converter channel using calibration coefficients previously stored in the user block. The user selects to display either the raw data or the voltage equivalent.
Once you compile and run this sample program, connect the power supply across a differential channel pair, then follow the instructions in the Dynamic C STDIO window.
ADC_RD_MA.C—Demonstrates how to read and display voltage and equivalent values
for a milli-amp A/D converter channel using calibration coefficients previously stored in the user block.
Before you compile and run this sample program, jumper pins 1–2 and 5–6 on headers J10 and J11. Then connect a current meter in series with the power supply connected to one of pins AIN0–AIN3 and AGND, then compile and run the sample program, and follow the instructions in the Dynamic C STDIO window as you vary the output from the power supply.
ADC_RD_SE_UNIPOLAR.C—Demonstrates how to read and display the voltage of all
single-ended analog input channels using calibration coefficients previously stored in the user block.
Before you compile and run this sample program, connect the power supply (which should be OFF) between a pin (AIN0–AIN7) and AGND, then compile and run the sample program, and follow the instructions in the Dynamic C STDIO window. The voltage readings will be displayed for all the channels measured to that point.

4.2.4 Real-Time Clock

If you plan to use the real-time clock functionality in your application, you will need to set the real-time clock. You may set the real-time clock using the SETRTCKB.C sample pro­gram from the Dynamic C SAMPLES\RTCLOCK folder. The RTC_TEST.C sample pro­gram in the Dynamic C SAMPLES\RTCLOCK folder provides additional examples of how to read and set the real-time clock

4.2.5 TCP/IP Sample Programs

TCP/IP sample programs are described in Chapter 5.

4.2.6 ZigBee Sample Programs

ZigBee sample programs are described in Chapter 6.
BL4S100 User’s Manual 46

4.3 BL4S100 Libraries

Two library directories provide libraries of function calls that are used to develop applica­tions for the BL4S100.
BL4S1xx—libraries associated with features specific to the BL4S100. The functions in the BL4S1xx.LIB library are described in Section 4.4, “BL4S100 Function Calls.”
TCPIP—libraries specific to using TCP/IP functions on the BL4S100. Further informa­tion about TCP/IP is provided in Chapter 5, “Using the Ethernet TCP/IP Features.”
ZigBee—libraries specific to using ZigBee functions on the BL4S100. Further infor­mation about ZigBee is provided in Chapter 6, “Using the ZigBee Features.”
BL4S100 User’s Manual 47

4.4 BL4S100 Function Calls

4.4.1 Board Initialization

void brdInit (void);
FUNCTION DESCRIPTION
Call this function at the beginning of your program. This function initializes Parallel Ports A–E, the Rabbit RIO chip, and the A/D converter.
The ports are initialized according to Table A-3 in Appendix A.
brdInit
BL4S100 User’s Manual 48

4.4.2 Digital I/O

int setDigIn(int channel);
FUNCTION DESCRIPTION
Sets an input channel to be a general digital input.
PARAMETERS
channel digital input channel, 0–11 (pins IN0–IN11)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
SEE ALSO
brdInit, digIn, digInBank
setDigIn
int digIn(int channel);
FUNCTION DESCRIPTION
Reads the state of a digital input channel.
PARAMETERS
channel digital input channel, 0–11 (pins IN0–IN11)
RETURN VALUE
The logic state of the specified channel.
0 — logic low 1 — logic high
-EINVAL — channel value is out of range.
-EPERM:— channel functionality does not permit this operation.
SEE ALSO
brdInit, setDigIn, digInBank
digIn
BL4S100 User’s Manual 49
int digInBank(int bank);
FUNCTION DESCRIPTION
Reads the state of the 12 digital input channels in banks of up to 8 input channels.
PARAMETER
bank digital input bank pins:
0 — IN0–IN7 1 — IN8–IN11
RETURN VALUE
Data read from the bank of digital inputs.
Data Bits Bank 0 Bank 1
LSB D0 IN0 IN8
digInBank
D1 IN1 IN9
-EINVAL — invalid parameter value.
SEE ALSO
brdInit, digIn, setDigIn
D2 IN2 IN10
D3 IN3 IN11
D4 IN4
D5 IN5
not used
D6 IN6
MSB D7 IN7
BL4S100 User’s Manual 50
setExtInterrupt
int setExtInterrupt(int channel, char edge, int handle);
FUNCTION DESCRIPTION
Sets the specified channel to be an interrupt. The interrupt can be configured as a rising edge, falling edge, or either edge.
PARAMETERS
channel digital input channel to be configured as an interrupt channel,
0–11 (pins IN0–IN11)
edge macro to set edge of the interrupt:
BL_IRQ_RISE — interrupt event on rising edge
BL_IRQ_FALL — interrupt event on falling edge
BL_IRQ_BOTH — interrupt events on both edges
handle handle for the ISR handler to service this interrupt
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCES — resource needed by this function is not available.
-EFAULT — internal data fault detected.
positive number — Mode Conflict — the positive number is a bitmap that corresponds to the pins on a particular block of a RIO chip that have not been configured to support this function call. Appendix D provides the details of the pin and block associations to allow you to identify the channels that need to be reconfigured to support this function call.
SEE ALSO
brdInit, digIn, setDigIn
BL4S100 User’s Manual 51
setDecoder
int setDecoder(int channel_a, int channel_b, int channel_index,
char index_polarity);
FUNCTION DESCRIPTION
Sets up Quadrature Decoder functionality on the specified channels. The Quadrature Decoder may optionally use an index channel.
PARAMETERS
channel_a channel to use as Input A (also known as in-phase or I),
0–11 (pins IN0–IN11)
channel_b channel to use as Input B (also known as quadrature or Q),
0–11 (pins IN0–IN11)
channel_index channel to use as index input (-1 if not used),
0–11 (pins IN0–IN11)
NOTE: The Quadrature Decoder count may still be reset by existing or new synch signals
set up on the same block of a particular RIO chip.
index_polarity polarity of the index channel
(not used when channel_index set to -1)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EACCESS— resource needed by this function is not available.
SEE ALSO
brdInit, getCounter, resetCounter
0 — index on low level non-zero — index on high level
BL4S100 User’s Manual 52
setCounter
int setCounter(int channel, int mode, int edge, word options);
FUNCTION DESCRIPTION
Sets up the channel as a counter input, with selectable modes and edge settings. The counter will increment or decrement on each selected edge event. Use to read the current count and use
PARAMETERS
channel channel to use for the up count input, 0–11 (pins IN0–IN11)
mode macro to set the mode of the counter:
edge edge setting macro for the up count event:
resetCounter() to force a reset of the counter.
BL_UP_COUNT — continuous up count mode
BL_DOWN_COUNT — up/down count mode (uses 2 pins)
BL_MATCH_ENABLE — continuous up count mode with count
stopping on any match event
BL_EDGE_RISE — up count on rising edge
BL_EDGE_FALL — up count on falling edge
BL_EDGE_BOTH — up count on either edge
getCounter()
options options based on mode (N/A if the continuous up mode is selected):
BL_EDGE_RISE — down count on rising edge
BL_EDGE_FALL — down count on falling edge
BL_EDGE_BOTH — down count on either edge
If the up/down mode is selected,
options has down count channel
and event edge settings (these settings cannot be on the same pin as the up count) ORed together. The low 4 bits are the channel num­ber for the down count input
If the
BL_MATCH_ENABLE mode is selected, options has the
match count to stop at (other match registers on the block are set to max.).
BL4S100 User’s Manual 53
setCounter (continued)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value or pin use.
-EPERM — pin type does not permit this function.
-EACCESS— resource needed by this function is not available.
-EFAULT — internal data fault detected.
positive number — Mode Conflict — the positive number is a bitmap that corresponds to the pins on a particular block of a RIO chip that have not been configured to support this function call. Appendix D provides the details of the pin and block associations to allow you to identify the channels that need to be reconfigured to support this function call.
SEE ALSO
brdInit, getCounter, resetCounter
BL4S100 User’s Manual 54
setCapture
int setCapture(int channel, int mode, int edge, word options);
FUNCTION DESCRIPTION
Sets up the channel as an event capture input, with selectable modes and edge settings. The counter will run from a gated main or prescaled clock signal based on the run cri­teria of the selected mode, and begin/end events can be set to capture the count at the time of these events. Optionally, a second channel can be set (which shares the same RIO channel input block as
getBegin() and getEnd() to read the captured count values and use resetCount­er()
PARAMETERS
channel channel to use for the begin event input for all modes except BL_
mode mode macro for the counter/timer:
to force a reset of the counter.
CNT_TIL_END
0–11 (pins IN0–IN11)
BL_CNT_RUN — continuous count mode
channel) for two-signal begin/end event detection. Use
, then it specifies the end event input.,
BL_CNT_BEGIN_END — start count on begin event, continue to
count until end event detected
BL_CNT_TIL_END — count until end event detected
BL_CNT_ON_BEGIN — count while begin signal is active
NOTE: If an end event occurs before the begin event, the count will begin then end
immediately on the begin event, and the end count will be 1. The begin count will be 0 or 1 based on the edge that triggered the event (0 = rising, 1 = falling).
edge edge/state macro setting for the begin event for all modes except
BL_CNT_TIL_END, then it specifies the end event:
BL_EVENT_RISE — begin event on rising edge BL_EVENT_FALL — begin event on falling edge BL_EVENT_BOTH — begin event on any edge
The following two settings are only for the
BL_CNT_ON_BEGIN
mode:
BL_BEGIN_HIGH — begin active while signal is high BL_BEGIN_LOW — begin active while signal is low
BL4S100 User’s Manual 55
options options based on mode:
RETURN VALUE
setCapture (continued)
BL_CNT_TIL_END — begin input and edge can be selected
all others modes — end input and edge can be selected.
For all modes, the prescale clock and save limit flags can be used (OR in).
For input and edge selection, use:
low 5 bits for channel to use for begin/end input
BL_SAME_CHANNELbegin and end both from same channel BL_EVENT_RISE — begin/end event on rising edge BL_EVENT_FALL — begin/end event on falling edge BL_EVENT_BOTH — begin/end event on any edge
For clock and limit options use:
BL_PRESCALE — use prescaled clock BL_SAVE_LIMIT — save current limit register value (other-
wise limit set to 0xFFFF)
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCESS— resource needed by this function is not available.
-EFAULT — internal data fault detected.
positive number — Mode Conflict — the positive number is a bitmap that corresponds to the pins on a particular block of a RIO chip that have not been configured to support this function call. Appendix D provides the details of the pin and block associations to allow you to identify the channels that need to be reconfigured to support this function call.
SEE ALSO
brdInit, getBegin, getEnd, getCounter, resetCounter
BL4S100 User’s Manual 56
getCounter
int getCounter(int channel, word *count);
FUNCTION DESCRIPTION
Reads the current count of the counter register within the counter block hosting the given channel.
PARAMETERS
channel digital input channel that uses the desired counter block,
0–11 (pins IN0–IN11)
count pointer to word variable to place count register reading
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
SEE ALSO
brdInit, setCounter, setDecoder, setCapture, resetCounter
getBegin
int getBegin(int channel, word *begin);
FUNCTION DESCRIPTION
Reads the current value of the begin register within the counter block hosting the given channel.
PARAMETERS
channel digital input channel that uses the desired counter block,
0–11 (pins IN0–IN11)
begin pointer to word variable to place begin register reading
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
SEE ALSO
brdInit, setCapture, resetCounter, getEnd
BL4S100 User’s Manual 57
getEnd
int getEnd(int channel, word *end);
FUNCTION DESCRIPTION
Reads the current value of the end register within the counter block hosting the given channel.
PARAMETERS
channel digital input channel that uses the desired counter block,
0–11 (pins IN0–IN11)
begin pointer to word variable to place end register reading
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
SEE ALSO
brdInit, setCapture, resetCounter, getBegin
resetCounter
int resetCounter(int channel);
FUNCTION DESCRIPTION
Resets the current count of the counter register within the counter block hosting the given channel.
PARAMETER
channel digital input channel that uses the desired counter block,
0–11 (pins IN0–IN11)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
SEE ALSO
brdInit, getCounter, setDecoder
BL4S100 User’s Manual 58
setLimit
int setLimit(int channel, word limit);
FUNCTION DESCRIPTION
Sets the value of the limit register within the counter block hosting the given channel. This new value will take effect on the next counter overflow or by resetting the counter via the
PARAMETERS
channel digital input channel that uses the desired counter block,
limit new value for the limit register
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
resetCounter() function call.
0–11 (pins IN0–IN11)
SEE ALSO
brdInit, setCapture, resetCounter
BL4S100 User’s Manual 59
setSyncIn
int setSyncIn(int channel, int source, int edge);
FUNCTION DESCRIPTION
Sets the synch for the block the digital input channel is associated with.
Note that when more than one block is synchronized to the same synch signal (global or external), each block has its own independent edge-detection circuit. These circuits will synch to the edge within plus or minus one count of the block’s current clock source (main or prescale). This means synchronized blocks may have a small offset when compared to each other.
PARAMETERS
channel digital input channel that is on the block that will have its synch
set, 0–11 (pins IN0–IN11)
source source of the synch signal.
-1 to use the RIO chip's Global Synch signal or input-capable channel to use as an external synch signal
edge edge of the synch signal.
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCES — resource needed by this function is not available.
-EFAULT — internal data fault detected.
SEE ALSO
brdInit, setSyncOut
BL_EDGE_RISE — synchronize event on rising edge BL_EDGE_FALL — synchronize event on falling edge BL_EDGE_BOTH — synchronize events on both edges 0 — disable the synch on this block (if the source of the external
synch is given, it will be set to a digital input)
BL4S100 User’s Manual 60
int globalSync(void);
FUNCTION DESCRIPTION
Sends a single pulse to the global synch inputs of all RIO chips.
Note that when more than one block is synchronized to the same synch signal (global or external), each block has its own independent edge-detection circuit. These circuits will synch to the edge within plus or minus one count of the block’s current clock source (main or prescale). This means synchronized blocks may have a small offset when compared to each other.
RETURN VALUE
0 — success.
-EPERMbrdInit() was not run before calling this function.
SEE ALSO
brdInit
globalSync
BL4S100 User’s Manual 61
setDigOut
int setDigOut(int channel, int state);
FUNCTION DESCRIPTION
Configures the output channel as a simple digital output. The output state of the chan­nel is also initialized to logic 0 or logic 1 based on the function should be used to control the output state after configuration as it is more effi­cient. This function is non-reentrant.
PARAMETERS
channel digital output channel, 0–7 (OUT0–OUT7)
state set output to one of the following states:
0 — connects the load to GND 1 — puts the output in a high-impedance state
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
state parameter. The digOut
SEE ALSO
brdInit, digOut, digOutBank
BL4S100 User’s Manual 62
digOut
void digOut(int channel, int state);
FUNCTION DESCRIPTION
Sets the state of a digital output channel to a logic 0 or a logic 1. This function will only allow control of pins that are configured by the
PARAMETERS
channel digital output channel, 0–7 (OUT0–OUT7)
state set output to one of the following states:
0 — connects the load to GND 1 — puts the output in a high-impedance state.
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin function was not set up as a digital output
setDigOut() function call.
SEE ALSO
brdInit, setDigOut, digOutBank
BL4S100 User’s Manual 63
digOutBank
int digOutBank(char bank, char data);
FUNCTION DESCRIPTION
Sets the state (logic 0 or logic 1) of a bank of 8 digital output pins to the states contained
data parameter. This function only updates the channels that are configured to
in the be sinking digital outputs by the
PARAMETERS
bank digital output bank pins:
0 — OUT0–OUT7
data data value to be written to the specified digital output bank; the
data format and bitwise value are as follows:
LSB D0 OUT0
setDigOut() function call.
Data Bits Bank 0
D1 OUT1
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value or board not initialized.
SEE ALSO
brdInit, digOut, setDigOut
D2 OUT2
D3 OUT3
D4 OUT4
D5 OUT5
D6 OUT6
MSB D7 OUT7
Bitwise value:
0 — connects the load to GND 1 — puts the output in a high-impedance state.
BL4S100 User’s Manual 64
setPWM
int setPWM(int channel, float frequency, float duty, int invert,
int bind);
FUNCTION DESCRIPTION
Sets up a PWM output on the selected digital output channel with the specified frequency and duty cycle. The PWM output can be inverted. The PWM channel duty cycle can be bound to a PWM/PPM on another channel on the same RIO block so that they share an edge.
PARAMETERS
channel digital output channel being set up for PWM, 0–7 (OUT0–OUT7)
frequency PWM frequency in Hz (should be from 2 Hz to 50 kHz); use -1 to
preserve the existing frequency on the RIO block
duty PWM duty cycle (should be from 0 to 100%); use -1 and
bind
parameter to use bound edge to set the duty cycle
invert whether the PWM output is inverted; the PWM output normally
starts with the output high and inverted starts with the output low.
0 — noninverted 1 — inverted
bind use
BL_BIND_LEAD or BL_BIND_TRAIL ORed with another
digital output channel hosted by the same block to enable binding for the leading of the PWM output on this channel. Bindings allow PWM and PPM outputs to align their leading and trailing edges.
BL4S100 User’s Manual 65
setPWM (continued)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCES — resource needed by this function is not available.
-EFAULT — internal data fault detected.
positive number — Mode Conflict — the positive number is a bitmap that corresponds to the pins on a particular block of a RIO chip that have not been configured to support this function call. Appendix D provides the details of the pin and block associations to allow you to identify the channels that need to be reconfigured to support this function call.
SEE ALSO
brdInit, setFreq, setDuty, setSyncIn, setSyncOut, pulseEnable, pulseDisable, setPPM
BL4S100 User’s Manual 66
setPPM
int setPPM(int channel, float frequency, float offset,
float duty, char invert, int bind_offset, int bind_duty);
FUNCTION DESCRIPTION
Sets up a PPM output on the selected digital output channel with the specified frequency and duty cycle. The PPM output of the PPM can be inverted. The offset and duty of the PPM can be bound to a PWM/PPM on another channel on the same RIO block so that they share an edge.
PARAMETERS
channel digital output channel being set up for PWM, 0–7 (OUT0–OUT7)
frequency PPM frequency in Hz (should be from 2 Hz to 50 kHz); use -1 to
preserve the existing frequency on the RIO block
offset PPM offset (should be from 0 to 100%); use -1 and
bind_offset
parameter to use bound edge to set the offset
NOTE: A zero offset will produce the smallest offset possible, which is one count. If you
must have a zero offset, use
duty PPM duty cycle (should be from 0 to 100%); use -1 and
duty
NOTE: PPM will not wrap around the PPM period. If
100% duty cycle will have the same effect as
setPWM() instead of setPPM().
bind_
parameter to use bound edge to set the duty cycle
offset is set to 25%, the 75 to
offset = 25%, duty = 75%. The same
waveform as a wrapped PPM can be created using an inverted PPM
invert whether the PPM output is inverted; the PPM output normally
starts with the output low, goes high at the offset, and stays high for the remainder of the duty cycle; inverted will start with the out­put high, goes low at the offset, and stays low for the duration of the duty cycle.
0 — noninverted 1 — inverted
bind_offset use
BL_BIND_LEAD or BL_BIND_TRAIL ORed with another
digital output channel hosted by the same block to enable binding for the leading edge of the PPM output on this channel. Bindings al­low PWM and PPM outputs to align their leading and trailing edges.
bind_duty use
BL_BIND_LEAD or BL_BIND_TRAIL ORed with another
digital output channel hosted by the same block to enable binding for the trailing edge of the PPM output on this channel. Bindings allow PWM and PPM outputs to align their leading and trailing edges
BL4S100 User’s Manual 67
setPPM (continued)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCES — resource needed by this function is not available.
-EFAULT — internal data fault detected.
positive number — Mode Conflict — the positive number is a bitmap that corresponds to the pins on a particular block of a RIO chip that have not been configured to support this function call. Appendix D provides the details of the pin and block associations to allow you to identify the channels that need to be reconfigured to support this function call.
SEE ALSO
brdInit, setFreq, setOffset, setDuty, setSyncIn, setSyncOut, pulseEnable, pulseDisable, setPWM
BL4S100 User’s Manual 68
setFreq
int setFreq(int channel, float frequency);
FUNCTION DESCRIPTION
Sets the frequency of all the PWM or PPM outputs on the same block as the channel. Will preserve the duty cycle and offset percentages for all of the channels on the same block.
Repeated calls to this function by itself may cause the duty cycle and offset values to drift. If this drift is of concern, call cycle and offset to the desired value.
PARAMETERS
channel all digital output channels on the same RIO chip and block as this
channel (0–7, OUT0–OUT7) will have their frequency set. Duty cycle and offset percentages will be maintained.
frequency frequency of the PWM and PPM outputs (should be from 2 Hz to
50 kHz). Use -1 to preserve the existing frequency on the RIO block.
setOffset() and setDuty() to reset the duty
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
SEE ALSO
brdInit, setPWM, setPPM, setOffset, setDuty, setSyncIn, setSyncOut, pulseEnable, pulseDisable
BL4S100 User’s Manual 69
setDuty
int setDuty(int channel, float duty);
FUNCTION DESCRIPTION
Sets the duty cycle of the PWM or PPM output on a digital output channel. Will affect any PWM/PPM that has been bound to this channel’s PWM/PPM.
PARAMETERS
channel digital output channel that is getting its duty cycle set,
0–7 (OUT0–OUT7)
duty duty cycle of the PWM/PPM output (should be from 0 to 100%)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — channel function does not permit this operation.
SEE ALSO
brdInit, setPWM, setPPM, setOffset, setFreq, setSyncIn, setSyncOut, pulseEnable, pulseDisable
BL4S100 User’s Manual 70
setOffset
int setOffset(int channel, float offset);
FUNCTION DESCRIPTION
Sets the offset of a PPM output on a digital output channel. This function call will not affect the position of the trailing edge of the PPM output and so will change the duty cycle percentage of the PPM output. If the offset is set past the current position of the trailing edge of the PPM output (set by the duty cycle), the PPM output will start at the offset and will wrap around to the position of what was the trailing edge.
PARAMETERS
channel digital output channel that is getting its offset set,
0–7 (OUT0–OUT79)
offset PPM offset (should be from 0 to 100%)
NOTE: A zero offset will produce the smallest offset possible, which is one count. If you
must have a zero offset, use
RETURN VALUE
setPWM() instead of setOffset().
0 — success.
-EINVAL — invalid parameter value.
-EPERM — channel function does not permit this operation.
SEE ALSO
brdInit, setPWM, setPPM, setFreq, setDuty, setSyncIn, setSyncOut,
pulseEnable, pulseDisable
BL4S100 User’s Manual 71
pulseDisable
int pulseDisable(int channel, int state);
FUNCTION DESCRIPTION
Disables a PWM/PPM output and sets the output to state. The pin can be restored to the same PWM/PPM operation as before by calling
PARAMETERS
channel digital output channel that is getting its PWM/PPM disabled,
0–7 (OUT0–OUT7)
state state that the digital output will be set to (0 or 1)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — channel function does not permit this operation.
SEE ALSO
brdInit, setPWM, setPPM, pulseEnable
pulseEnable().
pulseEnable
int pulseEnable(int channel);
FUNCTION DESCRIPTION
Enables a disabled PWM/PPM output. The pin is restored to the same PWM/PPM operation it had before being disabled.
PARAMETER
channel digital output channel that is getting its PWM/PPM enabled,
0–7 (OUT0–OUT7)
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — channel function does not permit this operation.
SEE ALSO
brdInit, setPWM, setPPM, pulseDisable
BL4S100 User’s Manual 72
setSyncOut
int setSyncOut(int channel, int source, int edge);
FUNCTION DESCRIPTION
Sets the synch for the block the digital output channel is associated with.
Note that when more than one block is synchronized to the same synch signal (global or external), each block has its own independent edge-detection circuit. These circuits will synch to the edge within plus or minus one count of the block’s current clock source (main or prescale). This means synchronized blocks may have a small offset when compared to each other.
PARAMETERS
channel digital output channel that is on the block that will have its synch
set, 0–7 (OUT0–OUT7)
source source of the synch signal.
-1 to use the RIO chip's Global Synch signal or input-capable channel to use as an external synch signal
edge edge of the synch signal.
RETURN VALUE
0 — success.
-EINVAL — invalid parameter value.
-EPERM — pin type does not permit this function.
-EACCES — resource needed by this function is not available.
-EFAULT — internal data fault detected.
SEE ALSO
brdInit, setSyncIn
BL_EDGE_RISE — synchronize event on rising edge BL_EDGE_FALL — synchronize event on falling edge BL_EDGE_BOTH — synchronize events on both edges 0 — disable the synch on this block (if the source of the external
synch is given, it will be set to a digital input)
BL4S100 User’s Manual 73
getMatch
int getMatch(int channel, int source);
FUNCTION DESCRIPTION
Returns the block match register use for the given channel. May optionally be filtered to specific sources by the
PARAMETERS
channel digital output channel about which to get match information,
source source filter:
RETURN VALUE
Bit flags showing match use on success:
BL_IER_MATCH0 bit set if using Match Register 0 BL_IER_MATCH1 bit set if using Match Register 1 BL_IER_MATCH2 bit set if using Match Register 2 BL_IER_MATCH3 bit set if using Match Register 3
source parameter.
0–7 (OUT0–OUT7)
BL_TRAIL_ONLY will filter only the Trail match register BL_LEAD_ONLY will filter only the Lead match register
Note that counters will only use the Trail match register.
or
-EINVAL — invalid channel value.
SEE ALSO
brdInit, setPWM, setPPM, setCounter
BL4S100 User’s Manual 74

4.4.3 Rabbit RIO Interrupt Handlers

addISRIn
int addISRIn(int channel, int ier, void (*handler)());
FUNCTION DESCRIPTION
Adds an interrupt handler for the interrupts specified in the ier parameter for the given RIO block hosting the given configurable I/O pin. The interrupt service routine (ISR) is always disabled when created. Call routine. The ISR handler function is responsible for clearing the interrupt(s) within the hosting RIO block when called.
PARAMETERS
channel digital input channel to bind to ISR, 0–11 (IN0–IN11)
ier bit mask of interrupt(s) this handler services
enableISR() to enable the interrupt service
BL_IER_DQE — decrement/quadrature/end BL_IER_IIB — increment/inphase/begin BL_IER_ROLL_D — counter rollover on decrement BL_IER_ROLL_I — counter rollover on increment BL_IER_MATCH3 — Match 3 condition BL_IER_MATCH2 — Match 2 condition BL_IER_MATCH1 — Match 1 condition BL_IER_MATCH0 — Match 0 condition
handler pointer to the interrupt service function
RETURN VALUE
Success — returns the handler ID number (0..RSB_MAX_ISR-1).
-EINVAL— Invalid parameter given.
-ENOSPC — No more room in ISR table (increase RSB_MAX_ISR).
SEE ALSO
addISROut, tickISR, enableISR, setIER
BL4S100 User’s Manual 75
addISROut
int addISROut(int channel, int ier, void (*handler)());
FUNCTION DESCRIPTION
Adds an interrupt handler for the interrupts specified in the ier parameter for the given RIO block hosting the given digital output pin. The interrupt service routine (ISR) is al­ways disabled when created. Call given is responsible for clearing the interrupt(s) within the hosting RIO block.
PARAMETERS
channel digital output channel to bind to ISR, 0–7 (OUT0–OUT7)
ier bit mask of interrupt(s) this handler services:
BL_IER_DQE — decrement/quadrature/end BL_IER_IIB — increment/inphase/begin BL_IER_ROLL_D — counter rollover on decrement BL_IER_ROLL_I — counter rollover on increment BL_IER_MATCH3 — Match 3 condition BL_IER_MATCH2 — Match 2 condition BL_IER_MATCH1 — Match 1 condition BL_IER_MATCH0 — Match 0 condition
enableISR() to enable the ISR. The ISR handler
handler pointer to the interrupt service function
RETURN VALUE
Success — returns the handler ID number (0..RSB_MAX_ISR-1).
-EINVAL— Invalid parameter given.
-ENOSPC — No more room in ISR table (increase RSB_MAX_ISR).
SEE ALSO
addISRIn, tickISR, enableISR, setIER
BL4S100 User’s Manual 76
setIER
int setIER(int isr_handle, int ier);
FUNCTION DESCRIPTION
Sets the Interrupt Enable Register (IER) mask for an interrupt handler. Note that the in­terrupt handler must be currently disabled to set the IER value. Disabling the ISR can be done by calling
PARAMETERS
isr_handle index to the desired ISR
ier bit mask of interrupts this handler services (bit positions match
RETURN VALUE
0 — success
-EINVAL— Invalid parameter given.
-EPERM — Handler is enabled, can't change IER.
enableISR() with a zero for the enable parameter.
RIO Interrupt Enable and Status registers)
SEE ALSO
addISRIn, addISROut, enableISR, tickISR
BL4S100 User’s Manual 77
enableISR
int enableISR(int isr_handle, int enable)
FUNCTION DESCRIPTION
Enables or disables an interrupt handler.
PARAMETERS
isr_handle index to the desired ISR
enable non-zero enables the ISR,
zero disables the ISR
RETURN VALUE
0 — success.
-EINVAL— invalid parameter given.
SEE ALSO
addISRIn, addISROut, setIER, tickISR
void tickISR(void)
FUNCTION DESCRIPTION
Polls the RIO chip(s) for ISR events if interrupts are not being used. Any enabled ISR events will be passed to the appropriate ISR handler.
RETURN VALUE
None.
SEE ALSO
addISRIn, addISROut, enableISR, setIER
tickISR
BL4S100 User’s Manual 78

4.4.4 Serial Communication

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 delim-
ited 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 transmit­ting or receiving, and nonblocking functions, which must be called repeatedly until they are finished. For more information, see the Dynamic C User’s Manual and Technical Note 213, Rabbit Serial Port Software.
Use the following function calls with the BL4S100.
serMode
int serMode(int mode);
FUNCTION DESCRIPTION
This function call sets the serial interfaces used by your application program. Call this function after executing calls.
PARAMETER
mode the defined serial port configuration
RETURN VALUE
0 if valid mode selected, -EINVAL if not.
serXopen() and before using any other serial port function
Mode Serial Port D Serial Port F
0 RS-232, 3-wire RS-232, 3-wire
1 RS-232, 5-wire RTS/CTS
BL4S100 User’s Manual 79

4.4.5 A/D Converter Inputs

anaInConfig
void anaInConfig(int channel, int opmode);
FUNCTION DESCRIPTION
Configures an A/D converter input channel for a given mode of operation. This function must be called before accessing the A/D converter chip.
The channel pairs for the differential mode are listed below.
AIN0 and AIN1 AIN2 and AIN3 AIN4 and AIN5 AIN6 and AIN7
The modes of operation are as follows:
Single-ended unipolar 0–20 V Differential bipolar ±20 V 4-20 mA operation
NOTE: When a pin in a differential pair is reconfigured as a nondifferential pin, the
remaining paired pin is also reconfigured.
PARAMETERS
channel analog input channel, 0–7 (AIN0–AIN7)
opmode selects the mode of operation for the A/D converter channel pair.
The values are as follows:
SE0_MODE — single-ended unipolar (0–20 V) DIFF_MODE — differential bipolar (±20 V) mAMP_MODE — 4–20 mA operation
RETURN VALUE:
0 — success.
-EINVAL — invalid parameter.
SEE ALSO
brdInit, anaInCalib, anaIn, anaInVolts, anaInmAmps, anaInDiff
BL4S100 User’s Manual 80
anaInCalib
int anaInCalib(int channel, int opmode, int gaincode,
int value1, float volts1, int value2, float volts2);
FUNCTION DESCRIPTION
Calibrates the response of a given A/D converter channel as a linear function using the two conversion points provided. Gain and offset constants are calculated and placed into the user block in the flash memory.
NOTE: The 10 and 90% points of the maximum voltage range are recommended when
calibrating a channel.
PARAMETERS
channel analog input channel number (0 to 7) corresponding to AIN0–AIN7
channel
0 +AIN0 +AIN0 -AIN1 +AIN0
1 +AIN1 +AIN1
2 +AIN2 +AIN2 -AIN3 +AIN2
3 +AIN3 +AIN3
4 +AIN4 +AIN4 -AIN5
5+AIN5 —
6 +AIN6 +AIN6 -AIN7
7+AIN7 —
Single-Ended Differential 4–20 mA
opmode the mode of operation for the specified channel. Use one of the
following macros to set the mode for the channel being configured.
SE0_mode = single-ended unipolar (0–20 V) DIFF_MODE = differential bipolar (±20 V) mAMP_mode = 4–20 mA
BL4S100 User’s Manual 81
anaInCalib (continued)
gaincode the gain code of 0 to 7 (use the gain code macro mAMP_GAINCODE
for 4–20 mA operation)
Voltage Range
Gain Code Macro
0 GAIN_X1 0–20 V ±20 V
1 GAIN_X2 0–10 V ±10 V
2 GAIN_X4 0–5 V ±5 V
3 GAIN_X5 0–4 V ±4 V
4 GAIN_X8 0–2.5 V ±2.5 V
5 GAIN_X10 0–2 V ±2 V
6 GAIN_X16 0–1.25 V ±1.25 V
7 GAIN_X20 0–1 V ±1 V
value1 the first A/D converter value
volts1 the voltage corresponding to the first A/D converter value
Single-Ended
Unipolar
Differential
Bipolar
value2 the second A/D converter value
volts2 the voltage corresponding to the second A/D converter value
RETURN VALUE
0 — success.
-EINVAL — invalid parameter.
-ERR_ANA_CALIB — error writing calibration constants.
SEE ALSO
brdInit, anaInConfig, anaIn, anaInmAmps, anaInDiff, anaInVolts
BL4S100 User’s Manual 82
anaIn
int anaIn(int channel, int gaincode);
FUNCTION DESCRIPTION
Reads the state of an A/D converter input channel.
PARAMETERS
channel analog input channel number (0 to 7) corresponding to AIN0–AIN7
channel
0 +AIN0 +AIN0 -AIN1 +AIN0
1 +AIN1 +AIN1
2 +AIN2 +AIN2 -AIN3 +AIN2
3 +AIN3 +AIN3
4 +AIN4 +AIN4 -AIN5
5+AIN5 —
6 +AIN6 +AIN6 -AIN7
7+AIN7 —
Single-Ended Differential 4–20 mA
gaincode the gain code of 0 to 7 (use a gain code of 4 for 4–20 mA operation)
Value Range
Gain Code Macro
0 GAIN_X1 0–20 V ± 20 V 0–20 V
1 GAIN_X2 0–10 V ± 10 V 0–10 V
2 GAIN_X4 0–5 V ± 5 V 0–5 V
3 GAIN_X5 0–4 V ± 4 V 0–4 V
4 GAIN_X8 0–2.5 V ± 2.5 V 0–2.5 V
5 GAIN_X10 0–2 V ± 2 V 0–2 V
6 GAIN_X16 0–1.25 V ± 1.25 V 0–1.25 V
7 GAIN_X20 0–1 V ± 1 V 0–1 V
Single-Ended
Unipolar
Differential
Bipolar
Volta g e
Range
BL4S100 User’s Manual 83
anaIn (continued)
RETURN VALUE
A value corresponding to the voltage on the analog input channel:
0–2047 for 11-bit A/D conversions, or a value of
A/D converter operation errors (will not create run-time error):
BL_TIMEOUT BL_OVERFLOW BL_WRONG_MODE
System errors (can create run-time error unless disabled):
-ERR_ANA_CALIB — fault detected in reading calibration factor
-ERR_ANA_INVAL — invalid parameter value.
SEE ALSO
brdInit, anaInConfig, anaInCalib, anaInmAmps, anaInDiff, anaInVolts
BL_ERRCODESTART or less to indicate an error condition:
BL4S100 User’s Manual 84
anaInVolts
float anaInVolts(int channel, int gaincode);
FUNCTION DESCRIPTION
Reads the state of a single-ended A/D converter input channel and uses the previously set calibration constants to convert it to volts. The voltage ranges given in the table below are nominal ranges that will be returned. However, values outside these ranges can often be seen before the return of a
If the gain code for a given channel has changed from the previous cycle, the user block will be read to get the calibration constants for the new gain value.
PARAMETERS
channel analog input channel number (0 to 7) corresponding to AIN0–AIN7
gaincode the gain code of 0 to 7; the table below applies for single-ended
modes only
BL_OVERFLOW error.
Value Range
Gain Code Macro
0 GAIN_X1 0–20 V ± 20 V 0–20 V
1 GAIN_X2 0–10 V ± 10 V 0–10 V
2 GAIN_X4 0–5 V ± 5 V 0–5 V
3 GAIN_X5 0–4 V ± 4 V 0–4 V
4 GAIN_X8 0–2.5 V ± 2.5 V 0–2.5 V
5 GAIN_X10 0–2 V ± 2 V 0–2 V
6 GAIN_X16 0–1.25 V ± 1.25 V 0–1.25 V
7 GAIN_X20 0–1 V ± 1 V 0–1 V
Single-Ended
Unipolar
Differential
Bipolar
Volta g e
Range
BL4S100 User’s Manual 85
anaInVolts (continued)
RETURN VALUE
A voltage on the analog input channel, or a value of BL_ERRCODESTART or less to in­dicate an error condition:
A/D converter operation errors (will not create run-time error):
BL_NOT_CAL — A/D converter is not calibrated for this channel/gain. BL_OVERFLOW — A/D converter overflow. BL_TIMEOUT — A/D converter timeout. BL_WRONG_MODE — A/D converter is in wrong mode (run anaInConfig()).
System errors (can create run-time error unless disabled):
-ERR_ANA_CALIB — fault detected in reading calibration facto.r
-ERR_ANA_INVAL — invalid parameter value.
SEE ALSO
brdInit, anaInConfig, anaIn, anaInmAmps, anaInDiff, anaInCalib
BL4S100 User’s Manual 86
anaInDiff
float anaInDiff(int channel, int gaincode);
FUNCTION DESCRIPTION
Reads the state of a differential A/D converter input channel and uses the previously set calibration constants to convert it to volts. Voltage ranges given in the table below are the nominal ranges that will be returned. However, values outside these ranges can of­ten be seen before the return of a
If the gain code for a given channel has changed from the previous cycle, the user block will be read to get the calibration constants for the new gain value.
PARAMETERS
channel the analog input channel number (0, 2, 4, 6) as shown below
BL_OVERFLOW error.
channel
0 +AIN0 -AIN1
2 +AIN2 -AIN3
4 +AIN4 -AIN5
6 +AIN6 -AIN7
Differential Inputs
gaincode the gain code of 0 to 7
Gain Code Macro Actual Gain
0 GAIN_X1 ×1 ± 20 V 0–20 V
1 GAIN_X2 ×2 ± 10 V 0–10 V
2 GAIN_X4 ×4 ± 5 V 0–5 V
3 GAIN_X5 ×5 ± 4 V 0–4 V
4 GAIN_X8 ×8 ± 2.5 V 0–2.5 V
5 GAIN_X10 ×10 ± 2 V 0–2 V
6 GAIN_X16 ×16 ± 1.25 V 0–1.25 V
7 GAIN_X20 ×20 ± 1 V 0–1 V
Differential
Voltage Range
Voltage Range
Actual
BL4S100 User’s Manual 87
anaInDiff (continued)
RETURN VALUE
A voltage on the analog input channel, or a value of BL_ERRCODESTART or less to indicate an error condition:
A/D converter operation errors (will not create run-time error):
BL_NOT_CAL — A/D converter is not calibrated for this channel/gain. BL_OVERFLOW — A/D converter overflow. BL_TIMEOUT — A/D converter timeout. BL_WRONG_MODE — A/D converter is in wrong mode (run anaInConfig()).
System errors (can create run-time error unless disabled):
-ERR_ANA_CALIB — fault detected in reading calibration factor.
-ERR_ANA_INVAL — invalid parameter value.
SEE ALSO
brdInit, anaInConfig, anaIn, anaInmAmps, anaInVolts, anaInCalib
BL4S100 User’s Manual 88
anaInmAmps
float anaInmAmps(int channel);
FUNCTION DESCRIPTION
Reads the state of a single-ended A/D converter input channel and uses the previously set calibration constants to convert it to a floating-point current value in milli amps. The nominal range is 0 mA to 20 mA, although it is possible to receive values outside this range before a
PARAMETER
channel A/D converter input channel (0–3 corresponding to AIN0–AIN3)
RETURN VALUE
A current value corresponding to the current on the analog input channel, or a value of
BL_ERRCODESTART or less to indicate an error condition:
A/D converter operation errors (will not create run-time error):
BL_NOT_CAL — A/D converter is not calibrated for this channel/gain. BL_OVERFLOW — A/D converter overflow. BL_TIMEOUT — A/D converter timeou.t BL_WRONG_MODE — A/D converter is in wrong mode (run anaInConfig()).
BL_OVERFLOW error is returned.
System errors (can create run-time error unless disabled):
-ERR_ANA_CALIB — fault detected in reading calibration factor.
-ERR_ANA_INVAL — invalid parameter value.
SEE ALSO
brdInit, anaInConfig, anaIn, anaInDiff, anaInVolts, anaInCalib
BL4S100 User’s Manual 89
anaInRdCalib
anaInRdCalib(int channel, int opmode, int gaincode,
calib_t *pcal_data)
FUNCTION DESCRIPTION
Reads the calibration constants, gain and offset, from the user block on the flask.
PARAMETER
channel analog input channel number (0 to 7) corresponding to AIN0–AIN7
channel
0 +AIN0 +AIN0 -AIN1 +AIN0
1 +AIN1 +AIN1
2 +AIN2 +AIN2 -AIN3 +AIN2
3 +AIN3 +AIN3
4 +AIN4 +AIN4 -AIN5
5+AIN5 —
6 +AIN6 +AIN6 -AIN7
7+AIN7 —
Single-Ended Differential 4–20 mA
opmode select the mode of operation for the A/D converter channel calibra-
tion data being read. Use one of the following macros.
SE0_mode = single-ended unipolar (0–20 V) DIFF_MODE = differential bipolar (±20 V) mAMP_mode = 4–20 mA
gaincode the gain code of 0 to 7 (use the gain code macro mAMP_GAINCODE
for 4–20 mA operation)
Voltage Range
Gain Code Macro
0 GAIN_X1 0–20 V ±20 V
1 GAIN_X2 0–10 V ±10 V
2 GAIN_X4 0–5 V ±5 V
3 GAIN_X5 0–4 V ±4 V
4 GAIN_X8 0–2.5 V ±2.5 V
5 GAIN_X10 0–2 V ±2 V
6 GAIN_X16 0–1.25 V ±1.25 V
7 GAIN_X20 0–1 V ±1 V
Single-Ended
Unipolar
Differential
Bipolar
pcal_data calibration structure pointer to gain and offset values
BL4S100 User’s Manual 90
RETURN VALUE
0 — success.
-1 — invalid address or range.
-2 — no valid user block found (block version 3 or later)
-3 — flash read error
-EINVAL — invalid parameter
SEE ALSO
anaInCalib, _anaInAddr
anaInRdCalib (continued)
BL4S100 User’s Manual 91
int anaInDriver(char cmd);
FUNCTION DESCRIPTION
Low-level driver to read the ADS7870 A/D converter chip. Reads the voltage of an an­alog input channel by serial clocking an 8-bit command to the ADS7870 by its Direct Mode method.
anaInConfig() uses the Register Mode method. This function call
assumes that Mode2 (least significant byte first) and the A/D converter oscillator have been enabled.
See anaInConfig() for additional setup information.
After the last data bit is transferred, the conversion begins immediately. An exception error will occur if Direct Mode bit D7 is not set.
PARAMETER
cmd The cmd parameter contains a gain code and channel code, and the
MSB is set high for direct-mode access. The format is as follows:
anaInDriver
D7 D6–D4 D3–D0
1 gain_code channel_code
Use the following calculation and tables to determine
cmd = 0x80 | (gain_code<<4) + channel_code
gain_code Multiplier
01
12
24
35
48
510
616
720
cmd:
BL4S100 User’s Manual 92
anaInDriver (continued)
channel_code
0 +AIN0 -AIN1 8 +AIN0 +AIN0
1 +AIN2 -AIN3 9 +AIN1 +AIN1
2 +AIN4 -AIN5 10 +AIN2 +AIN2
3 +AIN6 -AIN7 11 +AIN3 +AIN3
4 Reserved 12 +AIN4 Reserved
5 Reserved 13 +AIN5 Reserved
6 Reserved 14 +AIN6 Reserved
7 Reserved 15 +AIN7 Reserved
RETURN VALUE
A value corresponding to the voltage on the analog input channel, which will be either in the range [-2048,2047], or an error code of
BL_TIMEOUT — conversion incomplete, busy bit timeout BL_OVERFLOW — overflow or out of range
System errors (can create run-time error unless disabled):
-ERR_ANA_INVAL — invalid parameter value
Differential
Input Lines
channel_code
BL_ERRCODESTART or less as follows:
Single-Ended
Input Lines
mA
Input Lines
SEE ALSO
anaInConfig, anaIn, brdInit
BL4S100 User’s Manual 93

4.4.6 SRAM Use

The BL4S100 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.
The sample code below shows how a protected variable is defined and how its value can be restored.
protected nf_device nandFlash;
int main() { ...
_sysIsSoftReset(); // restore any protected variables
The
bbram
keyword may also be used instead if there is a need to store a variable in bat­tery-backed SRAM without affecting the performance of the application program. Data integrity is not assured when a reset or power failure occurs during the update process.
Additional information on User’s Manual.
bbram
and
protected
variables is available in the Dynamic C
BL4S100 User’s Manual 94

5. USING THE ETHERNET TCP/IP FEATURES

Chapter 5 discusses using the Ethernet TCP/IP features on the BL4S100 boards.

5.1 TCP/IP Connections

Before proceeding you will need to have the following items.
If you don’t have Ethernet access, you will need at least a 10Base-T Ethernet card (available from your favorite computer supplier) installed in a PC.
Two RJ-45 straight-through CAT 5/6 Ethernet cables and a hub, or an RJ-45 crossover CAT 5/6 Ethernet cable.
The CAT 5/6 Ethernet cables and Ethernet hub are available from Rabbit in a TCP/IP tool kit. More information is available at www.digi.com.
1. Connect the AC adapter and the programming cable as shown in Chapter 2, “Getting Started.”
2. Ethernet Connections
If you do not have access to an Ethernet network, use a crossover CAT 5/6 Ethernet cable to connect the BL4S100 to a PC that at least has a 10Base-T Ethernet card.
If you have Ethernet access, use a straight-through CAT 5/6 Ethernet cable to establish an Ethernet connection to the BL4S100 from an Ethernet hub. These connections are shown in Figure 17.
BL4S100 User’s Manual 95
Figure 17. Ethernet Connections
BL4S100
User’s PC
Crossover CAT 5/6 Ethernet cable
Direct Connection
(network of 2 computers)
BL4S100
Hub
CAT 5/6 Ethernet
To additional network elements
Direct Connection Using a Hub
Board
Board
cables
The PC running Dynamic C through the serial programming port on the BL4S100 does not need to be the PC with the Ethernet card.
3. Apply Power
Plug in the AC adapter. The BL4S100 is now ready to be used.
NOTE: A hardware RESET is accomplished by unplugging the AC adapter, then plug-
ging it back in,
or by pressing the RESET button located next to the Ethernet jack.
When working with the BL4S100, the green LNK light is on when a program is running and the board is properly connected either to an Ethernet hub or to an active Ethernet card. The orange ACT light flashes each time a packet is received.
BL4S100 User’s Manual 96

5.2 TCP/IP Sample Programs

We have provided a number of sample programs demonstrating various uses of TCP/IP for networking embedded systems. These programs require that you connect your PC and the BL4S100 together on the same network. This network can be a local private network (pre­ferred for initial experimentation and debugging), or a connection via the Internet.

5.2.1 How to Set IP Addresses in the Sample Programs

With the introduction of Dynamic C 7.30 we have taken steps to make it easier to run many of our sample programs. You will see a TCPCONFIG macro. This macro tells Dynamic C to select your configuration from a list of default configurations. You will have three choices when you encounter a sample program with the TCPCONFIG macro.
1. You can replace the TCPCONFIG macro with individual MY_IP_ADDRESS, MY_NETMASK,
MY_GATEWAY, and MY_NAMESERVER macros in each program.
2. You can leave TCPCONFIG at the usual default of 1, which will set the IP configurations to
10.10.6.100, the netmask to 255.255.255.0, and the nameserver and gateway to 10.10.6.1. If you
would like to change the default values, for example, to use an IP address of 10.1.1.2 for the BL4S100 board, and 10.1.1.1 for your PC, you can edit the values in the section that directly follows the “General Configuration” comment in the TCP_CONFIG.LIB library. You will find this library in the LIB\TCPIP directory.
3. You can create a CUSTOM_CONFIG.LIB library and use a TCPCONFIG value greater than 100. Instructions for doing this are at the beginning of the TCP_CONFIG.LIB library in the
LIB\TCPIP directory.
There are some other “standard” configurations for TCPCONFIG that let you select different features such as DHCP. Their values are documented at the top of the TCP_CONFIG.LIB library in the LIB\TCPIP directory. More information is available in the Dynamic C TCP/IP User’s Manual.
BL4S100 User’s Manual 97

5.2.2 How to Set Up your Computer for Direct Connect

BL4S100
User’s PC
crossover CAT 5/6 Ethernet
cable
IP 10.10.6.101 Netmask
255.255.255.0
Direct Connection PC to BL4S100
Board
Follow these instructions to set up your PC or notebook. Check with your administrator if you are unable to change the settings as described here since you may need administrator privileges. The instructions are specifically for Windows 2000, but the interface is similar for other versions of Windows.
TIP: If you are using a PC that is already on a network, you will disconnect the PC from
that network to run these sample programs. Write down the existing settings before changing them to facilitate restoring them when you are finished with the sample pro­grams and reconnect your PC to the network.
1. Go to the control panel (Start > Settings > Control Panel), and then double-click the Network icon.
2. Select the network interface card used for the Ethernet interface you intend to use (e.g.,
TCP/IP Xircom Credit Card Network Adapter) and click on the “Properties” button.
Depending on which version of Windows your PC is running, you may have to select the “Local Area Connection” first, and then click on the “Properties” button to bring up the Ethernet interface dialog. Then “Configure” your interface card for a “10Base-T Half-Duplex” or an “Auto-Negotiation” connection on the “Advanced” tab.
NOTE: Your network interface card will likely have a different name.
3. Now select the IP Address tab, and check Specify an IP Address, or select TCP/IP and click on “Properties” to assign an IP address to your computer (this will disable “obtain an IP address automatically”):
IP Address : 10.10.6.101
Netmask : 255.255.255.0
Default gateway : 10.10.6.1
4. Click <OK> or <Close> to exit the various dialog boxes.
BL4S100 User’s Manual 98
Loading...