Подключил логический анализатор к LPT и всё теперь понятно, проблема в алгоритме управления, он был такой:
Код
for(; i < 5; i++)
{
if(i == 1)
{
SetPortVal(0x378,1,1);
Sleep(valstep);
}
else
if(i == 2)
{
SetPortVal(0x378,2,1);
Sleep(valstep);
}
else
if(i == 3)
{
SetPortVal(0x378,4,1);
Sleep(valstep);
}
else
if(i == 4)
{
SetPortVal(0x378,8,1);
Sleep(valstep);
i = 0;
}
}
При таком алгоритме длительность импульсов рассыпалась, не понятно почему?
Сменил на такое:
Код
while(a)
{
SetPortVal(0x378,1,1);
Sleep(valstep);
SetPortVal(0x378,2,1);
Sleep(valstep);
SetPortVal(0x378,4,1);
Sleep(valstep);
SetPortVal(0x378,8,1);
Sleep(valstep);
}
Длительность импульсов стала ровной, но через какое то время то на 1 то на 2 то на 3 то на 4 выводах проскакивали импульсы длиннее чем нормальные, потом поставил LPT в режим SPP, и импульсы стали одинаковые по длительности.
В общем я решил что управлять ШД таким способом это одно мучение, лучше купить специализированный контроллер и управлять им с PC, а он пусть управляет ШД.
Посоветуйте микросхему для 4х фазника?