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.

[参考译文] CC2541测量方波的时间(计时器与放大器;中断)

Guru**** 2553260 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/578536/cc2541-measure-time-of-square-wave-timer-interupt

主题中讨论的其他器件:CC2541

我正在使用 SimplerPeripheral、并使用事件 A 来触发超声波传感器。

CC2541成功触发超声波感应器、然后超声波感应器 将方波从其回波引脚返回到 CC2541的 I/O

我将 P0_2设置为输入引脚以获取方波、并使用外部中断(上升沿和下降沿)和 Timer1计算方波的时间

此外、还有另一个事件 B、用于从 MPU9250获取原始数据、我还需要使用具有不同分辨率的 Timer1

事件 B 工作正常、但 事件 A 中的"超极板"错误(我使用示波器测量方波的宽度、这是正确的。)

获取正确数据的正确方法是什么? 谢谢!!!

这是我的配置:

void SimpleBLEPeripheral_Init( uint8 task_id )
{
//默认设置...


//超声波三角引脚
P2DIR |= 0x02;
P2_1 = 1;//输出引脚
//超声波回显引脚
P0DIR &=~0x04;
P0SEL &=~0x04;
//P0_2中断设置
IEN1 |= 0x20;
P0IEN |= 0x04;//p0_2
P0IFG &=~0x00;P0&=
0x00

;PICTCON ~1 &= 0x00;P0;PICT0 &= 0x01 ~
//计时器设置
T1CTL = 0x09;//32MHz 分频器,计时器计数= 0xFFFF;
T1IE = 0;


}

uint16 SimpleBLEPeripheral_ProcessEvent (uint8 task_id、uint16 events)
{
if (Events & TRIGESONIC_EVT)
{
T1CTL = 0x05;//更改分辨率
PICTL &=~0x01;//上升沿

triggerUltrasonic ();//triangle

超开孔=(浮点) ult_end/4000.0f;

T1CTL = 0x09;

IMUProfile_SetParameter (未决定、sizeof (超极光)、和超极光);

返回(事件^ TRIGGLESONIC_EVT);
}
#pragma


vector = P0INT_vector
_中断 void P0INT (void)
{

P0IFG = 0;
P0IF = 0;
PICTL ^= 0x01;

if ((P0IFG & 0x04)= 4)
{
if (PICTL & 0x01 = 1)
{
ult_end = T1CNTL;
ult_end |= T1CNT<<8;

P0_4 ^= 1;
}
其他
{
T1CNTH = 0;
T1CNTL = 0;

P0_5 ^= 1;
} 

 超音速传感器

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

    事件 B 有多糟糕、您能量化吗? 您如何处理事件 A 和事件 B 的切换分辨率?

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

    估计的宽度值是固定的。

    2.我使用寄存器 T1CTL 来控制活动时钟边沿

    谢谢!!