GordonS
07-14-2008, 08:10 AM
Hi,
I am trying to understand how/why I get odd voltages on some port-B pins.
Port-B.0 and Port-B.2 on an RCM3700 are set up as inputs to monitor the levels of various signals that are logically combined into the INT1 input. The signals have pull-down networks of 10k to ground and 1k in series, giving 11k to ground. There are also 10k->1n networks into an XOR forming an edge->pulse function. The effect is to detect changes on any of four inputs and generate an interrupt; detect the various input levels and drive some outputs as a consequence.
The problem is that Port-B.0 and Port-B.2 behave strangely. Occasionally and apparently when the inputs are released, Port-B.0 and Port-B.2 do not return to the <= 0.3V level I expect, but rather they drop only to 0.8V, which level usually causes the TTL-compatible CMOS edge-pulse generator to misbehave.
The strange voltages last typically less than two seconds before reverting to <= 0.3V. The debugger loses contact with the Rabbit, so debugging is difficult. Lower value pull-downs can circumvent the problem, but raise other operational issues. Setting the pins to outputs also stops the problem, but of course the unit then no longer functions as needed.
I have two other signals monitored on Port-D and they behave normally.
I have some evidence that Port-B.3 might also have gone to a funny voltage at some stage, though as this is normally an output the incidence if, fortunately, rare .. fortunately because this output results in a catastrophic failure. High or low are fine, 0.8V causes rapid meltdown of some MOSFETs, together with all the coloured flashes and smoke that that implies.
Does anyone have any understanding of what's going on here? I can't _find_ anything else touching the port, either in my software or in libraries I'm using.
Thanks.
I am trying to understand how/why I get odd voltages on some port-B pins.
Port-B.0 and Port-B.2 on an RCM3700 are set up as inputs to monitor the levels of various signals that are logically combined into the INT1 input. The signals have pull-down networks of 10k to ground and 1k in series, giving 11k to ground. There are also 10k->1n networks into an XOR forming an edge->pulse function. The effect is to detect changes on any of four inputs and generate an interrupt; detect the various input levels and drive some outputs as a consequence.
The problem is that Port-B.0 and Port-B.2 behave strangely. Occasionally and apparently when the inputs are released, Port-B.0 and Port-B.2 do not return to the <= 0.3V level I expect, but rather they drop only to 0.8V, which level usually causes the TTL-compatible CMOS edge-pulse generator to misbehave.
The strange voltages last typically less than two seconds before reverting to <= 0.3V. The debugger loses contact with the Rabbit, so debugging is difficult. Lower value pull-downs can circumvent the problem, but raise other operational issues. Setting the pins to outputs also stops the problem, but of course the unit then no longer functions as needed.
I have two other signals monitored on Port-D and they behave normally.
I have some evidence that Port-B.3 might also have gone to a funny voltage at some stage, though as this is normally an output the incidence if, fortunately, rare .. fortunately because this output results in a catastrophic failure. High or low are fine, 0.8V causes rapid meltdown of some MOSFETs, together with all the coloured flashes and smoke that that implies.
Does anyone have any understanding of what's going on here? I can't _find_ anything else touching the port, either in my software or in libraries I'm using.
Thanks.