668-0003-C Rabbit Semiconductor, 668-0003-C Datasheet - Page 136

no-image

668-0003-C

Manufacturer Part Number
668-0003-C
Description
IC CPU RABBIT2000 30MHZ 100PQFP
Manufacturer
Rabbit Semiconductor
Datasheet

Specifications of 668-0003-C

Rohs Status
RoHS non-compliant
Processor Type
Rabbit 2000 8-Bit
Speed
30MHz
Voltage
2.7V, 3V, 3.3V, 5V
Mounting Type
Surface Mount
Package / Case
100-MQFP, 100-PQFP
Features
-
Other names
316-1004
668-0003

Available stocks

Company
Part Number
Manufacturer
Quantity
Price
Part Number:
668-0003-C
Manufacturer:
Rabbit Semiconductor
Quantity:
10 000
an exception to be aware of when a serial port has to operate at an extremely high speed. At
115,200 bps, the highest speed of a PC serial port, the interrupts must be serviced in 10 baud
times, or 86 µs, in order not to lose the received characters. If all four serial ports were operat-
ing at this receive speed, it would be necessary to service the interrupt in less than 21.5 µs to
assure no lost characters. In addition, the time taken by other interrupts of equal or higher
priority would have to be considered. A receiver service routine might appear as follows
below. The byte at
essary to save and increment this byte because characters could be handled out of order if
two receiver interrupts take place in quick succession.
This routine gets the interrupts turned on in about 68 clocks or 3.5 µs at a clock speed of
20 MHz. Although two characters may be handled out of order, this will be invisible to a
higher level routine checking the status of the input buffer because all the interrupts will
be completed before the higher level routine can perform a check on the buffer status.
A typical way to organize the buffers is to have an in-pointer and an out-pointer that incre-
ment through the addresses in the data buffer in a circular manner. The interrupt routine
manipulates the in-pointer and the higher level routine manipulates the out-pointer. If the in-
pointer equals the out-pointer, the buffer is considered full. If the out-pointer plus 1 equals
the in-pointer, the buffer is empty. All increments are done in a circular fashion, most easily
accomplished by making the buffer a power of two in length, then anding a mask after the
increment. The actual memory address is the pointer plus a buffer base address.
130
receive:
PUSH HL
PUSH DE
LD HL,STRUCT
LD A,(HL)
LD E,A
INC HL
CMP A,(HL)
JR Z,roverrun
INC A
AND A,MASK
DEC HL
LD (HL),A
IOI LD A,(SCDR) ; 11 get data register port C, clears interrupt request
IPRES
; 68 clocks to here
; to level before interrupt took place
; more interrupts could now take place,
; but receiver data is in registers
; now handle the rest of the receiver interrupt routine
LD HL,BUFBASE
LD D,0
ADD HL,DE
LD (HL),A
POP DE
POP HL
POP AF
RET
; 117 clocks to here
bufptr
; 10 save hl
; 10 save de
; 6
; 5 getin-pointer
; 2 save in pointer in e
; 2 point to out-pointer
; 5 see if in-pointer=out-pointer (buffer full)
; 5 go fix up receiver over run
; 2 incement the in pointer
; 4 mask such as 11110000 if 16 buffer locs
; 2
; 6 update the in pointer
; 4 restore the interrupt priority
; 6
; 6
; 2 location to store data
;
;7
; 7
; 7
; 8 from interrupt
6 put away the data byte
is used to address the buffer where data bits are stored. It is nec-
Rabbit 2000 Microprocessor User’s Manual

Related parts for 668-0003-C