Shop OBEX P1 Docs P2 Docs Learn Events
Stuck I/O Pin on Propeller Protoboard — Parallax Forums

Stuck I/O Pin on Propeller Protoboard

coryco2coryco2 Posts: 107
edited 2012-01-13 02:57 in Propeller 1
I recently built a project on a Propeller Protoboard as a more permanent version of a breadboard circuit. Part of the circuit was connecting a transistor to one of the Prop I/O pins for use in controlling the backlight of a display. The circuit worked fine on the breadboard, but on the Protoboard, the transistor--or more accurately, the Prop I/O pin seems "stuck" on. But otherwise, the cicuit seems to work fine. I've tried reprogramming the Prop board several times, and even replaced the transistor, but to no avail. I am left to conclude that I somehow damaged that one I/O pin on the Propeller, or that is some other way got "stuck" high. Does anyone have an theories on what happened here, and how to avoid it in the future?

Comments

  • T ChapT Chap Posts: 4,224
    edited 2012-01-11 18:20
    Have you tested the output on the Prop without the transistor in the circuit? Can you post the code you are using to test with? Does the pin contain a pullup or pulldown resistor to hold the transistor to a state when the Prop is booting up and in an input state? Does the pin become low during the bootup phase then turn high after boot? A photo of the transistor connected to the Prop with a schematic might be helpful.
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2012-01-11 18:28
    It may be a software problem as each cog has it's own I/O registers and the outputs are OR'ed between the cogs. If you load a dummy "null" program into the Prop and the output is still high then it's a hardware problem. I hope you had a resistor from the I/O pin to the transistor.

    Here's a tip for checking I/O pins (any pins) using the diode range on your multimeter. With the board powered off and the positive probe connected to ground you should be able to probe the I/O pins and get very similar readings from each I/O pin, usually around 420mv or so but the exact figure is unimportant. You will know when you come across a damaged pin because it will either be open-circuit (max reading) or the reading will be out by hundreds of millivolts. Reverse the probes by putting the negative probe onto Vdd and checking the sourcing side as well. What's good about this method is that it will detect pins that are damaged but still working, maybe only just. The caveat of course is to take into account what may be connected to the pin.

    BTW, you told a good story but only from your viewpoint, you have left out vital information that would be necessary for others to attempt to deduce what may be happening.
  • coryco2coryco2 Posts: 107
    edited 2012-01-12 17:30
    Thanks for the feedback. I suppose this may get me some razzing for being a simpleton, but no, I didn't use a resistor; just connected the base of an NPN 2N3904 to the I/O pin, the emitter to Vss and the collector to the display. (It seemed to work without any issues on the breadboard version.) What would you suggest? A 100-ohm resistor in series? If you can point me to any documentation/circuit diagrams of the "right" way to do this sort of interface, it'd be much appreciated.

    As to the code I'm using, it's nothing fancy:

    DIRA[8]~~
    OUTA[8]~~

    ...to turn it on, and

    !OUTA[8]

    ...to turn it off. This code functioned as desired on the breadboard version, so I don't think it is the problem.

    The multimeter diode test shows the same readings on the pin in question as on the other pins in both polarities, though my autoranging digital VOM shows ohms for that test, not mv (would this still indicate a good circuit?). On bootup, the pin does in fact go low but then goes high and stays there. I detached the transistor; the behavior is the same.

    I would try a "null" program, except now the Prop Tool no longer can see the Propeller! It's the USB version of the board, and the little LED's blink at first when it's plugged into a USB port, but then no joy. The Propeller isn't dead, though--it is still running the original code. I can see it on the display. I just can't change it. Sigh... :-(
  • Mark_TMark_T Posts: 1,981
    edited 2012-01-13 02:57
    You've effectively shorted the pin to ground (base-emitter junction forward biased) and pulled more current from it than it is rated to take (40mA _absolute max_)

    If say you want to limit the current to 20mA, then a 150ohm resistor would do it - anything less than 100 ohms is too low for comfort.
Sign In or Register to comment.