Разделы сайта

Охрана труда.

// Останов всех сервоприводов

{i;

for(i=0;i<fxPWM_CH_NUM;i++)[i] = currAng[i];

}

//----------------------------------------------------------

//

//----------------------------------------------------------main(void)

{addr, MY_ADDR, U1, U2, a1, a2;char num, angle;i;_485Init();();_CH_NUM = 6;

USART_Init(BR57600);

// Установить в начальное положение

SetStartPos();

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: 7,200 kHz

// Mode: Normal top=FFh

// OC2A output: Disconnected

// OC2B output: Disconnected=0x00;A=0x00;B=0x07;=0x00;A=0x00;B=0x00;

// Timer/Counter 2 Interrupt(s) initialization=0x01;

// Global enable interrupts

#asm("sei")

//--------------------------------------------------------

// Определяем собственный адрес=ReadByteADC(6);

a1=U1>100;=ReadByteADC(7);=U2>100;_ADDR=a1+a2*2;(MY_ADDR);

// Инициализация регистров[REG_ASTEP] = AStepDefault;[REG_SBLIM] = (signed char)0xff;[REG_SBMASK] = 0x00;[REG_STAT] = 0x00;

//--------------------------------------------------------

// Основной цикл

//--------------------------------------------------------CTL = U485READ;(1)

{

//------------------------------------------------------

// Считываю байты с портов

for(i=0;i<8;i++)[i] = ReadByteADC(i);

//------------------------------------------------------

// Управление сервомашинками

//------------------------------------------------------(i=0;i<fxPWM_CH_NUM;i++)

{(needrotate[i])

{(i, currAng[i]);

needrotate[i] = 0;

}

}

//------------------------------------------------------

// Проверяем условие прерывания операции CMD_SET_INT

//------------------------------------------------------(i=0;i<8;i++)

{= (INT_MASK & (1<<i));(num)

{(ADCVAL[i]>=INT_VALUE) // Блокируем движение

{();_MASK = 0;;

}

}

}(UWasChar1()) addr = ReadCommand(); else continue;(addr!=MY_ADDR) continue;CTL = U485WRITE;_us(DELAY_TIME);(MRcmd)

{CMD_GET_REG:(HEADER_BYTE);(MRfrom);(MY_ADDR);(CMD_SENS_COND);(MAX_REGIST);(i=0;i<MAX_REGIST;i++)(REGIST[i]);;CMD_READ_SENS: // Отправляем значения АЦП(HEADER_BYTE);(MRfrom);(MY_ADDR);(CMD_SENS_COND);(8);(i=0;i<8;i++)(ADCVAL[i]);;CMD_SENS_COND: // Пропускаю командуCMD_ACK:;CMD_PIP: // Пищалка();;CMD_STARTPOS: // Исходное положение();;CMD_SET_FAST:CMD_SET_SLOW:= MRDATA[0];= MRDATA[1];(num<0 || num>=fxPWM_CH_NUM) break;(angle>MaxAng) angle = MaxAng;(angle<MinAng) angle = MinAng;(MRcmd==CMD_SET_FAST) // Быстрый поворот

{[num] = goalAng[num] = angle;((int)num, (int)angle);

}// Медленный поворот[num] = angle;;CMD_SET_VECT_SLOW:CMD_SET_VECT_FAST:(MRlen>fxPWM_CH_NUM) MRlen = fxPWM_CH_NUM;(i=0;i<MRlen;i++)

{= MRDATA[i];(angle>MaxAng) angle = MaxAng;(angle<MinAng) angle = MinAng;(MRcmd==CMD_SET_VECT_FAST) // Быстрый поворот

{[i] = goalAng[i] = angle;(i, (int)angle);

}// Медленный поворот[i]=angle;

};CMD_SET_REG: // Установить значение регистра= MRDATA[0];(num<0 || num>=MAX_REGIST) break;[num] = MRDATA[1];;

//----------------------------------------------------

// Для версии SlaveXPod

//----------------------------------------------------CMD_STOP: // Останов всех сервоприводов();;CMD_SET_INT: // Прервать выполнение операции по состоянию датчика. Аргументы: <маска датчиков> <значение>_MASK = MRDATA[0];_VALUE = MRDATA[1];;

Перейти на страницу: 8 9 10 11 12 13 14 15 16 17

Самое читаемое:

Анализ линейной активной цепи
В данной курсовой работе необходимо выполнить анализ линейной активной цепи. Целью проектирования является закрепление навыков и умений студентов в области построения и анализа частотных, временных, спектральных характеристик радиотехнических цепей, нахождение формы сигнала на выходе цепи, исследование влияния параметров цепи на хар ...

www.techstages.ru : Все права защищены! 2025