我用的是msp430F149,在线仿真状态,用示波器可以看到传感器时钟信号与数据信号(24位)同步,我就用时钟信号触发P1口中断,同时读取数据信号所接端口的输入寄存器,这样一位一位读入
unsigned int W1CTL=0x18;
unsigned long W1DATA1_1=0x0000;
unsigned long W1DATA1=0x0000;
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1IE=0x02;
_EINT();
for(;;)
{
_BIS_SR(LPM3_bits);
_NOP();
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
_DINT();
if((P1IFG&0x02)==0X02)
{
P1IFG&=~0XFF;
if((P1IN & 0x08)==0x08)
{
W1DATA1_1*=0x02;
W1DATA1_1|=0x01;
}
else
{
W1DATA1_1*=0x02;
W1DATA1_1&=~0x01;
}
W1CTL--;
if(W1CTL==0)
{
W1DATA1=W1DATA1_1;
W1DATA1_1=0X0000;
W1CTL=0x18;
}
}
_EINT();
}
这样读取的数据与真实数据有较大的出入,不知道什么地方疏忽了,请各位大侠指点
谢谢了
请教一下,关于端口的初始化,是否只要把端口设置为输入状态(上升沿触发),再开中断就行了
80khz的电平脉冲,高电平+4.5v,低电平0v,已用电平转换芯片转至+3.0v,并且对于时钟信号有中断响应,只是读取的数据信号不对,不清楚怎么回事,谢谢!!!
请教一下,关于这种数字脉冲的数据采集,有什么好的方法吗,感觉用P1IN寄存器不太稳定
谢谢了