Page 2
Rabbit and Dynamic C are registered trademarks of Digi International Inc. Rabbit 3000 and RabbitCore are trademarks of Digi International Inc. The latest revision of this manual is available on the Rabbit Web site, www.rabbit.com, for free, unregistered download. Rabbit Semiconductor Inc.
ABLE OF ONTENTS Chapter 1. Introduction 1.1 RCM3209/RCM3229 Features ......................2 1.2 Comparing the RCM3209/RCM3229 and RCM3200/RCM3220 ............3 1.3 Advantages of the RCM3209/RCM3229 .....................4 1.4 Development and Evaluation Tools......................5 1.4.1 RCM3209/RCM3229 Development Kit ..................5 1.4.2 Software ............................6 1.4.3 Connectivity Interface Kits ......................6 1.4.4 Online Documentation ........................6 Chapter 2.
Page 4
B.4.1 Adding Other Components ......................74 B.4.2 Measuring Current Draw ......................74 B.4.3 Other Prototyping Board Modules and Options ................ 75 B.5 Use of Rabbit 3000 Parallel Ports...................... 76 Appendix C. LCD/Keypad Module C.1 Specifications............................. 79 C.2 Contrast Adjustments for All Boards ....................81 C.3 Keypad Labeling..........................
Page 5
C.6 Bezel-Mount Installation........................85 C.6.1 Connect the LCD/Keypad Module to Your Prototyping Board..........87 C.7 Sample Programs ..........................88 C.8 LCD/Keypad Module Function Calls ....................89 C.8.1 LCD/Keypad Module Initialization....................89 C.8.2 LEDs............................90 C.8.3 LCD Display..........................91 C.8.4 Keypad............................127 Appendix D. Power Supply D.1 Power Supplies..........................135 D.1.1 Battery Backup.........................135 D.1.2 Battery-Backup Circuit ......................136 D.1.3 Reset Generator ........................137...
(main oscillator and real-time clock), reset circuitry, and the circuitry necessary for management of battery backup of the Rabbit 3000’s internal real-time clock and the static RAM. Two 34-pin headers bring out the Rabbit 3000 I/O bus lines, parallel ports, and serial ports.
• Small size: 1.85" x 2.73" x 0.86" (47 mm x 69 mm x 22 mm) • Microprocessor: Rabbit 3000 running at 44.2 MHz • (RCM3209 only) 10/100Base-T auto MDI/MDIX Ethernet port chooses Ethernet inter- face automatically based on whether a crossover cable or a straight-through cable is used in a particular setup •...
Table 1 summarizes the main features of the RCM3209 and the RCM3229 modules. Table 1. RCM3209/RCM3229 Features Feature RCM3209 RCM3229 Microprocessor Rabbit 3000 running at 44.2 MHz SRAM 512K program (fast SRAM) + 256K data Flash Memory (program) 512K RJ-45 Ethernet Connector,...
• Generous memory size allows large programs with tens of thousands of lines of code, and substantial data storage. • Integrated Ethernet port for network connectivity, royalty-free TCP/IP software. • Pin-compatible with RCM3309/RCM3319 and RCM3900/RCM3910 to offer fixed and/or removable media mass-storage memory options. RabbitCore RCM3209/RCM3229...
Dynamic C . STAT K E Y PA D D I S P L AY B O A R D Rabbit, Dynamic C, and Digi are registered trademarks of Digi International Inc. CORE L C D 1 J B...
Rabbit sales representative or authorized distributor. 1.4.3 Connectivity Interface Kits Rabbit has available a Connector Adapter Board to allow you to use the the RCM3209/ RCM3229 with header sockets that have a 0.1" pitch. • Connector Adapter Board (Part No. 151-0114)—allows you to plug the RCM3209/ RCM3229 whose headers have a 2 mm pitch into header sockets with a 0.1"...
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 the optional Dynamic C Rabbit Embedded Security Pack, install it after installing Dynamic C.
There are three steps to connecting the Prototyping Board for use with Dynamic C and the sample programs: 1. Attach the RCM3200 series RabbitCore module to the Prototyping Board. 2. Connect the programming cable between the RCM3200 series RabbitCore module and the workstation PC. 3. Connect the power supply to the Prototyping Board. RabbitCore RCM3209/RCM3229...
2.2.1 Step 1 — Attach Module to Prototyping Board Turn the RCM3209 module so that the Ethernet connector end of the module extends off the Prototyping Board, as shown in Figure 2 below. Align the pins from headers J61 and J62 on the bottom side of the module into header sockets RCM2JA and RCM2JB on the Prototyping Board.
Connect the other end of the programming cable to an available USB port on your PC or workstation. Your PC should recognize the new USB hardware, and the LEDs in the shrink-wrapped area of the USB programming cable will flash. RabbitCore RCM3209/RCM3229...
2.2.3 Step 3 — Connect Power When all other connections have been made, you can connect power to the Prototyping Board. First, prepare the AC adapter for the country where it will be used by selecting the plug. The RCM3209/RCM3229 Development Kit presently includes Canada/Japan/U.S., Aus- tralia/N.Z., U.K., and European style plugs.
• If you get an error message when you plugged the programming cable into a USB port, you will have to install USB drivers. Drivers for Windows XP are available in the Dynamic C folder — Drivers\Rabbit USB Programming Cable\WinXP_2K double-click to install the USB drivers. Drivers for other operating sys- DPInst.exe tems are available online at www.ftdichip.com/Drivers/VCP.htm.
Dynamic C TCP/IP User’s Manual, also in the online documentation set. 2.5.1 Technical Support NOTE: If you purchased your RCM3209/RCM3229 through a distributor or through a 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.
AMPLE ROGRAMS To develop and debug programs for the RCM3209/RCM3229 (and for all other Rabbit hardware), you must install and use Dynamic C. 3.1 Introduction To help familiarize you with the RCM3209/RCM3229 modules, Dynamic C includes sev- eral sample programs. Loading, executing and studying these programs will give you a solid hands-on overview of the RCM3209/RCM3229’s capabilities, as well as a quick...
The test packets and response packets have different codes. Once you have loaded and executed these five programs and have an understanding of how Dynamic C and the RCM3209/RCM3229 modules interact, you can move on and try the other sample programs, or begin building your own. RabbitCore RCM3209/RCM3229...
3.2.1 Serial Communication The following sample programs can be found in the folder. SAMPLES\RCM3200\SERIAL —This program demonstrates hardware flow control by configuring • FLOWCONTROL.C Serial Port C (PC3/PC2) for CTS/RTS with serial data coming from TxB at 115,200 bps. One character at a time is received and is displayed in the window.
RS-485 master/slave com- 681 W bias munication. To run these sample pro- termi- 220 W grams, you will need a second Rabbit- nation based system with RS-485, and you bias 681 W will also have to add an RS-485 trans- ceiver such as the SP483E and bias 485...
Chapter 4 describes the hardware components and principal hardware subsystems of the RCM3209/RCM3229. Appendix A, “RCM3209/ RCM3229 Specifications,” provides complete physical and electrical specifications. Figure 5 shows these Rabbit-based subsystems designed into the RCM3209/RCM3229. 22.1 MHz 32 kHz Ethernet Customer-specific...
LEDs on the RCM3209 LINK module. These pins may be “configured” to carry PD0 and PD1, an option that is reserved for future use. See Appendix A.5 for more information about the locations of these headers. RabbitCore RCM3209/RCM3229...
Page 27
Figure 7. Use of Rabbit 3000 Ports The ports on the Rabbit 3000 microprocessor used in the RCM3209/RCM3229 are config- urable, and so the factory defaults can be reconfigured. Table 2 lists the Rabbit 3000 factory defaults and the alternate configurations.
Page 28
ARXB Input/Output TPOUT– * Ethernet transmit port Input/Output TPOUT+ * Input/Output TPIN– * Ethernet receive port Input/Output TPIN+ * LNK_OUT Output Max. current draw 1 mA (see Note 1) ACT_OUT Output Pins 29–32 are reserved for future use. RabbitCore RCM3209/RCM3229...
Page 29
Table 2. RCM3209/RCM3229 Pinout Configurations (continued) Pin Name Default Use Alternate Use Notes Reset output from Reset /RES Reset output Reset input Generator Input/Output CLKB External Address 0 Input/Output /SWR Slave port write External Address 1 Input/Output /SRD Slave port read External Address 2 Input/Output Slave port Address 0...
Page 30
1.2 V to 1.5 V, the contents of the battery-backed SRAM may be lost. If VRAM drops below 1.0 V, the 32 kHz oscillator could stop running. Pay careful attention to this volt- age if you draw any current from this pin. RabbitCore RCM3209/RCM3229...
5 V tolerant. When a 5 V signal is applied to 5 V tolerant pins, they present a high impedance even if the Rabbit power is off. The 5 V tolerant feature allows 5 V devices that have a suitable switching threshold to be connected directly to the RCM3209/RCM3229.
Either of the two communicating devices can sup- ply the clock. When the Rabbit 3000 provides the clock, the baud rate can be up to 80% of the system clock frequency divided by 128, or 276,250 bps for a 44.2 MHz clock speed.
4.2.2 Ethernet Port (RCM3209 only) Figure 8 shows the pinout for the RJ-45 Ethernet port (J4). Note that some Ethernet connectors are numbered in reverse to the order used here. ETHERNET 1. E_Tx+ 2. E_Tx 3. E_Rx+ 6. E_Rx Figure 8. RJ-45 Ethernet Port Pinout Three LEDs are placed next to the RJ-45 Ethernet jack, one to indicate an Ethernet link or Ethernet RJ-45 Ethernet Jack...
2. It can be driven low during an interrupt acknowledge cycle. 3. It can also serve as a general-purpose CMOS output. The /RESET_IN pin is an external input that is used to reset the Rabbit 3000 and the RCM3209/RCM3229 onboard peripheral circuits. The serial programming port can be used to force a hard reset on the RCM3209/RCM3229 by asserting the /RESET_IN signal.
The programming cable is used to connect the serial programming port of the RCM3209/ RCM3229 to a PC serial COM port. The programming cable converts the voltage levels used by the PC USB port to the CMOS voltage levels used by the Rabbit 3000. When the...
RCM3209/RCM3229 is in the Program Mode. Refer to the for more information on the pro- Rabbit 3000 Microprocessor User’s Manual gramming port. 4.3.2 Standalone Operation of the RCM3209/RCM3229 The RCM3209/RCM3229 must be programmed via the Prototyping Board or via a similar arrangement on a customer-supplied board.
4.4.2 Spectrum Spreader The Rabbit 3000 features a spectrum spreader, which helps 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 RCM3209/RCM3229 boards also have 512K of flash EPROM at U8. NOTE: Rabbit recommends that any customer applications should not be constrained by the sector size of the flash EPROM since it may be necessary to change the sector size in the future.
Dynamic C is an integrated development system for writing embedded software. It runs on an IBM-compatible PC and is designed for use with Rabbit with controllers based on the Rabbit microprocessor Chapter 5 provides the libraries and function calls related to the RCM3209/RCM3229.
Page 40
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”...
Port E bits as inputs, or use WrPortI(PEDDR, &PEDDRShadow, 0xFF); to set all the Port E bits as outputs. When using the external I/O bus on the Rabbit 3000 chip, add the line #define PORTA_AUX_IO // required to enable external I/O bus to the beginning of any programs using the external I/O bus.
For more information, see the Dynamic C Function Reference Manual and Rabbit’s Technical Note 213, Rabbit 2000 Serial Port Software in the online documentation set.
The source code is in the Dynamic C library if you SAMPLES\RCM3200\RCM3200.LIB need to modify it for your own board design. Other generic functions applicable to all devices based on Rabbit microprocessors are described in the Dynamic C Function Reference Manual. 5.2.6.1 Board Initialization brdInit void brdInit (void);...
Development Kit, 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.
(available from your favorite computer supplier) installed in a PC. • One Cat. 5 straight through or crossover Ethernet cable. Ethernet cables and a 10Base-T Ethernet hub are available in a TCP/IP tool kit. More information is available at www.rabbit.com. um required, NOTE: Although 10Base-T is the minim 10/100Base-T or 100Base-T is recommended to allow you to work with the full speed capabilities of the RCM3209.
Page 46
The PC running Dynamic C through the serial port on the RCM3209 does not need to be the PC with the Ethernet card. 3. Apply Power Plug in the AC adapter. The RCM3209 module is now ready to be used. RabbitCore RCM3209/RCM3229...
6.2 TCP/IP Primer on IP Addresses Obtaining IP addresses to interact over an existing, operating, network can involve a num- ber of complications, and must usually be done with cooperation from your ISP and/or network systems administrator. For this reason, it is suggested that the user begin instead by using a direct connection between a PC and the RCM3209 board.
Page 48
RCM3209 board. You will also need the IP address of the nameserver, the name or IP address of your mail server, and your domain name for some of the sample programs. RabbitCore RCM3209/RCM3229...
6.2.1 IP Addresses Explained IP (Internet Protocol) addresses are expressed as 4 decimal numbers separated by periods, for example: 216.103.126.155 10.1.1.6 Each decimal number must be between 0 and 255. The total IP address is a 32-bit number consisting of the 4 bytes expressed as shown above. A local network uses a group of adja- cent IP addresses.
0090C2 followed by the code that appears on the label affixed to the RCM3209 module. For example, a MAC address might be 0090C2C002C0. TIP: You can always verify the MAC address on your board by running the sample pro- gram DISPLAY_MAC.C from the SAMPLES\TCPIP folder. RabbitCore RCM3209/RCM3229...
6.2.3 Dynamically Assigned Internet Addresses In many instances, devices on a network do not have fixed IP addresses. This is the case when, for example, you are assigned an IP address dynamically by your dial-up Internet service provider (ISP) or when you have a device that provides your IP addresses using the Dynamic Host Configuration Protocol (DHCP).
You can either place the RCM3209 directly on the Internet with a real Internet address or place it behind the firewall. If you place the RCM3209 behind the fire- wall, you need to configure the firewall to translate and forward packets from the Internet to the RCM3209. RabbitCore RCM3209/RCM3229...
6.4 Running 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 you to connect your PC and the RCM3209 board together on the same network. This network can be a local private net- work (preferred for initial experimentation and debugging), or a connection via the Internet.
There are some other “standard” configurations for that let you select differ- TCPCONFIG ent features such as DHCP. Their values are documented at the top of the library. More information is available in the Dynamic C TCP/IP TCP_CONFIG.LIB User’s Manual. RabbitCore RCM3209/RCM3229...
6.4.2 How to Set Up your Computer for Direct Connect 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.
ECHO_CLIENT.C —This program demonstrates Ethernet communication between two • ENET_AD.C single-board computers. The program sends an A/D voltage value to the second single- board computer via Ethernet for display. to program the other single-board computer. ENET_MENU.C RabbitCore RCM3209/RCM3229...
LEDs DS1 and DS2 on the Prototyping Board when a ping is sent and received. 6.7 Where Do I Go From Here? NOTE: If you purchased your RCM3209 through a distributor or through a Rabbit partner, contact the distributor or partner first for technical support.
A. RCM3209/RCM3229 PPENDIX PECIFICATIONS Appendix A provides the specifications for the RCM3209/ RCM3229, and describes the conformal coating. User’s Manual...
JP14 RCM39XX 0.829 0.17 1.021 (21.1) (4.3) (25.9) 2.725 (69.2) 1.850 (47.0) Figure A-1. RCM3209/RCM3229 Dimensions NOTE: All measurements are in inches followed by millimeters enclosed in parentheses. All dimensions have a manufacturing tolerance of ±0.01" (0.25 mm). RabbitCore RCM3209/RCM3229...
Page 61
It is recommended that you allow for an “exclusion zone” of 0.04" (1 mm) around the RCM3209/RCM3229 in all directions (except above the RJ-45 plug) when the RCM3209/ RCM3229 is incorporated into an assembly that includes other printed circuit boards. This “exclusion zone”...
Page 62
A slave port allows the RCM3209/RCM3229 to be used as an Slave Interface intelligent peripheral device slaved to a master processor, which may either be another Rabbit 3000 or any other type of processor Real-Time Clock Ten 8-bit timers (6 cascadable), one 10-bit timer with 2 match...
Table A-1. RabbitCore RCM3209/RCM3229 Specifications (continued) Feature RCM3209 RCM3229 3.15 V to 3.45 V DC 3.15 V to 3.45 V DC Power 325 mA @ 3.3 V 190 mA @ 3.3 V Operating Temperature –40°C to +85°C Humidity 5% to 95%, noncondensing Connectors Two 2 ×...
Page 64
RCM3209/RCM3229 Footprint 1.375 0.475 (34.9) (12.1) Figure A-3. User Board Footprint for RCM3209/RCM3229 RabbitCore RCM3209/RCM3229...
You must pay careful attention to bus loading when designing an interface to the RCM3209/RCM3229. This section provides bus loading information for external devices. Table A-2 lists the capacitance for the various RCM3209/RCM3229 I/O ports. Table A-2. Capacitance of Rabbit 3000 I/O Ports Input Output...
Page 66
Figure A-4 shows a typical timing diagram for the Rabbit 3000 microprocessor external I/ O read and write cycles. A[15:0] valid T adr /CSx T CSx T CSx /IOCSx T IOCSx T IOCSx /IORD T IORD T IORD /BUFEN T BUFEN...
Page 67
The maxi- mum shortening for a pair of clocks combined is shown in the table. Technical Note TN227, Interfacing External I/O with Rabbit 2000/3000 Designs, con- tains suggestions for interfacing I/O devices to the Rabbit 3000 microprocessors.
A.3 Rabbit 3000 DC Characteristics Table A-5 outlines the DC characteristics for the Rabbit at 3.3 V over the recommended operating temperature range from T = –55°C to +125°C, V = 3.0 V to 3.6 V. Table A-5. 3.3 Volt DC Characteristics...
Sourcing/Sinking Limits Pin Name (mA) Sourcing Sinking All data, address, and I/O lines with clock doubler enabled Under certain conditions, you can exceed the limits outlined in Table A-7. See the Rabbit 3000 Microprocessor User’s Manual for additional information. User’s Manual...
A new conformal coating should then be applied to offer continuing protection against the effects of moisture and contaminants. NOTE: For more information on conformal coatings, refer to Rabbit’s Technical Note TN303, Conformal Coatings, in the online documentation.
B. P PPENDIX ROTOTYPING OARD Appendix B describes the features and accessories of the Proto- typing Board, and explains the use of the Prototyping Board to demonstrate the RCM3209/RCM3229 and to build prototypes of your own circuits. User’s Manual...
B.1 Introduction The Prototyping Board included in the Development Kit makes it easy to connect an RCM3209/RCM3229 module to a power supply and a PC workstation for development. It also provides some basic I/O peripherals (switches and LEDs), as well as a prototyping area for more advanced hardware development.
B.1.1 Prototyping Board Features —A power-supply jack and a 3-pin header are provided for con- Power Connection • nection to the power supply. Note that the 3-pin header is symmetrical, with both outer pins connected to ground and the center pin connected to the raw V+ input. The cable of the AC adapter provided with Development Kit ends in a 3-pin plug that connects to the 3-pin header (J9)—the center pin of J9 is always connected to the positive terminal, and either edge pin is negative.
Page 76
+5 V or the +3.3 V supplies, respectively. —A motor/encoder header is provided at header J6 for future use. Motor Encoder • —Rabbit’s LCD/keypad module may be plugged in directly to LCD/Keypad Module • headers J7, J8, and J10.
RCM3209/RCM3229. Two LEDs (DS1 and DS2) are connected to PG6 and PG7, and two switches (S2 and S3) are connected to PG1 and PG0 to demonstrate the interface to the Rabbit 3000 microprocessor. Reset switch S1 is the hardware reset for the RCM3209/RCM3229.
B.4.1 Adding Other Components There are pads that can be used for surface-mount prototyping involving SOIC devices. There is provision for seven 16-pin devices (six on one side, one on the other side). There are 10 sets of pads that can be used for 3- to 6-pin SOT23 packages. There are also pads that can be used for SMT resistors and capacitors in an 0805 SMT package.
The RCM3209/RCM3229 has a 2-channel quadrature decoder and a 10-bit free-running PWM counter with four pulse-width registers. These features allow the RCM3209/ RCM3229 to be used in a motor control application, although Rabbit does not offer the drivers or a compatible stepper motor control board at this time.
B.5 Use of Rabbit 3000 Parallel Ports Table B-2 lists the Rabbit 3000 parallel ports and their use for the RCM30/31/32XX Prototyping Board. Table B-2. RCM30/31/32XX Prototyping Board Use of Rabbit 3000 Parallel Ports Port Initial State High when not driven PA0–PA7...
Page 83
Table B-2. RCM30/31/32XX Prototyping Board Use of Rabbit 3000 Parallel Ports (continued) Port Initial State Output Not used High Output External I/O strobe High (disabled) Output Not used High (disabled) Pulled up on PF0–PF7 Input Reserved for future use Prototyping Board...
LCD/keypad module on the Prototyping Board. Either version of the LCD/keypad module can be installed at a remote location up to 60 cm (24") away. Contact your Rabbit sales representative or your authorized distributor for further assistance in purchasing an LCD/ keypad module.
Page 86
NOTE: All measurements are in inches followed by millimeters enclosed in parentheses. All dimen- sions have a manufacturing toler- ance of ±0.01" (0.25 mm). 0.200 0.500 (5.1) (12.7) 1.450 (36.8) 2.200 (55.9) Figure C-2. User Board Footprint for LCD/Keypad Module RabbitCore RCM3209/RCM3229...
C.2 Contrast Adjustments for All Boards Starting in 2005, LCD/keypad modules were factory-configured to optimize their contrast based on the voltage of the system they would be used in. Be sure to select a KDU5V LCD/keypad module for use with the RCM3000/3100/3200 Prototyping Board — these modules operate at 5 V.
Figure C-4. The keypad legend is located under the blue key- pad matte, and is accessible from the left only as shown in Figure C-5. Keypad label is located under the blue keypad matte. Figure C-5. Removing and Inserting Keypad Label RabbitCore RCM3209/RCM3229...
C.4 Header Pinouts Figure C-6 shows the pinouts for the LCD/keypad module. Figure C-6. LCD/Keypad Module Pinouts C.4.1 I/O Address Assignments The LCD and keypad on the LCD/keypad module are addressed by the /CS strobe as explained in Table C-2. Table C-2.
C.6 Bezel-Mount Installation This section describes and illustrates how to bezel-mount the LCD/keypad module. Fol- low these steps for bezel-mount installation. 1. Cut mounting holes in the mounting panel in accordance with the recommended dimen- sions in Figure C-8, then use the bezel faceplate to mount the LCD/keypad module onto the panel.
Page 92
Do not tighten each screw fully before moving on to the next screw. Apply only one or two turns to each screw in sequence until all are tightened manually as far as they can be so that the gasket is compressed and the plastic bezel faceplate is touching the panel. RabbitCore RCM3209/RCM3229...
Note the locations and connections relative to pin 1 on both the Prototyping Board and the LCD/keypad module. Rabbit offers 2 ft. (60 cm) extension cables. Contact your authorized Rabbit distributor or a sales representative for more information. User’s Manual...
Board are provided in the directory. SAMPLES\RCM3200 These sample programs use the external I/O bus on the Rabbit 3000 chip, and so the line is already included in the sample programs. #define PORTA_AUX_IO Each sample program has comments that describe the purpose and function of the pro- gram.
C.8 LCD/Keypad Module Function Calls When mounted on the Prototyping Board, the LCD/keypad module uses the external I/O bus on the Rabbit 3000 chip. Remember to add the line #define PORTA_AUX_IO to the beginning of any programs using the external I/O bus.
4 = LED DS5 5 = LED DS6 6 = LED DS7 is the value used to control whether the LED is on or off (0 or 1). value 0 = off 1 = on RETURN VALUE None. RabbitCore RCM3209/RCM3229...
C.8.3 LCD Display The functions used to control the LCD display are contained in the Dynamic C LIB\ library. When x and y coordinates on the display DISPLAYS\GRAPHIC\GRAPHIC.LIB screen are specified, x can range from 0 to 121, and y can range from 0 to 31. These numbers represent pixels from the top left corner of the display.
Page 98
0—turn the LCD screen off RETURN VALUE None. SEE ALSO glInit, glSetContrast, glBackLight glSetContrast void glSetContrast(unsigned level); DESCRIPTION Sets display contrast. NOTE: This function is not used with the LCD/keypad module since the support circuits are not available on the LCD/keypad module. RabbitCore RCM3209/RCM3229...
Page 99
glFillScreen void glFillScreen(int pattern); DESCRIPTION Fills the LCD display screen with a pattern. PARAMETER The screen will be set to all black if pattern is 0xFF, all white if pattern is 0x00, and vertical stripes for any other pattern. RETURN VALUE None.
Page 100
(all black if pattern is 0xFF, all white pattern if pattern is 0x00, and vertical stripes for any other pattern). RETURN VALUE None. SEE ALSO glFillScreen, glBlankScreen, glBlock, glBlankRegion RabbitCore RCM3209/RCM3229...
Page 101
glFastFillRegion void glFastFillRegion(int left, int top, int width, int height, char pattern); DESCRIPTION Fills a rectangular block in the LCD buffer with the pattern specified. The block left and width parameters must be byte-aligned. Any portion of the block that is outside the LCD display area will be clipped.
Page 102
8). the y coordinate of the top left corner of the block. the width of the block (must be evenly divisible by 8). width the height of the block. height RETURN VALUE None. SEE ALSO glFillScreen, glBlankScreen, glBlock RabbitCore RCM3209/RCM3229...
Page 103
glBlock void glBlock(int left, int top, int width, int height); DESCRIPTION Draws a rectangular block in the page buffer and on the LCD if the buffer is unlocked. Any portion of the block that is outside the LCD display area will be clipped. PARAMETERS the x coordinate of the top left corner of the block.
Page 104
RETURN VALUE None. SEE ALSO glPlotVPolygon, glFillPolygon, glFillVPolygon RabbitCore RCM3209/RCM3229...
Page 105
glFillVPolygon void glFillVPolygon(int n, int *pFirstCoord); DESCRIPTION Fills a polygon in the LCD page buffer and on the LCD screen if the buffer is unlocked. Any portion of the polygon that is outside the LCD display area will be clipped. If fewer than 3 vertices are specified, the function will return without doing anything.
Page 106
RETURN VALUE None. SEE ALSO glFillVPolygon, glPlotPolygon, glPlotVPolygon RabbitCore RCM3209/RCM3229...
Page 107
glPlotCircle void glPlotCircle(int xc, int yc, int rad); DESCRIPTION Draws the outline of a circle in the LCD page buffer and on the LCD if the buffer is unlocked. Any portion of the circle that is outside the LCD display area will be clipped. PARAMETERS the x coordinate of the center of the circle.
Page 108
RETURN VALUE None. SEE ALSO glPrinf RabbitCore RCM3209/RCM3229...
Page 109
glFontCharAddr unsigned long glFontCharAddr(fontInfo *pInfo, char letter); DESCRIPTION Returns the xmem address of the character from the specified font set. PARAMETERS pointer to the xmem address of the bitmap font set. pInfo an ASCII character. letter RETURN VALUE xmem address of bitmap character font, column major and byte-aligned. SEE ALSO glPutFont, glPrintf glPutFont...
Page 110
RETURN VALUE The x step is returned in the MSB, and the y step is returned in the LSB of the integer result. SEE ALSO Use glGetPfStep() to control the x and y printing step direction. RabbitCore RCM3209/RCM3229...
Page 111
glPutChar void glPutChar(char ch, char *ptr, int *cnt, glPutCharInst *pInst) DESCRIPTION Provides an interface between the STDIO string-handling functions and the graphic li- brary. The STDIO string-formatting function will call this function, one character at a time, until the entire formatted string has been parsed. Any portion of the bitmap char- acter that is outside the LCD display area will be clipped.
Page 112
(row) of the upper left corner of the text. a pointer to the font descriptor. pInfo pointer to a formatted string. formatted string conversion parameter(s). EXAMPLE glprintf(0,0, &fi12x16, "Test %d\n", count); RETURN VALUE None. SEE ALSO glXFontInit RabbitCore RCM3209/RCM3229...
Page 113
glBuffLock void glBuffLock(void); DESCRIPTION Increments LCD screen locking counter. Graphic calls are recorded in the LCD mem- ory buffer and are not transferred to the LCD if the counter is non-zero. NOTE: can be nested up to a level of 255, but be glBuffLock() glBuffUnlock() sure to balance the calls.
Page 114
PIXBLACK draws black pixels (turns pixel on). PIXWHITE draws white pixels (turns pixel off). PIXXOR draws old pixel XOR'ed with the new pixel. RETURN VALUE None. SEE ALSO glGetBrushType RabbitCore RCM3209/RCM3229...
Page 115
glGetBrushType int glGetBrushType(void); DESCRIPTION Gets the current method (or color) of pixels drawn by subsequent graphic calls. RETURN VALUE The current brush type. SEE ALSO glSetBrushType glXGetBitmap void glXGetBitmap(int x, int y, int bmWidth, int bmHeight, unsigned long xBm); DESCRIPTION Gets a bitmap from the LCD page buffer and stores it in xmem RAM.
Page 116
(must be evenly divisible by 8). width the height of the bitmap. height the xmem RAM storage address of the bitmap. xmemptr RETURN VALUE None. SEE ALSO glXPutBitmap, glPrintf RabbitCore RCM3209/RCM3229...
Page 117
glPlotDot void glPlotDot(int x, int y); DESCRIPTION Draws a single pixel in the LCD buffer, and on the LCD if the buffer is unlocked. If the coordinates are outside the LCD display area, the dot will not be plotted. PARAMETERS the x coordinate of the dot.
Page 118
8, cols otherwise truncates. the number of rows in the window. rows RETURN VALUE None. SEE ALSO glHScroll, glRight1 RabbitCore RCM3209/RCM3229...
Page 119
glRight1 void glRight1(int left, int top, int cols, int rows); DESCRIPTION Scrolls byte-aligned window right one pixel, left column is filled by current pixel type (color). PARAMETERS the top left corner of bitmap, must be evenly divisible by 8, other- left wise truncates.
Page 120
8, cols otherwise truncates. the number of rows in the window. rows RETURN VALUE None. SEE ALSO glVScroll, glDown1 RabbitCore RCM3209/RCM3229...
Page 121
glDown1 void glDown1(int left, int top, int cols, int rows); DESCRIPTION Scrolls byte-aligned window down one pixel, top column is filled by current pixel type (color). PARAMETERS the top left corner of bitmap, must be evenly divisible by 8, other- left wise truncates.
Page 122
8. cols the number of rows in the window. rows the number of pixels to scroll within the defined window (a negative nPix value will produce a scroll to the left). RETURN VALUE None. SEE ALSO glVScroll RabbitCore RCM3209/RCM3229...
Page 123
glVScroll void glVScroll(int left, int top, int cols, int rows, int nPix); DESCRIPTION Scrolls up or down, within the defined window by x number of pixels. The opposite edge of the scrolled window will be filled in with white pixels. The window must be byte-aligned.
Page 124
RETURN VALUE None. SEE ALSO glXPutFastmap, glPrintf RabbitCore RCM3209/RCM3229...
Page 125
glXPutFastmap void glXPutFastmap(int left, int top, int width, int height, unsigned long bitmap); DESCRIPTION Draws bitmap in the specified space. The data for the bitmap are stored in xmem. This function is like glXPutBitmap(), except that it is faster. The restriction is that the bitmap must be byte-aligned.
Page 126
RETURN VALUE 0—window frame was successfully created. -1—x coordinate + width has exceeded the display boundary. -2—y coordinate + height has exceeded the display boundary. -3—Invalid winHeight and/or winWidth parameter value. RabbitCore RCM3209/RCM3229...
Page 127
TextBorderInit void TextBorderInit(windowFrame *wPtr, int border, char *title); DESCRIPTION This function initializes the window frame structure with the border and title information. NOTE: Execute the function before using this function. TextWindowFrame() PARAMETERS a pointer to the window frame descriptor. wPtr the border style: border SINGLE_LINE—The function will draw a single-line border...
Page 128
NOTE: Execute the function before using this function. TextWindowFrame() PARAMETERS a pointer to a font descriptor. window a character column location. a character row location. RETURN VALUE None. SEE ALSO TextPutChar, TextPrintf, TextWindowFrame RabbitCore RCM3209/RCM3229...
Page 129
TextCursorLocation void TextCursorLocation(windowFrame *window, int *col, int *row); DESCRIPTION Gets the current cursor location that was set by a graphic Text... function. NOTE: Execute the function before using this function. TextWindowFrame() PARAMETERS a pointer to a font descriptor. window a pointer to cursor column variable. a pointer to cursor row variable.
Page 130
LCD display area, the character will not be displayed. NOTE: Execute the function before using this function. TextWindowFrame() PARAMETERS a pointer to a font descriptor. window a character to be displayed on the LCD. RETURN VALUE None. SEE ALSO TextGotoXY, TextPrintf, TextWindowFrame, TextCursorLocation RabbitCore RCM3209/RCM3229...
Page 131
TextPrintf void TextPrintf(struct windowFrame *window, char *fmt, ...); DESCRIPTION Prints a formatted string (much like printf) on the LCD screen. Only printable char- acters in the font set are printed; escape sequences '\r' and '\n' are also recognized. All other escape sequences will be skipped over; for example, '\b' and \'t' will cause nothing to be displayed.
Page 132
This functions clears the entire area within the specified text window. NOTE: Execute the function before using this function. TextWindowFrame() PARAMETERS a pointer to the window frame descriptor. wPtr RETURN VALUE None. SEE ALSO TextGotoXY, TextPrintf, TextWindowFrame, TextCursorLocation RabbitCore RCM3209/RCM3229...
C.8.4 Keypad The functions used to control the keypad are contained in the Dynamic C LIB\KEYPADS\ library. KEYPAD7.LIB keyInit void keyInit(void); DESCRIPTION Initializes keypad process. RETURN VALUE None. SEE ALSO brdInit User’s Manual...
Page 134
How long to hold before going to high-speed repeat. 0 = Slow Only. a high-speed repeat tick, which is approximately one debounce cSpdHi period or 5 µs. How many times to repeat after low speed repeat. 0 = None. RabbitCore RCM3209/RCM3229...
Page 135
keyConfig (continued) RETURN VALUE None. SEE ALSO keyProcess, keyGet, keypadDef User’s Manual...
Page 136
NOTE: This function is also able to process an 8 × 8 matrix keypad. RETURN VALUE None. SEE ALSO keyConfig, keyGet, keypadDef keyGet char keyGet(void); DESCRIPTION Get next keypress. RETURN VALUE The next keypress, or 0 if none. SEE ALSO keyConfig, keyProcess, keypadDef RabbitCore RCM3209/RCM3229...
Page 137
keyUnget int keyUnget(char cKey); DESCRIPTION Pushes the value of cKey to the top of the input queue, which is 16 bytes deep. PARAMETER cKey RETURN VALUE None. SEE ALSO keyGet User’s Manual...
Page 138
1,'U',0, 0, 0, 0, 0 ); keyConfig ( 5,'+',0, 0, 0, 0, 0 ); keyConfig ( 0,'L',0, 0, 0, 0, 0 ); Characters are returned upon keypress with no repeat. RETURN VALUE None. SEE ALSO keyConfig, keyGet, keyProcess RabbitCore RCM3209/RCM3229...
Page 139
keyScan void keyScan(char *pcKeys); DESCRIPTION Writes "1" to each row and reads the value. The position of a keypress is indicated by a zero value in a bit position. PARAMETER a pointer to the address of the value read. pcKeys RETURN VALUE None.
D.1.1 Battery Backup The RCM3209/RCM3229 does not have a battery, but there is provision for a customer- supplied battery to back up the data SRAM and keep the internal Rabbit 3000 real-time clock running. Header J62, shown in Figure D-1, allows access to the external battery. This header makes it possible to connect an external 3 V power supply.
Prototyping Board or motherboard since that is where the backup battery would be located. Rabbit’s Technical Note TN235, External 32.768 kHz Oscillator Circuits, provides addi- tional information about the current draw by the real-time clock oscillator circuit.
D.1.3 Reset Generator The RCM3209/RCM3229 uses a reset generator to reset the Rabbit 3000 microprocessor when the voltage drops below the voltage necessary for reliable operation. The reset occurs between 2.85 V and 3.00 V, typically 2.93 V. The RCM3209/RCM3229 has a reset output, pin 1 on header J2.
Parallel Port F, along with +5 V. This appendix describes the function of each pin, and the ways they may be used for motion-control applications. It should be read in conjunction with the Rabbit 3000 Microprocessor User’s Manual and the RCM3209 and the Proto- typing Board schematics.
2.2 V typ logic high and/or the 6 mA maximum from the Rabbit 3000. The +5 V supply output is provided for supply- ing interface logic. When used as inputs, the pins on header J6 do not require buffers unless the input voltage will exceed the 5 V tolerance of the processor pins.
E.3 Using Parallel Port F Parallel Port F is a byte-wide port with each bit programmable for data direction and drive. These are simple inputs and outputs controlled and reported in the Port F Data Register. As outputs, the bits of the port are buffered, with the data written to the Port F Data Regis- ter transferred to the output pins on a selected timing edge.
Page 148
Bit 5 carries PWM[1] output Bit 6 carries PWM[2] output Bit 7 carries PWM[3] output Port F Drive Control Register PFDCR 00111110 (0x3E) xxxxxxxx Bits Value Description Corresponding port bit is active high or low Corresponding port bit is open drain RabbitCore RCM3209/RCM3229...
Page 149
Table E-2. Parallel Port F Registers (continued) Register Name Mnemonic I/O Address Reset Value Port F Data Direction Register PFDDR 00111111 (0x3F) 00000000 Bits Value Description Corresponding port bit is an input Corresponding port bit is an output User’s Manual...
E.5 PWM Registers There are no default values on reset for any of the PWM registers. Table E-4. PWM Registers PWM LSBs Register Address PWL0R 10001000 (0x88) PWL1R 10001010 (0x8A) PWL2R 10001100 (0x8C) PWL3R 10001110 (0x8E) Bit(s) Value Description The least significant two bits for the Pulse Width Modulator count are Write stored These bits are ignored.
I and Q inputs are sampled in different clock cycles. The Input Capture (see the Rabbit 3000 Microprocessor Users Manual) may be used to measure the pulse width on the I inputs because they come from the odd-numbered port bits.
Page 153
The Quadrature Decoder generates an interrupt when the counter increments from 0x00 to 0x01 or when the counter decrements from 0x00 to 0xFF. Note that the status bits in the QDCSR are set coincident with the interrupt, and the interrupt (and status bits) are cleared by reading the QDCSR.
Page 154
Quadrature Decoder interrupt use Interrupt Priority Quadrature Decoder interrupt use Interrupt Priority Quad Decode Count Register QDC1R Address = 10010100 (0x94) (QDC2R) Address = 10010110 (0x96) Bit(s) Value Description The current value of the Quadrature Decoder read counter is reported. RabbitCore RCM3209/RCM3229...
CHEMATICS 090-0253 RCM3209 Schematic www.rabbit.com/documentation/schemat/090-0253.pdf 090-0137 Prototyping Board Schematic www.rabbit.com/documentation/schemat/090-0137.pdf 090-0156 LCD/Keypad Module Schematic www.rabbit.com/documentation/schemat/090-0156.pdf 090-0252 USB Programming Cable Schematic www.rabbit.com/documentation/schemat/090-0252.pdf You may use the URL information provided above to access the latest schematics directly. User’s Manual...
Need help?
Do you have a question about the RabbitCore RCM3209 and is the answer not in the manual?
Questions and answers