我正在实现一个代码,该代码通过数字 IO 为步进驱动器创建脉冲输出。但是我注意到当有一个“杂散”程序运行时(即防病毒程序),输出(占空比)将变得不一致。有没有办法将该线程分配给多核 CPU 中的 1 个单个 CPU,以便其他程序甚至 Windows 管理的程序都无法将线程分配给该 CPU?我正在使用 C# 进行编程。
答案1
唯一的方法是枚举系统中的所有其他进程,并设置其关联掩码以排除您尝试为线程节省的 CPU。您还必须继续这样做,因为随时可能会创建其他进程。
更好的方法是简单地在“实时”优先级类中运行您的进程,然后将线程优先级设置为“时间关键”。 (我希望它实际上不必占总时间的太高百分比。)
但是,中断处理程序和 DPC 例程仍然能够干扰您的线程。
您真正的问题是 Windows 并不适用于具有“硬”实时要求的任务,您的问题听起来就是这样。
我建议使用专用于产生步进电机所需的可变占空比脉冲的微控制器。
步进电机需要的频率和占空比范围是多少?也许还有其他方法可以解决您的问题。