![]() |
|
TN228 |
|
A bug has been discovered in the Rabbit 3000 that results in a conflict between Parallel Port F and Parallel Port A under certain conditions. Since the bug is easy to avoid, the Rabbit 3000 masks will not be revised until a later time in case any further bugs are encountered.
The bug is rooted in an incomplete address decode for the data output register for Parallel Port A. This register responds to any of 16 addresses 30 to 3F (hex). When Parallel Port F was added, the addresses 38 to 3F were used and the decode for Parallel Port A was mistakenly not updated.
There are five registers in Parallel Port F at addresses in the range of 38 to 3F. Writing to any of these registers will also cause a write to the Parallel Port A output register, which is identical to the slave port number zero output register. If Parallel Port A is used as an input register or if the auxiliary I/O bus (which uses the pins of Parallel Port A as a data bus) is enabled, then the spurious write has no effect on operation because the Parallel Port A output register is not used. However if Parallel Port A is used as an output or is used as the bidirectional bus of the slave port, then writing to any of the Parallel Port F registers will cause a spurious write to the Parallel Port A register.
The functionality of the Parallel Port F pins for pulse width modulation outputs and serial clock outputs is not affected, except that the Parallel Port F function and direction registers should be set up before a conflicting function on Parallel Port A is in use, since writing to these registers also writes to the Port A output register.
Summary
- If you enable the auxiliary I/O bus, which uses Parallel Port A, then the bug does not manifest itself and you can use the full functionality of Parallel Port F.
- If you use Parallel Port A as inputs, then the bug does not manifest itself and the full functionality of Parallel Port F is available.
- If you use Parallel Port A as outputs, then you cannot use Parallel Port F pins as outputs too, except that you can use the PWM and clock outputs provided that you are aware that writing to the control registers of Parallel Port F will also write to the data output register of Parallel Port A. A simple way to resolve this is to leave Parallel Port A as an input until you complete the setup of Port F and then switch Parallel Port A to be an output. You can always use pins on Parallel Port F as inputs.
- If you enable the slave port then you cannot use Parallel Port F as parallel outputs, but you can still use the other output functions of Parallel Port F following the precautions regarding setup described above.
The easiest approach to avoid any problem when there is a conflict is to assign inputs and outputs in such a manner as to avoid the bug. Either Parallel Port A can be used as inputs, in which case Parallel Port F has full function, or if Parallel Port A cannot be used as inputs, use any pins on Parallel Port F not used for PWM or serial clock outputs as inputs and take the precaution of setting up Parallel Port F before the conflicting functionality of Parallel Port A is enabled.
| 022-0076 Rev. A | |
| Z-World http://www.zworld.com Voice: (530) 757-3737 FAX: (530) 757-3792 sales@zworld.com |
Rabbit Semiconductor http://www.rabbitsemiconductor.com Voice: (530) 757-8400 FAX: (530) 757-8402 sales@rabbitsemiconductor.com |