我通过io中断获取到了状态,然后讲当前io状态复制给另外一个io口 ,发现他们的之间的不同步 ,我就在一个进程的while里面都还没有延时的 。读取了状态就直接设置一样的状态给另外一个io.
当频率达到50Khz的时候误差很大了 各位大佬有什么建议优化下吗
离线
是在应用程序里面操作吗?
我就在应用程序里面 主要是下面这代码 而且我是放在while里面都没有加延时
if(ioctl(PrintfFd,HELL3_READ,&s_stdata) < 0)
{
close(PrintfFd);
PrintfFd = -1;
printf(" PrintfFd ioctl error\n");
}
//printf("s_stdata.buff[0]:%d\n",s_stdata.buff[0]);
s_stdata1.buff[0] = s_stdata.buff[0];
s_stdata1.buff[1] = 0;
if(ioctl(PRINTFIO_FD,HELLO_WRITE,&s_stdata1)< 0)
{
close(PRINTFIO_FD);
PRINTFIO_FD = -1;
printf(" PRINTFIO_FD ioctl error\n");
};
离线
50khz这么高频的嘛,周期是20us,全部在驱动里面操作试一试看,如果还不行就降低频率。
目前在中断里面计数 发现频率不到50KHz 哪怕是20Khz 的脉冲 ,都会有不进入中断的响应 就是如何提高进入中断的响应速度哦
离线