Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Добавлено: 09 ноя 2012, 19:37
Есть такой интерфейс, kyestick называется...
Установка LinuxCNC EMC2 #14
Установка LinuxCNC EMC2 #14
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Код: Выделить всё
#include<conio.h>
#include<stdio.h>
/* lpt base 0x378
DR[7..0] = 9..2
*/
//-------------------------------------------------
int wait_3(unsigned int time_slep)
{ //wait end of counting and write next time
asm{ //
in al,61h
test al,00100000b
jz loop // loop, if OUT2=0
mov ax, time_slep //
out 42h, al // LSB time ---> counter timer-2
mov al, ah //
out 42h, al // MSB time ---> counter timer-2
};return(1); //bad
loop:asm{
in al,61h
test al,00100000b
jz loop // loop, if OUT2=0
mov ax, time_slep //
out 42h, al // LSB time ---> counter timer-2
mov al, ah //
out 42h, al // MSB time ---> counter timer-2
}return(0); //good
}
//--------------------------------------------------
char install_timer(void)
{char status_ppi;
//not save status 8254 count2. set regime timer and start counter.
asm{
mov al, 10110000b
out 43h,al // set timer-2 in mode 0
in al, 61h // read status PPI
mov status_ppi,al // keep status PPI
or al, 00000011b // set bit-1 ppi --> 1, sound yes
out 61h, al // set bit-0 PPI --> 1, gate open
mov al, 64 // start delay
out 42h, al // LSB time ---> counter timer-2
out 42h, al // MSB time ---> counter timer-2
}return(status_ppi);
}
//-----------------------------------------------------
void uninstall_timer(char status_ppi)
{
// not restore status 8254 count2.
asm{
mov al, status_ppi //
out 61h, al // restore PPI status
};
};
//----------------------------------------------------
int out_array (long int number)
//code return
{
unsigned long int l=0;
char j;
j=install_timer();
while (l<number)
{
wait_3(119); // 10 kiloHERZ ???
outportb(0x378,0xff); outportb(0x378,0xff); outportb(0x378,0x00); // step
l=l+1;
}
uninstall_timer(j);
return(0);
}
//----------------------------------
void main(void)
{
double dt= 0.838 ; // mkc tic 8254
printf(" Press any key to exit \n");
//cliar kb buffer
while(kbhit()) getche();
while(!kbhit()) out_array (100000); // 10 second
}Даж что то цветное естьNick писал(а):Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC:
Если там есть возможность в загрузчике дописать параметры для ядра, то надо просто добавить "runlevel 3".Nick писал(а):А можно как-нибудь запустить Linux с LiveCD в консольном режиме?
А после подтверждения: 5, 4, 3, 2, 1, 0Nick писал(а): Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
![]()
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
И что он кильнет все ненужные процессы?UAVpilot писал(а):Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить командуinit 3
UAVpilot писал(а):А после подтверждения: 5, 4, 3, 2, 1, 0
Да. Ну во всяком случае старый init с inittab так работал, а новый systemd я ещё как следует не изучил, но обещается, что он поддерживает старый формат управления.Nick писал(а):И что он кильнет все ненужные процессы?
Ты знаешь, все не так плохо. Станок останавливается, шпиндель выключается сразу по ESC. По Continue можно продолжить работу. Правда, если при этом фреза в материале, ни к чему хорошему не приведет - шпиндель не успеет раскрутиться.Nick писал(а):Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Да нет, Nick, осциллограф, похоже, не виноват. Импульс вполне достаточный - на него приходится около десятка отсчетов осциллографа.Nick писал(а):Test.c показал очень ровную частоту. Пропуск одного импульса в Общей картине - скорее всего погрешность осциллографа, длинна импульса в этой программе очень короткая.
У меня такая фигня тоже как-то раз была, когда с TurboCNC работал.Nick писал(а):ЗЫ сделал тест на TurboCNC, иногда вылазят странные артефакты, типо вот такого, сейчас еще раз буду пробовать...
Отчет будет позже.
скорее биос, я грузился с одной дискеты на разных компьютерах - результаты разные.495 писал(а):это похоже на аппаратные прерывания дос или биос
Может и поможет, только в реальной программе трудновато будет без прерываний.495 писал(а):лечится asm{cli} asm{sli}.
А что это такое?495 писал(а):asm{cli} asm{sli}