请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他器件: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;
}
}
超音速传感器