Table of Contents

1. Introduction

1.1 Features and Specifications Rabbit 3000
1.2 Summary of Rabbit 3000 Advantages
1.3 Differences Rabbit 3000 vs. Rabbit 2000

2. Rabbit 3000 Design Features

2.1 The Rabbit 8-bit Processor vs. Other Processors
2.2 Overview of On-Chip Peripherals and Features
2.2.1 5 V Tolerant Inputs
2.2.2 Serial Ports
2.2.3 System Clock
2.2.4 32.768 kHz Oscillator Input
2.2.5 Parallel I/O
2.2.6 Slave Port
2.2.7 Auxiliary I/O Bus
2.2.8 Timers
2.2.9 Input Capture Channels
2.2.10 Quadrature Encoder Inputs
2.2.11 Pulse Width Modulation Outputs
2.2.12 Spread Spectrum Clock
2.2.13 Separate Core and I/O Power Pins
2.3 Design Standards
2.3.1 Programming Port
2.3.2 Standard BIOS
2.4 Dynamic C Support for the Rabbit

3. Details on Rabbit Microprocessor Features

3.1 Processor Registers
3.2 Memory Mapping
3.2.1 Extended Code Space
3.2.2 Separate I and D Space - Extending Data Memory
3.2.3 Using the Stack Segment for Data Storage
3.2.4 Practical Memory Considerations
3.3 Instruction Set Outline
3.3.1 Load Immediate Data to a Register
3.3.2 Load or Store Data from or to a Constant Address
3.3.3 Load or Store Data Using an Index Register
3.3.4 Register-to-Register Move
3.3.5 Register Exchanges
3.3.6 Push and Pop Instructions
3.3.7 16-bit Arithmetic and Logical Ops
3.3.8 Input/Output Instructions
3.4 How to Do It in Assembly Language--Tips and Tricks
3.4.1 Zero HL in 4 Clocks
3.4.2 Exchanges Not Directly Implemented
3.4.3 Manipulation of Boolean Variables
3.4.4 Comparisons of Integers
3.4.5 Atomic Moves from Memory to I/O Space
3.5 Interrupt Structure
3.5.1 Interrupt Priority
3.5.2 Multiple External Interrupting Devices
3.5.3 Privileged Instructions, Critical Sections and Semaphores
3.5.4 Critical Sections
3.5.5 Semaphores Using Bit B,(HL)
3.5.6 Computed Long Calls and Jumps

4. Rabbit Capabilities

4.1 Precisely Timed Output Pulses
4.1.1 Pulse Width Modulation to Reduce Relay Power
4.2 Open-Drain Outputs Used for Key Scan
4.3 Cold Boot
4.4 The Slave Port
4.4.1 Slave Rabbit As A Protocol UART

5. Pin Assignments and Functions

5.1 Package Schematic and Pinout
5.2 Package Mechanical Dimensions
5.2.1 Ball Grid Array Pinout
5.3 Rabbit Pin Descriptions
5.4 Bus Timing
5.5 Description of Pins with Alternate Functions
5.6 DC Characteristics
5.6.1 3.3 Volts
5.7 I/O Buffer Sourcing and Sinking Limit

6. Rabbit Internal I/O Registers

6.1 Default Values for all the Peripheral Control Registers

7. Miscellaneous Functions

7.1 Rabbit Oscillators and Clocks
7.2 Clock Doubler
7.3 Clock Spectrum Spreader
7.4 Chip Select Options for Low Power
7.5 Output Pins CLK, STATUS, /WDTOUT, /BUFEN
7.6 Time/Date Clock (Real-Time Clock)
7.7 Watchdog Timer
7.8 System Reset
7.9 Rabbit Interrupt Structure
7.9.1 External Interrupts
7.9.2 Interrupt Vectors: INT0 - EIR,00h/INT1 - EIR,08h
7.10 Bootstrap Operation
7.11 Pulse Width Modulator
7.12 Input Capture
7.13 Quadrature Decoder

8. Memory Interface and Mapping

8.1 Interface for Static Memory Chips
8.2 Memory Mapping Overview
8.3 Memory-Mapping Unit
8.4 Memory Interface Unit
8.5 Memory Bank Control Registers
8.5.1 Optional A16, A19 Inversions by Segment (/CS1 Enable)
8.6 Allocation of Extended Code and Data
8.7 Instruction and Data Space Support
8.8 How the Compiler Compiles to Memory

9. Parallel Ports

9.1 Parallel Port A
9.2 Parallel Port B
9.3 Parallel Port C
9.4 Parallel Port D
9.5 Parallel Port E
9.6 Parallel Port F
9.7 Parallel Port G

10. I/O Bank Control Registers

11. Timers

11.1 Timer A
11.1.1 Timer A I/O Registers
11.1.2 Practical Use of Timer A
11.2 Timer B
11.2.1 Using Timer B

12. Rabbit Serial Ports

12.1 Serial Port Register Layout
12.2 Serial Port Registers
12.3 Serial Port Interrupt
12.4 Transmit Serial Data Timing
12.5 Receive Serial Data Timing
12.6 Clocked Serial Ports
12.7 Clocked Serial Timing
12.7.1 Clocked Serial Timing With Internal Clock
12.7.2 Clocked Serial Timing with External Clock
12.8 Synchronous Communications on Ports E and F
12.9 Serial Port Software Suggestions
12.9.1 Controlling an RS-485 Driver and Receiver
12.9.2 Transmitting Dummy Characters
12.9.3 Transmitting and Detecting a Break
12.9.4 Using A Serial Port to Generate a Periodic Interrupt
12.9.5 Extra Stop Bits, Sending Parity, 9th Bit Communication Schemes
12.9.6 Parity, Extra Stop Bits with 7-Data-Bit Characters
12.9.7 Parity, Extra Stop Bits with 8-Data-Bit Characters
12.9.8 Supporting 9th Bit Communication Protocols
12.9.9 Rabbit-Only Master/Slave Protocol
12.9.10 Data Framing/Modbus

13. Rabbit 3000 Clocks

13.1 Low-Power Design

14. Rabbit Slave Port

14.1 Hardware Design of Slave Port Interconnection
14.2 Slave Port Registers
14.3 Applications and Communications Protocols for Slaves
14.3.1 Slave Applications
14.3.2 Master-Slave Messaging Protocol

15. EMI Control

15.1 Power Supply Connections and Board Layout
15.1.1 Noise Generated in the I/O Ring
15.2 Using the Clock Spectrum Spreader

16. AC Timing Specifications

16.1 Memory Access Time
16.2 Further Discussion of Bus and Clock Timing
16.3 Power and Current Consumption
16.4 Current Consumption Mechanisms
16.5 Sleepy Mode Current Consumption
16.6 Memory Current Consumption
16.7 Battery-Backed Clock Current Consumption
16.8 Reduced-Power External Main Oscillator

17. Rabbit BIOS and Virtual Driver

17.1 The BIOS
17.1.1 BIOS Services
17.1.2 BIOS Assumptions
17.2 Virtual Driver
17.2.1 Periodic Interrupt
17.2.2 Watchdog Timer Support

18. Other Rabbit Software

18.1 Power Management Support
18.2 Reading and Writing I/O Registers
18.2.1 Using Assembly Language
18.2.2 Using Library Functions
18.3 Shadow Registers
18.3.1 Updating Shadow Registers
18.3.2 Interrupt While Updating Registers
18.3.3 Write-only Registers Without Shadow Registers
18.4 Timer and Clock Usage

19. Rabbit Instructions

19.1 Load Immediate Data
19.2 Load & Store to Immediate Address
19.3 8-bit Indexed Load and Store
19.4 16-bit Indexed Loads and Stores
19.5 16-bit Load and Store 20-bit Address
19.6 Register to Register Moves
19.7 Exchange Instructions
19.8 Stack Manipulation Instructions
19.9 16-bit Arithmetic and Logical Ops
19.10 8-bit Arithmetic and Logical Ops
19.11 8-bit Bit Set, Reset and Test
19.12 8-bit Increment and Decrement
19.13 8-bit Fast A register Operations
19.14 8-bit Shifts and Rotates
19.15 Instruction Prefixes
19.16 Block Move Instructions
19.17 Control Instructions - Jumps and Calls
19.18 Miscellaneous Instructions
19.19 Privileged Instructions

20. Differences Rabbit vs. Z80/Z180 Instructions

21. Instructions in Alphabetical Order With Binary Encoding

Appendix A.

A.1 The Rabbit Programming Port
A.2 Use of the Programming Port as a Diagnostic/Setup Port
A.3 Alternate Programming Port
A.4 Suggested Rabbit Crystal Frequencies

Legal Notice