RCM6700 : Parallel ports A and B held high at bootup

Hi Team,

As said in the title, I’m using digital IOs from parallel ports A and B.
On applying power to the RCM6700, the output on these ports seem to be held high until the application software sets them to 0.
I’ve observed a duration of 3 seconds until they are set to 0.

Is there a way, hardware or software, to ensure that these are always held low at bootup?

Thanks for your help,

Jeremie

See the Rabbit 6000 user manual for details on how the parallel port A and B pins come out of reset.

Both port A and port B have pulldown resistors which can be set with the control registers. You can use the WrPortI() or BitWrPortI() functions to write to any internal registers.

There are many samples in Dynamic C of using those functions.

So I’ve tried to use
WrPortI(PA0CR, NULL, 0x02); //75Ohm pulldown resistor set

But after reboot, I can’t see any effect on the output.

Whenever powering the RCM6700 up, the lines are still held up until software comes in (and only then do the parallel port A lines come down)

Hi Jeremy,
Unfortunately, I can’t help you with the answer. But I try to write to parallel port A, by using:
WrPortI(PADR, NULL, 0x99);
And can’t see any result on pins.
How do you use it? Any preparation commands? Shadow register( as I understand, there is no need in PA). I’ll appreciate your help.

Thank you,
Eugene

Parallel Port A is configured byte-wise. That means that all ports are either inputs or outputs and there cannot be a combination. Port A is unique in this respect and the other ports can have inputs and outputs on the same port.

The WrPortI is used to write a value to a register and it needs three parameters.

WrPortI(SPCR, &SPCRShadow, 0x84);

Parameter 1 - The register you wish to change
Parameter 2 - The shadow register of the register you wish to change
Parameter 3 - The value to write to the register

With any Port except Port A, you could also use BitWrPortI to configure a single bit on the port. (Remember that Port A is configured byte-wise.)

BitWrPortI(PGDR, &PGDRShadow, 1, 0);

Parameter 1 - The register you wish to change
Parameter 2 - The shadow register of the register you wish to change
Parameter 3 - The value to write to the register
Parameter 4 - Which bit you wish to change

Questions:

  1. Does this mean that I cannot use any of the A ports as inputs?

This means you can use all the pins on Port A as inputs OR outputs, but not both.

  1. If I wanted to use pins on port B as well or another port as outputs, what is the equivalent line command like the above that configures port B or another port as output?

Port A looks a little funny because the register is named Slave Port Control Register (SPCR). The other ports use a “Data Direction Register” to set the direction of the data.