Home/Support/Support Forum/RCM6700 : Parallel ports A and B held high at bootup
Welcome to Digi Forum, where you can ask questions and receive answers from other members of the community.

RCM6700 : Parallel ports A and B held high at bootup

0 votes
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
asked Aug 22, 2014 in Rabbit by jlabbe_sstl New to the Community (0 points)

Please log in or register to answer this question.

2 Answers

0 votes
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.
answered Aug 22, 2014 by trooper2 Veteran of the Digi Community (589 points)
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
0 votes
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.

2) 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.
answered Nov 12, 2014 by trooper2 Veteran of the Digi Community (589 points)
...