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.

[参考译文] MSP430F5529:GPIO 中断的不稳定行为、即在没有信号的情况下触发中断

Guru**** 2386620 points
Other Parts Discussed in Thread: MSP430F5529, ULN2004A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/687943/msp430f5529-erratic-behavior-of-gpio-interrupt-i-e-interrupt-is-fired-without-the-presence-of-signal

器件型号:MSP430F5529
主题中讨论的其他器件: ULN2004A

大家好、

我正在使用 msp430f5529 LP & sim800模块进行一个项目。  LP 的 UART 连接到 sim800模块的 UART、两者使用 AT 命令进行通信。 除了这2个电容式触控按钮外、还连接到 LaunchPad。 触控按钮连接到的引脚启用中断。  上述所有器件均由 LaunchPad 供电、LaunchPad 通过笔记本电脑的 USB 端口供电。

LaunchPad 连接到光耦合器(4N35)、后者连接到膜片泵。  

根据触控按钮的输入、泵打开、并使用 HTTP 请求将数据传输到服务器。

问题如下

1) 1)每当电机打开时、所有中断都会自动触发

2) 2)我无法通过软件清除中断标志

3) 3)程序卡在 ISR 内部

我的一些观察结果是

1) 1)如果输入引脚未连接到任何引脚、并且让我们释放该问题、则不会发生

我在  Ubuntu 14.04中使用 Code Composer Studio V 6.2

如果需要、我将更新代码

P.S -我已经尝试通过直流适配器(5V、1.5A)连接 launchpad

电机电源通过12V 直流适配器单独提供、而微控制器和 sim800模块则单独供电

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果触摸按钮触发中断、但您没有打开电机、您是否仍然看到此问题? 还是仅在电机开启时才会发生?

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nathan、

    它仅在我打开或关闭电机时发生。
    触摸按钮不会产生任何此类问题、我正在使用它来触发 HTTP 请求、它工作正常、没有任何问题。

    同时、我也无法清除中断标志。

    PS -我注意到的另一件事是、在我为 MSP430和电机设置供电的插座旁边有2到3个壁式插座。 如果有任何东西连接到这些插座并打开或关闭、则会导致电机自动开启。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您似乎需要更多旁路。 控制器和电机是否使用相同的电源?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、控制器和电机使用不同的电源。

    我怀疑有同样的问题、并将电机与控制器隔离。 控制器的输出连接到光耦合器(4N35)、光耦合器的输出连接到 ULN2004A 到电机的继电器。
    电机的电源由12V 墙上适配器提供。 LaunchPad 和 sim800模块由单独的5V 墙上适配器供电。

    我将制作一个简单的原理图并上传以供参考
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经做了一些测试并进行了一些更新、我正在连接电路原理图。 我已将相同的代码上传到另一个 Launchpad、同样的问题也在继续。

    1) 1)如果电机与继电器断开连接、则程序运行良好、不会出现任何问题。 一旦电机被连接、中断开始重复触发并且程序卡在 ISR 中。

    将电机连接到控制器是否有任何特定的方法、或者我将电机连接到控制器的方式是否有任何错误?

    如果有人能向我指出我所犯的错误、那将会很有帮助。

    原理图-

    使用继电器-

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否发布初始化代码、尤其是连接到电机的 GPIO? 这可能有助于确定问题。

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请在下面找到初始化代码

    /******** 初始化未使用的端口**** /
    
    P1DIR &= 0x00;
    P1REN &= 0x00;
    P1OUT &= 0x00;
    
    P3DIR &= 0x00;
    P3REN &= 0x00;
    P3OUT &= 0x00;
    
    P4DIR &= 0x00;
    P4REN &= 0x00;
    P4OUT &= 0x00;
    
    P5DIR &= 0x00;
    P5REN &= 0x00;
    P5OUT &= 0x00;
    
    P6DIR &= 0x00;
    P6REN &= 0x00;
    P6OUT &= 0x00;
    
    P7DIR &= 0x00;
    P7REN &= 0x00;
    P7OUT &= 0x00;
    
    P8DIR &= 0x00;
    P8REN &= 0x00;
    P8OUT &= 0x00;
    
    /********* 结束********* /
    
    /******** 传感器输入和输出的端口1配置************* /
    
    P2OUT &= 0x00;
    P2DIR &= 0x00;
    P2REN |= 0x1C;
    P2OUT &= 0x00;
    P2IES &= 0x00;
    P2IFG &= 0x00;
    //P2IE |= 0x1C;
    //P2OUT |= 0x00;
    
    /********* 产出 /
    // 4.1 -电机/ 4.2、4.3 -始终为高电平
    
    P4OUT &= 0x00;
    P4DIR |= 0x0E;
    P4DS |= 0x0E;
    P4OUT |= 0x0C;
    
    /********* 结束********* /
    
    //******** UART 配置******** //
    P3SEL |= BIT3+BIT4; // P3.4、5 = USCI_A0 TXD/RXD
    UCA0CTL1 |= UCSWRST; //**将状态机置于重置中**
    UCA0CTL1 |= UCSSEL_2; // SMCLK
    UCA0BR0=6; // 1MHz 9600 (请参阅用户指南)
    UCA0BR1=0; // 1MHz 9600
    UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16;//模块化 UCBRSx=0、UCBRFx=0、
    //过采样
    UCA0IFG &=~UCRXIFG +~UCTXIFG;
    UCA0CTL1 &=~UCSWRST; //**初始化 USCI 状态机**
    UCA0IE |= UCRXIE; //启用 USCI_A0 RX 中断
    
    /********* 结束********* /
    
    P2IFG &= 0x00;
    P2IE |= 0x04;
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    触发了哪些中断? 它们对应于什么 GPIO? 在您的原理图中、到 MSP430的唯一连接是引脚4.2、这是一个输出。

    此致、
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我在您的 schem 上看不到用于继电器线圈的反激式二极管。
    如果没有该二极管、您会在 GND 和+5V 线路上分散大量火花。
    请添加该二极管并提供反馈。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    欢迎来到 EMI 世界。
    要设计能够承受此类干扰的电路、您需要:
    *过滤电源并尽可能屏蔽您的控制电路。 光耦合器是一个良好的开端。
    *将信号过滤到您的"可中断线路"。 请记住、任何 PCB 布线都只是接收电机噪声的天线。
    *使用正确的接地方案。

    那么、现在是什么会导致问题:
    * 7805输出端没有电源滤波。
    * MCU IO 处的长导线/PCB 迹线(良好的天线)。
    *在可中断的 IOS 上没有过滤。

    但愿这对您有所帮助。 祝你好运。 EMI 不是一件容易处理的事情、但在仔细考虑的情况下、您可以将其消除。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mike、

    什么是 TI MVP?
    提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我不是电机专家、但我非常确信您的泵具有有刷电机。
    电机刷在每次启动时都会经历电弧。
    可能可以在具有 LW/MW 范围的对讲机中听到您的泵启动声音。
    您可能需要为有刷电机寻找 EMI、RFI 抑制技术。
    您可能会使用 BLDC 电机解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我没有附上与上面输入部分相对应的原理图。 我一直在进行很多测试、我已经从系统中删除了除用于开启电机的输入之外的所有输入。 我在下面的另一份答复中附上了新的示意图和我的所有意见。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Mike Tooma">欢迎来到 EMI 世界。

    [/报价]

    这正是我所面临的问题,这实际上并不是很受欢迎的;)

    我已经做了很多测试、我将控制器的输入引脚连接到示波器、并监控了信号、我的一些观察结果是

    1) 1)每当电机运行时、GPIO 输入端都会出现大量尖峰

    2) 2)这种情况仅在跳线连接到控制器时发生、这使我意识到噪声是通过导线进入系统的。 我不知道噪声可以通过空气进行辐射。

    我修改了输入电路并添加了一个 RC 滤波器来过滤输入信号。 这已经解决了我的问题50%、但我仍然可以看到输入信号中的尖峰、这会导致输入频繁触发。

    我将连接输入电路原理图和示波器的一些原理图以供参考。

    对此仍有一些问题

    1) 1)我必须对滤波器电路进行哪些修改?

    2) 2)我是否应该添加 TVS 或 MOV 来抑制尖峰?

    3) 3)是否有任何应用报告或手册可供我参考、用于设计此类电路?

    输入电路原理图:所有其它输入都已从控制器中删除,以便进行测试。 此外、还添加了 RC 滤波器。 电容式触控模块只有一个按钮。

    屏幕截图1:部分尖峰达到15V、平均尖峰持续时间低于60us

    屏幕截图2:

    我还向7805稳压器的输入和输出添加了一个0.1uF 电容器。

    我在滤波器电路中需要做哪些修改?

    控制器通常采用哪些保护措施?

    我们非常感谢您的任何帮助。

    感谢您至今提出的所有建议。

    此致、

    Abiram

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的建议是:

    1. 如果可能、请使用屏蔽跳线并将屏蔽层接地。 这将保护您的信号线免受任何噪声的影响。
    2. 如果可能、请使用 π 型滤波器。 请参阅以下电路:

    我希望这将有所帮助。 不用担心、任何曾经设计过真实电路的人都面临着与您相同的问题。 我们都以前去过那里:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将屏蔽层连接到 MCU 侧的接地端。
    在两侧连接屏蔽层将只产生另一个天线。

    Mike、
    如果我错了、请更正我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢大家的支持、我解决了这个问题。 这是一次很棒的学习体验。