This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP-EXP430FR2433: 1.21 volts at a Digital I/O pin does not set a flag

Part Number: MSP-EXP430FR2433

I've got a behavior at a Digital I/O pin which I don't understand. It's within the context of an RC circuit which is filtering a switch connected to the pin. A resistor is in between the pin and the switch, and the other side of the switch is grounded. The capacitor is across the switch. I'm experimenting with different RC values.

I've configured a port channel to produce a high signal at P1OUT that is looped back to P1IN, so that when a switch at the pin is closed, it pulls the voltage down to set an IFG. It works, but only when the circuit uses resisters less than 47 Ohms, such as 22 and 10 Ohms. Even when I remove the capacitors, the channel does not sense a change with a 47 ohm resistor between it and the switch.

With the switch open, 3.2 volts are measured at the pin. When no resistor is installed, a closed switch pulls the voltage down to a few millivolts and sets a flag. When a 10 ohm resistor is installed, a closed switch pulls the voltage down to .25 volts and sets a flag. When a 22 ohm resistor is installed, a closed switch pulls the voltage down to .545 volts and sets a flag. When a 47 ohm resistor is installed, a closed switch pulls the voltage down to 1.21 volts but does not set a flag. The channel does not sense a change with 47 ohm, but I think it should.

Since the threshold where the falling voltage is guaranteed to be recognized by the Schmitt trigger is 1.65 volts, the 47 ohm resistor that pulls the voltage down to 1.21 volts does fall through the threshold and should set a flag, but it doesn't.

Can somebody tell me why?

  • Hi,

    Can you upload a picture of your schematic? I'm not quite understand.

    Please be aware that the minimum Negative-going input threshold voltage (VT-) is 0.75V when VCC=3V. Please refere to 5.11.4 Digital I/Os in MSP430FR2433 Mixed-Signal Microcontroller datasheet (Rev. F) https://www.ti.com/lit/gpn/MSP430FR2433 for more inforation.

    Here is an Application Report of the Schmitt Triggers. Page 2 expain the multiple limits related to the Schmitt trigger inputs.

    www.ti.com/.../scea046

    Thanks!

  • Please be aware that the minimum Negative-going input threshold voltage (VT-) is 0.75V when VCC=3V.

    But the maximum negative going threshold, when Vcc is 3 V, is 1.65 V. And on page 2, SCEA046 also says "On the falling edge the part will be guaranteed to switch between (Vt– max) and (Vt– min)." For this microcontroller that is between 1.65 and 0.75.

    I'm very familiar with both of those documents.

  • So many questions. First how do you loop P1OUT back to P1IN? P1IN is always going to reflect the state of the pin even when it is configured as an output.

    It appears from your description that you have set up the pin as an output and are using a switch to pull it to ground. So long as the resistance is low enough you will get a logic low but this is very hard on the output driver and is a bad idea.

    The more traditional way would have the pin set as an input with a pullup resistor to Vcc. Either the internal one or external if it doesn't meet your requirements. This has the advantage of requiring much less current.

    The threshold could be anywhere in the range of 0.75V to 1.65V so just because you pull it below the higher of the two does not mean that it will detect it. You may have to go below the lower value. It all depends on the particular part and operating conditions.

  • First how do you loop P1OUT back to P1IN?
    set up the pin as an output and are using a switch to pull it to ground.

    You are correct.

    but this is very hard on the output driver and is a bad idea

    But it's buffered, so I don't know why it's a bad idea. Please tell me why.

    As for 

    The threshold could be anywhere in the range of 0.75V to 1.65V so just because you pull it below the higher of the two does not mean that it will detect it

    On page 2 of SCEA046 says that it is "guaranteed" to switch.

    Although I haven't examined the FR2433's thresholds, I have done it for another MCU with Vcc at 1.8, 2.5, 3,and 3.6. On that other MCU, those threshold bands do perfectly comply with the data sheet. Both on the upward and downward thresholds. That's sixteen points which I verified.

    It's odd to me. It should work.

  • I'm not drawing more than plus or minus 48 mA across all outputs. Not even near it.

  • The output is a CMOS inverter so when the output is high, a PMOS transistor is turned on and providing power. It is not designed to have its output shorted to ground. Doing that will pull excess current. Not only will this apply excessive stress to the transistor but also to the internal power distribution. Pulling internal Vcc nodes below what you expect and effecting their operation.

    The output buffer may not fail but this is a really bad idea!

    Configure the pin as an input and enable the pullup resistor. It will cost you nothing and is guaranteed to work better with lower power.

  • You have made a very good argument for the pullup technique. It sounds very convincing. You're pointing out a weakness and potential reliability issue which is not mentioned in any documentation that I know of.

    You have probably noticed that the kits your company makes and sells use the pulldown technique for over a decade. They are pulling the channel down to ground. That is where I got the idea. The port circuit designers know they have the IN and OUT directly connected to each other. Why is there no warning about using that technique in the data sheet, other than keeping the total current within plus or minus 45 mA across all ports. And the data sheet implies that we can use the channel for both techniques. It doesn't make any sense because your view, the board designer view, and maybe the data sheet too, contradict each other. I would like to hear the argument for why your kit designers use that technique.

    I'm not saying your wrong. You may have caught something many of us don't know about.

    I'm now facing a more complicated design solution because of those contradictions, or maybe not. I got to examine this.

    We're a bit off track. Why isn't this chip setting a flag when a falling voltage crosses 1.21 volts when the threshold is 1.65? That's what I'm worried about.

  • It ain't my company as I have never worked for TI. I have just been using microprocessors since the 70's.

    Many micro-controller have per pin current limits shown in their data sheets. I do not know why this is not included in the MSP430 data sheets. But shorting an output to either voltage rail is very bad design practice no matter what device you use.

    The solution isn't more complicated. Configure the pin as an input, enable a pullup resistor, that is it. I do this all the time and it works. It is how TI does it. You don't even have to change your hardware design. Except maybe the capacitor if the time constant is too long.

    The threshold is not 1.65V. It is somewhere in the range of 0.75V and 1.65V. The data sheet lists a minimum and maximum so that you know the threshold is somewhere in that range. It is not at the maximum. (Keeping in mind that the threshold is very likely altered by your abuse of the output FET.)

  • Hi,

    I found some information about per pin current limits. In 5.11.4.1 Typical Characteristics – Outputs at 3 V and 2 V of the FR2433 datasheet, it contain the current limit information connotative. For FR2433, the output voltage go to VCC/2 when output current close to 20ma.

    I hope that helps.

    Thanks!

  • Gosh David. I owe you an apology. I thought you worked for TI. Sorry.

    Now I understand your point of view. It's one who is independent of TI.

  • Hi,

    If you use a buffer and the current is less than the buffer's limit, it should work fine. I think Thomas mean you should avoid sink or source large current from MCU's pin. It can accidently damage the device, or worsen the on chip analog device's performance.

    Here is an example: assume you have 3 device. They can have different threshold. A may negative going when Vin=1.65V ,but B at 1V and C at 0.8V.

    For precise application, it is suggest to use comparer. Many MSP device contain on-chip comparer which can simplify your design, like MSP430FR2475. You can find more in below website, just click Comparator channels (#) at the bottom left of the page and input the desire channel count.

    https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/msp430-micrcontrollers/products.html

    Thanks!

      

  • Dingmin and David:

    Thanks for your help, but I solved the problem on my own. Dingmin, you were very close to the answer, and David, I liked your advice. As for the problem, I was reading my old notes and the data sheet incorrectly. I was just simply tired.

  • Just to wrap up this matter, testing this MCU shows that at 3 Vcc the VT- is 0.932 V. That is within the published range of .75 to 1.56, but too low for an RC time constant which depends on 47 Ohms.

**Attention** This is a public forum