RabbitCore RCM3000 C-Programmable Module with Ethernet User’s Manual 019–0110 • 030725–D
RabbitCore RCM3000 User’s Manual Part Number 019-0110 • 030725–D • Printed in U.S.A. ©2002–2003 Z-World Inc. • All rights reserved. Z-World reserves the right to make changes and improvements to its products without providing notice. Trademarks Rabbit and Rabbit 3000 are registered trademarks of Rabbit Semiconductor. RabbitCore is a trademark of Rabbit Semiconductor. Dynamic C is a registered trademark of Z-World Inc. Z-World, Inc.
TABLE OF CONTENTS Chapter 1. Introduction 1 1.1 RCM3000 Features ...............................................................................................................................1 1.2 Advantages of the RCM3000 ...............................................................................................................2 1.3 Development and Evaluation Tools......................................................................................................2 1.4 How to Use This Manual ......
Appendix B. Prototyping Board 35 B.1 Mechanical Dimensions and Layout ................................................................................................. 36 B.2 Power Supply..................................................................................................................................... 37 B.3 Using the Prototyping Board ............................................................................................................. 38 B.3.1 Adding Other Components ...........
1. INTRODUCTION The RCM3000 RabbitCore module is designed to be the heart of embedded control systems. The RCM3000 features an integrated Ethernet port and provides for LAN and Internet-enabled systems to be built as easily as serial-communication systems. The RCM3000 has a Rabbit 3000 microprocessor operating at 29.
• 10-bit free-running PWM counter and four width registers • Two-channel Input Capture can be used to time input signals from various port pins • Two-channel Quadrature Decoder accepts inputs from external incremental encoder modules • Six CMOS-compatible serial ports: maximum asynchronous baud rate of 1.84 Mbps, maximum synchronous baud rate of 7.35 Mbps. Four ports are configurable as a clocked serial port (SPI), and two ports are configurable as SDLC/HDLC serial ports. • Supports 1.
1.4 How to Use This Manual This user’s manual is intended to give users detailed information on the RCM3000 module. It does not contain detailed information on the Dynamic C development environment or the TCP/IP software support for the integrated Ethernet port. Most users will want more detailed information on some or all of these topics in order to put the RCM3000 module to effective use. 1.4.
4 RabbitCore RCM3000
2. HARDWARE REFERENCE Chapter 2 describes the hardware components and principal hardware subsystems of the RCM3000. Appendix A, “RabbitCore RCM3000 Specifications,” provides complete physical and electrical specifications. Figure 1 shows these Rabbit-based subsystems designed into the RCM3000. 32 kHz 14 MHz osc osc SRAM Flash RABBIT 3000 logic-level serial signal Level converter Ethernet RabbitCore Module RS-232, RS-485, IRDA serial communication drivers on motherboard Figure 1.
2.1 RCM3000 Digital Inputs and Outputs The RCM3000 has 52 parallel I/O lines grouped in seven 8-bit ports available on headers J1 and J2. The 44 bidirectional I/O lines are located on pins PA0–PA7, PB0, PB2–PB7, PD2–PD7, PE0–PE1, PE3–PE7, PF0–PF7, and PG0–PG7. Figure 2 shows the RCM3000 RabbitCore series pinouts for headers J1 and J2. J1 GND PA7 PA5 PA3 PA1 PF3 PF1 PC0 PC2 PC4 PC6 PG0 PG2 PD4 PD2 PD6 n.c. J2 STATUS PA6 PA4 PA2 PA0 PF2 PF0 PC1 PC3 PC5 PC7 PG1 PG3 PD5 PD3 PD7 n.c.
Figure 3 shows the use of the Rabbit 3000 ports in the RCM3000 series RabbitCore modules.
Table 1.
Table 1.
Table 1.
2.1.1 Memory I/O Interface The Rabbit 3000 address lines (A0–A19) and all the data lines (D0–D7) are routed internally to the onboard flash memory and SRAM chips. I/0 write (/IOWR) and I/0 read (/IORD) are available for interfacing to external devices. Parallel Port A can also be used as an external I/O data bus to isolate external I/O from the main data bus. Parallel Port B pins PB2–PB7 can also be used as an external address bus.
2.2 Serial Communication The RCM3000 Series board does not have an RS-232 or an RS-485 transceiver directly on the board. However, an RS-232 or RS-485 interface may be incorporated on the board the RCM3000 is mounted on. For example, the Prototyping Board has a standard RS-232 transceiver chip. 2.2.1 Serial Ports There are six serial ports designated as Serial Ports A, B, C, D, E, and F. All six serial ports can operate in an asynchronous mode up to the baud rate of the system clock divided by 16.
2.2.3 Programming Port Serial Port A has special features that allow it to cold-boot the system after reset. Serial Port A is also the port that is used for software development under Dynamic C. The RabbitCore RCM3000 Series has a 10-pin program header labeled J3. The Rabbit 3000 startup-mode pins (SMODE0, SMODE1) are presented to the programming port so that an externally connected device can force the RCM3000 to start up in an external bootstrap mode.
2.3 Other Hardware 2.3.1 Clock Doubler The RCM3000 takes advantage of the Rabbit 3000 microprocessor’s internal clock doubler. A built-in clock doubler allows half-frequency crystals to be used to reduce radiated emissions. The 29.4 MHz frequency specified for the RCM3000 is generated using a 14.7456 MHz crystal. The clock doubler will not work for crystals with a frequency above 26.7264 MHz. The clock doubler may be disabled if 29.4 MHz clock speeds are not required.
2.4 Memory 2.4.1 SRAM The RCM3000 is designed to accept 128K to 512K of SRAM packaged in a 32-pin TSOP or sTSOP case. 2.4.2 Flash EPROM The RCM3000 is also designed to accept 256K to 512K of flash EPROM packaged in a 32-pin TSOP or sTSOP case. NOTE: Z-World 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. Writing to arbitrary flash memory addresses at run time is also discouraged.
16 RabbitCore RCM3000
3. SOFTWARE REFERENCE Dynamic C is an integrated development system for writing embedded software. It runs on an IBM-compatible PC and is designed for use with Z-World controllers and other controllers based on the Rabbit microprocessor. Chapter 3 provides the libraries, function calls, and sample programs related to the RCM3000. 3.1 More About Dynamic C Dynamic C has been in use worldwide since 1989.
3.2 Programming Cable The RCM3000 is automatically in program mode when the PROG connector on the programming cable is attached, and is automatically in run mode when no programming cable is attached. The DIAG connector of the programming cable may be used on header J3 of the RCM3000 with the board operating in the run mode. This allows the programming port to be used as an application port. See Appendix E, “Programming Cable,” for more information.
3.3 Dynamic C Libraries With Dynamic C running, click File > Open, and select Lib. The following list of Dynamic C libraries will be displayed. There is no unique library that is specific to the RCM3000. The functions in the above libraries are described in the Dynamic C Function Reference Manual.
3.3.1 I/O The RCM3000 was designed to interface with other systems, and so there are no drivers written specifically for the I/O. The general Dynamic C read and write functions allow you to customize the parallel I/O to meet your specific needs. For example, use WrPortI(PEDDR, &PEDDRShadow, 0x00); to set all the Port E bits as inputs, or use WrPortI(PEDDR, &PEDDRShadow, 0xFF); to set all the Port E bits as outputs.
3.4 Sample Programs Sample programs are provided in the Dynamic C Samples folder, which is shown below. The various folders contain specific sample programs that illustrate the use of the corresponding Dynamic C libraries. For example, the sample program PONG.C demonstrates the output to the Dynamic C STDIO window. Two folders contain sample programs that illustrate features unique to the RCM3000. • RCM3000—Demonstrates the basic operation and the Ethernet functionality of the RCM3000.
3.5 Upgrading Dynamic C Dynamic C patches that focus on bug fixes are available from time to time. Check the Web sites • www.zworld.com/support/ or • www.rabbitsemiconductor.com/support/ for the latest patches, workarounds, and bug fixes. The default installation of a patch or bug fix is to install the file in a directory (folder) different from that of the original Dynamic C installation.
APPENDIX A. RABBITCORE RCM3000 SPECIFICATIONS Appendix A provides the specifications for the RCM3000, and describes the conformal coating.
A.1 Electrical and Mechanical Characteristics Figure A-1 shows the mechanical dimensions for the RCM3000. 1.850 (47.0) 1.375 (34.9) Y1 RP1 JP1 RP3 R12 R11 C19 (69.2) U6 R30 R23 C26 2.725 R33 R27 R31 J4 C38 R46 R47 C47 GND 0.67 1.18 (17.0) 0.15 (3.8) J1 (22) 0.86 (22) 0.86 (6.5) (47.0) 0.256 1.850 (2) J2 0.08 (14) 0.55 (69.2) (6.5) (2.5) 2.725 0.256 0.10 (14) 0.55 (30.0) 0.50 C46 (12.7) C44 DS2 DS1 Y3 LNK ACT C41 C42 (33.5) (15.7) 0.
It is recommended that you allow for an “exclusion zone” of 0.04" (1 mm) around the RCM3000 in all directions when the RCM3000 is incorporated into an assembly that includes other printed circuit boards. This “exclusion zone” that you keep free of other components and boards will allow for sufficient air flow, and will help to minimize any electrical or electromagnetic interference between adjacent boards. An “exclusion zone” of 0.
Table A-1 lists the electrical, mechanical, and environmental specifications for the RCM3000. Table A-1. RabbitCore RCM3000 Specifications Feature RCM3000 RCM3010 Microprocessor Rabbit 3000 at 29.
Table A-1. RabbitCore RCM3000 Specifications (continued) Feature RCM3000 RCM3010 Operating Temperature –40°C to +70°C Humidity 5% to 95%, noncondensing Connectors (for connection to headers J4 and J5) Two 2 × 17, 2 mm pitch 1.850" × 2.725" × 0.86" (47 mm × 69 mm × 22 mm) Board Size A.1.1 Headers The RCM3000 uses headers at J1 and J2 for physical connection to other boards. J1 and J2 are 2 × 17 SMT headers with a 2 mm pin spacing. J3, the programming port, is a 2 × 5 header with a 2 mm pin spacing.
A.2 Bus Loading You must pay careful attention to bus loading when designing an interface to the RCM3000. This section provides bus loading information for external devices. Table A-2 lists the capacitance for the various RCM3000 I/O ports. Table A-2. Capacitance of Rabbit 3000 I/O Ports I/O Ports Input Capacitance (pF) Output Capacitance (pF) 12 14 Parallel Ports A to G Table A-3 lists the external capacitive bus loading for the various RCM3000 output ports.
Figure A-4 shows a typical timing diagram for the Rabbit 3000 microprocessor external memory read and write cycles. Memory Read (no wait states) T2 T1 CLK A[19:0] valid Tadr /CSx TCSx TCSx /OEx TOEx D[7:0] TOEx Tsetup valid Thold Memory Write (no extra wait states) T1 Tw T2 CLK A[19:0] /CSx /WEx D[7:0] valid Tadr TCSx TCSx TWEx TWEx valid TDHZV TDVHZ Figure A-4.
Table A-4 lists the delays in gross memory access time for several values of VDD. Table A-4. Data and Clock Delays VDD ±10%, Temp, -40°C–+85°C (maximum) Clock to Address Output Delay (ns) 30 pF 60 pF 90 pF Data Setup Time Delay (ns) 3.3 6 8 11 2.7 7 10 2.5 8 1.8 18 VDD Spectrum Spreader Delay (ns) Normal Strong dbl/no dbl dbl/no dbl 1 3/4.5 4.5/9 13 1.5 3.5/5.5 5.5/11 11 15 1.
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 Ta = –55°C to +125°C, VDD = 3.0 V to 3.6 V. Table A-5. 3.3 Volt DC Characteristics Symbol Parameter Test Conditions Min IIH Input Leakage High VIN = VDD, VDD = 3.3 V IIL Input Leakage Low (no pull-up) VIN = VSS, VDD = 3.3 V -1 IOZ Output Leakage (no pull-up) VIN = VDD or VSS, VDD = 3.
A.4 I/O Buffer Sourcing and Sinking Limit Unless otherwise specified, the Rabbit I/O buffers are capable of sourcing and sinking 6.8 mA of current per pin at full AC switching speed. Full AC switching assumes a 29.4 MHz CPU clock and capacitive loading on address and data lines of less than 70 pF per pin. The absolute maximum operating voltage on all I/O is 5.5 V. Table A-6 shows the AC and DC output drive limits of the parallel I/O buffers when the Rabbit 3000 is used in the RCM3000. Table A-6.
A.5 Conformal Coating The areas around the 32 kHz real-time clock crystal oscillator has had the Dow Corning silicone-based 1-2620 conformal coating applied. The conformally coated area is shown in Figure A-5. The conformal coating protects these high-impedance circuits from the effects of moisture and contaminants over time.
A.6 Jumper Configurations Figure A-6 shows the header locations used to configure the various RCM3000 options via jumpers. JP1 JP2 JP3 Top Side JP4 Bottom Side JP5 Figure A-6. Location of RCM3000 Configurable Positions Table A-7 lists the configuration options. Table A-7.
APPENDIX B. PROTOTYPING BOARD Appendix B describes the features and accessories of the Prototyping Board, and explains the use of the Prototyping Board to demonstrate the RCM3000 and to build prototypes of your own circuits.
B.1 Mechanical Dimensions and Layout Figure B-1 shows the mechanical dimensions and layout for the RCM3000 Prototyping Board. MOTOR/ENCODER J6 PE4 PE5 PC1 PC0 PE6 PE7 PF0 PF1 PF7 PF6 PF2 PF3 PF5 PF4 PA0 PA1 PB7 PB6 PA2 PA3 PB5 PB4 PA4 PA5 PB3 PB2 PA6 PA7 /RES PE4 UX10 GND R4 R3 RC20 RC24 RC23 UX9 R8 R12 R6 RC14 R10 C3 R5 R2 RC22 RC17 RC13 RC16 R7 UX3 RC12 RC21 R9 R11 RC10 R13 R21 +5V +3.3V BT1 UX11 RCM3000 RABBITCORE RCM2 RC19 +5V +3.
Table B-1 lists the electrical, mechanical, and environmental specifications for the Prototyping Board. Table B-1. RCM3000 Prototyping Board Specifications Parameter Specification Board Size 5.25" × 6.75" × 1.00" (133 mm × 171 mm × 25 mm) Operating Temperature –20°C to +60°C Humidity 5% to 95%, noncondensing Input Voltage 8 V to 24 V DC Maximum Current Draw 800 mA max. for +3.3 V supply, (including user-added circuits) 1 A total +3.3 V and +5 V combined Prototyping Area 2.0" × 3.
B.3 Using the Prototyping Board The Prototyping Board is actually both a demonstration board and a prototyping board. As a demonstration board, it can be used to demonstrate the functionality of the RCM3000 right out of the box without any modifications to either board. There are no jumpers or dip switches to configure or misconfigure on the Prototyping Board so that the initial setup is very straightforward.
The small holes are also provided for surface-mounted components that may be installed around the prototyping area. There is a 2.0" × 3.5" through-hole prototyping space available on the Prototyping Board. +3.3 V, +5 V, and GND traces run along the edge of the Prototyping Board for easy access. B.3.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).
B.3.3 Attach Modules to Prototyping Board Turn the RCM3000 module so that the Ethernet connector end of the module extends to the right, as shown in Figure B-5 below. Align the module headers J1 and J2 into sockets J12 and J13 (the MASTER slots) on the Prototyping Board. Press the module’s pins firmly into the Prototyping Board headers.
APPENDIX C. LCD/KEYPAD MODULE An optional LCD/keypad is available for the RCM3000 Series Prototyping Board. Appendix C describes the LCD/keypad and provides the software APIs to make full use of the LCD/keypad. C.1 Specifications Two optional LCD/keypad modules—with or without a panel-mounted NEMA 4 waterresistant bezel—are available for use with the RCM3000 Series Prototyping Board. They are shown in Figure C-1. LCD/Keypad Modules Figure C-1.
Mounting hardware and a 60 cm (24") extension cable are also available for the LCD/keypad module through your Z-World sales representative or authorized distributor. Table C-1 lists the electrical, mechanical, and environmental specifications for the LCD/keypad module. Table C-1. LCD/Keypad Specifications Parameter Specification Board Size 2.60" × 3.00" × 0.
C.2 Jumper-Selectable Voltage Settings for All Boards Before using the LCD/keypad module, set the voltage for 5 V by not using the jumper across any pins on header J5 as shown in Figure C-2. LCD/Keypad Module Jumper Configurations Description Pins Connected Factory Default 2.8 V 12 × 3.3 V 34 5V n.c. JP1 R3 U2 C4 U1 R4 R5 C11 C13 U4 J5 CR1 C12 R7 LCD1 R6 U3 D1 C7 C10 D2 C1 C6 C9 C5 R2 C3 C2 J5 R1 Header Q1 J5 Part No.
C.3 Keypad Labeling The keypad may be labeled according to your needs. A template is provided in Figure C-3 to allow you to design your own keypad label insert. 1.10 (28) 2.35 (60) Figure C-3. Keypad Template To replace the keypad legend, remove the old legend and insert your new legend prepared according to the template in Figure C-3. The keypad legend is located under the blue keypad matte, and is accessible from the left only as shown in Figure C-4.
C.4 Header Pinouts DB6B DB4B DB2B DB0B A1B A3B GND LED7 LED5 LED3 LED1 /RES VCC Figure C-5 shows the pinouts for the LCD/keypad module. J3 GND LED7 LED5 LED3 LED1 /RES VCC GND DB6B DB4B DB2B DB0B A1B A3B DB7B DB5B DB3B DB1B A0B A2B GND GND LED6 LED4 LED2 /CS +5BKLT J1 GND GND LED6 LED4 LED2 PE7 +5BKLT GND DB7B DB5B DB3B DB1B A0B A2B J2 Figure C-5. LCD/Keypad Module Pinouts C.4.
C.5 Mounting LCD/Keypad Module on the Prototyping Board Install the LCD/keypad module on header sockets J7, J8, and J10 of the Prototyping Board as shown in Figure C-6. Be careful to align the pins over the headers, and do not bend them as you press down to mate the LCD/keypad module with the Prototyping Board.
C.6 Bezel-Mount Installation This section describes and illustrates how to bezel-mount the LCD/keypad module designed for remote installation. Follow these steps for bezel-mount installation. 1. Cut mounting holes in the mounting panel in accordance with the recommended dimensions in Figure C-7, then use the bezel faceplate to mount the LCD/keypad module onto the panel. 0.125 D, 4x (5.8) 2.870 (86.4) (3.3) 0.230 0.130 CUTOUT 3.400 (3) (72.9) 3.100 (78.8) Figure C-7.
3. Fasten the unit with the four 4-40 screws and washers included with the LCD/keypad module. If your panel is thick, use a 4-40 screw that is approximately 3/16" (5 mm) longer than the thickness of the panel. Bezel/Gasket DISPLAY BOARD U1 C1 U2 C4 U3 C3 C2 Q1 R17 D1 J1 R1 R2 R4 R3 R5 R7 R6 R8 R15 R14 R13 R12 R11 R9 R10 Panel R18 Q2 Q3 Q4 Q5 Q6 Q8 Q7 C5 R16 KP1 J3 RN1 U4 C6 C7 C8 J2 Figure C-8.
C.6.1 Connect the LCD/Keypad Module to Your Prototyping Board The LCD/keypad module can be located as far as 2 ft. (60 cm) away from the RCM3000 Series Prototyping Board, and is connected via a ribbon cable as shown in Figure C-9.
C.7 LCD/Keypad Module Function APIs When mounted on the RCM3000 Series Prototyping Board, the LCD/keypad module uses the auxiliary 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 auxiliary I/O bus. C.7.1 LEDs When power is applied to the LCD/keypad module for the first time, the red LED (DS1) will come on, indicating that power is being applied to the LCD/keypad module. The red LED is turned off when the brdInit function executes.
C.7.2 LCD Display The functions used to control the LCD display are contained in the GRAPHIC.LIB library located in the Dynamic C DISPLAYS\GRAPHIC library directory. void glInit(void); Initializes the display devices, clears the screen. RETURN VALUE None.
void glSetContrast(unsigned level); Sets display contrast (the circuitry is not installed on the LCD/keypad module used with the RCM3000 Series Prototyping Board). PARAMETER level reflects low to high values (typically 0 to 255, depending on the board design) to give high to low contrast respectively. RETURN VALUE None. SEE ALSO glInit, glBacklight, glDispOnoff void glFillScreen(char pattern); Fills the LCD display screen with a pattern.
void glBlock(int x, int y, int bmWidth, int bmHeight); 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 x is the x coordinate of the upper left corner of the block. y is the y coordinate of the left top corner of the block. bmWidth is the width of the block. bmWidth is the height of the block. RETURN VALUE None.
void glPlotPolygon(int n, int y1, int x2, int y2, ...); Plots the outline of a polygon in the LCD page buffer and on the LCD if the buffer is unlocked. Any portion of the polygon that is outside the LCD display area will be clipped. The function will also return, doing nothing, if there are less than 3 vertices. PARAMETERS n is the number of vertices. y1 is the y coordinate of the first vertex. x1 is the x coordinate of the first vertex. y2 is the y coordinate of the second vertex.
void glFillPolygon(int n, int x1, int y1, int x2, int y2, ...); Fills a polygon in the LCD page buffer and on the LCD if the buffer is unlocked. Any portion of the polygon that is outside the LCD display area will be clipped. PARAMETERS n is the number of vertices. x1 is the x coordinate of the first vertex. y1 is the y coordinate of the first vertex. x2 is the x coordinate of the second vertex. y2 is the y coordinate of the second vertex. ... are the coordinates of additional vertices. RETURN VALUE None.
void glXFontInit(fontInfo *pInfo, char pixWidth, char pixHeight, unsigned startChar, unsigned endChar, unsigned long xmemBuffer); Initializes the font descriptor structure, where the font is stored in xmem. Each font character’s bitmap is column major and byte-aligned. PARAMETERS *pInfo is a pointer to the font descriptor to be initialized. pixWidth is the width (in pixels) of each font item. pixHeight is the height (in pixels) of each font item.
void glPutFont(int x, int y, fontInfo *pInfo, char code); Puts an entry from the font table to the page buffer and on the LCD if the buffer is unlocked. Each font character’s bitmap is column major and byte-aligned. Any portion of the bitmap character that is outside the LCD display area will be clipped. PARAMETERS x is the x coordinate (column) of the upper left corner of the text. y is the y coordinate (row) of the left top corner of the text. *pInfo is a pointer to the font descriptor.
void glPutChar(char ch, char *ptr, int *cnt, glPutCharInst *pInst) Provides an interface between the STDIO string-handling functions and the graphic library. 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 character that is outside the LCD display area will be clipped. PARAMETERS ch is the character to be displayed on the LCD.
void glBuffLock(void); Increments LCD screen locking counter. Graphic calls are recorded in the LCD memory buffer and are not transferred to the LCD if the counter is non-zero. NOTE: glBuffLock() and glBuffUnlock() can be nested up to a level of 255, but be sure to balance the calls. It is not a requirement to use these procedures, but a set of glBuffLock() and glBuffUnlock() bracketing a set of related graphic calls speeds up the rendering significantly. RETURN VALUE None.
int glGetBrushType(void); Gets the current method (or color) of pixels drawn by subsequent graphic calls. RETURN VALUE The current brush type. SEE ALSO glSetBrushType void glPlotDot(int x, int y); 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 x is the x coordinate of the dot. y is the y coordinate of the dot. RETURN VALUE None.
void glLeft1(int left, int top, int cols, int rows); Scrolls byte-aligned window left one pixel, right column is filled by current pixel type (color). PARAMETERS left is the upper left corner of bitmap, must be evenly divisible by 8. top is the left top corner of the bitmap. cols is the number of columns in the window, must be evenly divisible by 8. rows is the number of rows in the window. RETURN VALUE None.
void glDown1(int left, int top, int cols, int rows); Scrolls byte-aligned window down one pixel, top column is filled by current pixel type (color). PARAMETERS left is the upper left corner of bitmap, must be evenly divisible by 8. top is the left top corner of the bitmap. cols is the number of columns in the window, must be evenly divisible by 8. rows is the number of rows in the window. RETURN VALUE None.
void glVScroll(int left, int top, int cols, int rows, int nPix); 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. Parameters will be verified for the following: 1. The left and cols parameters will be verified that they are evenly divisible by 8. If not, they will be changed to a value that is a multiple of 8. 2.
void glXPutFastmap(int left, int top, int width, int height, unsigned long bitmap); 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. Any portion of a bitmap image or character that is outside the LCD display area will be clipped. PARAMETERS left is the upper left corner of the bitmap, must be evenly divisible by 8. top is the upper left corner of the bitmap.
void TextGotoXY(windowFrame *window, int col, int row); Sets the cursor location on the display of where to display the next character. The display location is based on the height and width of the character to be displayed. NOTE: Execute the TextWindowFrame function before using this function. PARAMETERS *window is a pointer to a font descriptor. col is a character column location. row is a character row location. RETURN VALUE None.
void TextPrintf(struct windowFrame *window, char *fmt, ...); Prints a formatted string (much like printf) on the LCD screen. Only printable characters in the font set are printed, also escape sequences, ’\r’ and ’\n’ are recognized. All other escape sequences will be skipped over; for example, ’\b’ and ’t’ will print if they exist in the font set, but will not have any effect as control characters.
C.7.3 Keypad The functions used to control the keypad are contained in the KEYPAD7.LIB library located in the Dynamic C KEYPADS library directory. void keyInit(void); Initializes keypad process RETURN VALUE None. SEE ALSO brdInit void keyConfig(char cRaw, char cPress, char cRelease, char cCntHold, char cSpdLo, char cCntLo, char cSpdHi); Assigns each key with key press and release codes, and hold and repeat ticks for auto repeat and debouncing. PARAMETERS cRaw is a raw key code index.
cSpdHi is a high-speed repeat tick. How many times to repeat after low speed repeat. 0 = None. RETURN VALUE None. SEE ALSO keyProcess, keyGet, keypadDef void keyProcess(void); Scans and processes keypad data for key assignment, debouncing, press and release, and repeat. NOTE: This function is also able to process an 8 × 8 matrix keypad.
void keypadDef(); Configures the physical layout of the keypad with the desired ASCII return key codes. Keypad physical mapping 1 × 7 0 4 1 ['L'] 5 2 ['U'] ['–'] 6 ['D'] 3 ['R'] ['+'] ['E'] where 'E' represents the ENTER key 'D' represents Down Scroll 'U' represents Up Scroll 'R' represents Right Scroll 'L' represents Left Scroll Example: Do the followingfor the above physical vs. ASCII return key codes.
C.8 Sample Programs Sample programs illustrating the use of the LCD/keypad module with the RCM3000 Series Prototyping Board are provided in the SAMPLES\RCM3000 directory. These sample programs use the auxiliary I/O bus on the Rabbit 3000 chip, and so the #define PORTA_AUX_IO line is already included in the sample programs.
APPENDIX D. POWER SUPPLY Appendix D provides information on the current requirements of the RCM3000, and includes some background on the chip select circuit used in power management. D.1 Power Supplies The RCM3000 requires a regulated 3.3 V ± 0.15 V DC power source. The RabbitCore design presumes that the voltage regulator is on the user board, and that the power is made available to the RCM3000 Series board through header J2. An RCM3000 with no loading at the outputs operating at 29.
The drain on the battery by the RCM3000 is typically 5 µA when no other power is supplied. If a 165 mA·h battery is used, the battery can last more than 3 years: 165 mA·h ------------------------ = 3.7 years. 5 µA The actual life in your application will depend on the current drawn by components not on the RCM3000 and the storage capacity of the battery. Note that the shelf life of a lithium ion battery is ultimately 10 years. The RCM3000 does not drain the battery while it is powered up normally. D.1.
APPENDIX E. PROGRAMMING CABLE Appendix E provides additional theoretical information for the Rabbit 3000™ microprocessor when using the DIAG and PROG connectors on the programming cable. The PROG connector is used only when the programming cable is attached to the programming connector (header J3) while a new application is being developed.
The programming port, which is shown in Figure E-1, can serve as a convenient communications port for field setup or other occasional communication need (for example, as a diagnostic port). If the port is simply to perform a setup function, that is, write setup information to flash memory, then the controller can be reset through the programming port and a cold boot performed to start execution of a special program dedicated to this functionality.
Once you establish that the programming port will never again be needed for programming, it is possible to use the programming port for additional I/O lines. Table E-1 lists the pins available for this alternate configuration. Table E-1.
76 RabbitCore RCM3000
APPENDIX F. MOTOR CONTROL OPTION The RCM3000/RCM3100 Prototyping Board has a header at J6 for a motor control option. While Z-World and Rabbit Semiconductor do not support this option at this time, this appendix provides additional information about Parallel Port F on the Rabbit 3000 microprocessor to enable you to use this feature on the Prototyping Board for your needs. F.1 Overview The Parallel Port F connector on the Prototyping Board, J6, gives access to all 8 pins of Parallel Port F, along with +5 V.
F.2 Header J6 The connector is a 2 × 5, 0.1" pitch header suitable for connecting to a IDC receptacle, with the following pin allocations. Table F-1.
F.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 Register transferred to the output pins on a selected timing edge.
Table F-2. Parallel Port F Registers Register Name Port F Data Register Mnemonic PFDR Bits 0:7 Port F Control Register R/W 00111000 (0x38) Value Reset Value R/W xxxxxxxx Description Read Current state of pins Write Port buffer. Value transferred to O/P register on next rising edge of transfer clock.
Table F-2.
F.4 PWM Outputs The Pulse-Width Modulator consists of a 10-bit free-running counter and four width registers. Each PWM output is high for n + 1 counts out of the 1024-clock count cycle, where n is the value held in the width register. The PWM output high time can optionally be spread throughout the cycle to reduce ripple on the externally filtered PWM output. The PWM is clocked by the output of Timer A9.
F.5 PWM Registers There are no default values on reset for any of the PWM registers. Table F-4. PWM Registers PWM LSBs Register PWL0R 10001000 (0x88) PWL1R 10001010 (0x8A) PWL2R 10001100 (0x8C) PWL3R 10001110 (0x8E) Bit(s) 7:6 Address Value Write 5:1 Description The least significant two bits for the Pulse Width Modulator count are stored These bits are ignored. 0 PWM MSB x Bit(s) 7:0 User’s Manual 0 PWM output High for single block.
F.6 Quadrature Decoder The two-channel Quadrature Decoder accepts inputs via Parallel Port F from two external optical incremental encoder modules. Each channel of the Quadrature Decoder accepts an in-phase (I) and a quadrature-phase (Q) signal, and provides 8-bit counters to track shaft rotation and provide interrupts when the count goes through the zero count in either direction.
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. Table F-5. Quadrature Decoder Registers Register Name Quad Decode Control/Status Register Mnemonic QDCSR Bit 7 (rd-only) Value Address 10010000 (0x90) Description 0 Quadrature Decoder 2 did not increment from 0xFF.
Table F-5. Quadrature Decoder Registers (continued) Register Name Quad Decode Control Register Mnemonic QDCR Bit Address = 10010001 (0x91) Description 0x Disable Quadrature Decoder 2 inputs. Writing a new value to these bits will not cause Quadrature Decoder 2 to increment or decrement. 10 Quadrature Decoder 2 inputs from Port F bits 3 and 2. 11 Quadrature Decoder 2 inputs from Port F bits 7 and 6. 5:4 xx These bits are ignored. 3:2 0x Disable Quadrature Decoder 1 inputs.
NOTICE TO USERS Z-WORLD PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFESUPPORT DEVICES OR SYSTEMS UNLESS A SPECIFIC WRITTEN AGREEMENT REGARDING SUCH INTENDED USE IS ENTERED INTO BETWEEN THE CUSTOMER AND Z-WORLD PRIOR TO USE.
88 RabbitCore RCM3000
INDEX A E additional information Getting Started manual ....... 3 online documentation .......... 3 auxiliary I/O bus ................... 11 Ethernet port ......................... 12 pinout ................................ 12 exclusion zone ...................... 25 B battery backup battery life ......................... 72 external battery connections ............................. 71 reset generator ................... 72 bus loading ............................ 28 C clock doubler ...................
Prototyping Board adding RS-232 transceiver 39 attach modules ...................40 dimensions .........................36 J6 pinout .............................78 motor control option ..........77 pinout .................................38 power supply .....................37 prototyping area .................39 specifications .....................37 PWM outputs ........................82 PWM registers .......................83 Q quadrature decoder ................84 quadrature decoder registers .
SCHEMATICS 090-0136 RCM3000 Schematic www.zworld.com/documentation/schemat/090-0136.pdf 090-0137 RCM3000 Series Prototyping Board Schematic www.zworld.com/documentation/schemat/090-0137.pdf 090-0156 LCD/Keypad Module Schematic www.zworld.com/documentation/schemat/090-0156.pdf 090-0128 Programming Cable Schematic www.zworld.com/documentation/schemat/090-0128.pdf The schematics included with the printed manual were the latest revisions available at the time the manual was last revised.