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.

[参考译文] CCS/MSP430FR6043:从 ISR 调用 I2C 函数时失败

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/890744/ccs-msp430fr6043-i2c-function-failed-when-called-from-an-isr

器件型号:MSP430FR6043

工具/软件:Code Composer Studio

您好!

从 ISR 调用 I2C 函数时遇到问题。

I2C_WRITE_BYTE ()、I2C_READ_BYTE ()。  函数在主循环中100%正常工作、但在 ISR 中不正常工作

它始终在无限循环处挂起。

I2C 中断不用于 I2C_WRITE_BYTE ()、I2C_READ_BYTE ()操作。

所以问题是只有 I2C_WRITE_BYTE ()、I2C_READ_BYTE ()被放置在 ISR 中

#pragma vector=Port1_vector
_interrupt void port1_ISR_handler (void)

char Rx_value=0;
if (P1IFG 和 BIT1)

if (P1IES & BIT1)

I2C_WRITE_BYTE (0x0020、bbf);
RX_Value=I2C_READ_BYTE (0x0020);



P1IFG = 0;//清除所有 P1中断标志

任何相关人员请尽快回复、

提前感谢

Prakash

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

    这是一个已知的限制。

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

    您好、Parkash、

    我不建议您在 ISR 中等待 I2C 响应。  

    此致、

    现金 Hao

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

    您好!

    感谢您的回复。

    为什么 I2C 函数在 ISR 中不起作用?

    是否有任何解决方案可用于此目的?

    Prakash  

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

    您好 Prakash、

    我想您可以在 ISR 中调用 I2C_WRITE_BYTE 函数。 您可以在 主循环或 I2C ISR 中调用 I2C_READ_BYTE。

    此致、

    现金 Hao