// Останов всех сервоприводов
{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];;
Самое читаемое:
Анализ линейной активной цепи
В данной курсовой работе необходимо выполнить анализ линейной активной
цепи. Целью проектирования является закрепление навыков и умений студентов в
области построения и анализа частотных, временных, спектральных характеристик
радиотехнических цепей, нахождение формы сигнала на выходе цепи, исследование
влияния параметров цепи на хар ...