Hi dazz,
i'm almost done on my flowcode.. but there is a problem... i don't know how to apply these terms in flowcode.. here it is..
void main()
{
//Initialisation
adcon1 = 0x0F;
ucfg = 0x08;
cr_bit(pie2, USBIE);
#ifdef MX_MIAC_SYSTEM
#if (48 != MX_MIAC_MM_MIAC_BASE)
#define MOD_ID ((0 << 5) + 48) << 9
MIAC_CAN_TX[0] = MX_SERVO_PIN_ARRAY[0];
MIAC_CAN_TX[1] = MX_SERVO_PIN_ARRAY[1];
MIAC_CAN_TX[2] = MX_SERVO_PIN_ARRAY[2];
MIAC_CAN_TX[3] = MX_SERVO_PIN_ARRAY[3];
MIAC_CAN_TX[4] = MX_SERVO_PIN_ARRAY[4];
MIAC_CAN_TX[5] = MX_SERVO_PIN_ARRAY[5];
MIAC_Module_WR(MOD_ID, 640, 6,1,1);
MIAC_Module_GetAck(MOD_ID + 32, 640, 20);
MIAC_CAN_TX[0] = MX_SERVO_PIN_ARRAY[6];
MIAC_CAN_TX[1] = MX_SERVO_PIN_ARRAY[7];
MIAC_CAN_TX[2] = MX_SERVO_TRIM[0];
MIAC_CAN_TX[3] = MX_SERVO_TRIM[1];
MIAC_CAN_TX[4] = MX_SERVO_TRIM[2];
MIAC_CAN_TX[5] = MX_SERVO_TRIM[3];
MIAC_Module_WR(MOD_ID, 640, 6,0,1);
MIAC_Module_GetAck(MOD_ID + 32, 640, 20);
MIAC_CAN_TX[0] = MX_SERVO_TRIM[4];
MIAC_CAN_TX[1] = MX_SERVO_TRIM[5];
MIAC_CAN_TX[2] = MX_SERVO_TRIM[6];
MIAC_CAN_TX[3] = MX_SERVO_TRIM[7];
MIAC_CAN_TX[4] = MX_SERVO_NO_CHAN;
MIAC_Module_WR(MOD_ID, 640, 5,0,0);
MIAC_Module_GetAck(MOD_ID + 32, 640, 20);
#undef MOD_ID
#endif
#else
char temp;
ccpr1h = MX_SERVO_CCPR1H; //Set capture compare setpoint
ccpr1l = MX_SERVO_CCPR1L;
t1con = MX_SERVO_T1CON; //Setup timer and start running
ccp1con = MX_SERVO_CCP1CON; //Configure CCP1 settings
st_bit(pie1, CCP1IE); //Enable CCP1 interrupt
ccp2con = MX_SERVO_CCP2CON; //Configure CCP2 settings
st_bit(pie2, CCP2IE); //Enable CCP2 interrupt
st_bit(intcon, PEIE); //Enable Interrupts
st_bit(intcon, GIE);
for (temp = 0; temp < MX_SERVO_NO_CHAN; temp++)
{
FCD_Servo0_ToggleTris(MX_SERVO_PORT_ARRAY[temp], MX_SERVO_PIN_ARRAY[temp], 1); //Convert Servo pin to input to disable motor
}
#endif
//Interrupt initialisation code
//Calculation
//Calculation:
// timer = 0
// status = 0
FCV_TIMER = 0;
FCV_STATUS = 0;
//Call Component Macro
//Call Component Macro: Servo(0)::EnableServo(1)
FCD_Servo0_EnableServo(1);
//Call Component Macro
//Call Component Macro: Servo(0)::SetPosition(1, 235)
FCD_Servo0_SetPosition(1, 235);
//Call Component Macro
//Call Component Macro: Servo(0)::EnableServo(0)
FCD_Servo0_EnableServo(0);
//Call Component Macro
//Call Component Macro: Servo(0)::SetPosition(0, 0)
FCD_Servo0_SetPosition(0, 0);
//Call Macro
//Call Macro: Sonar_Sense
FCM_Sonar_Sense();
mainendloop: goto mainendloop;
}
void MX_INTERRUPT_MACRO(void)
{
#ifndef MX_MIAC_SYSTEM
if (ts_bit(pir1, CCP1IF) && ts_bit(pie1, CCP1IE))
{
if (MX_SERVO_IDX < MX_SERVO_NO_CHAN)
{
FCD_Servo0_TogglePort(MX_SERVO_PORT_ARRAY[MX_SERVO_IDX], MX_SERVO_PIN_ARRAY[MX_SERVO_IDX], 1); //Start Servo duty cycle
MX_SERVO_CALC = MX_SERVO_TRIM[MX_SERVO_IDX] + MX_SERVO_POSITION[MX_SERVO_IDX]; //Calculate the required position
MX_SERVO_CALC = MX_SERVO_CALC * MX_SERVO_CLK_COUNT; //Calculate the number of clock cycles required
MX_SERVO_CALC = (MX_SERVO_CALC >>
& 0xFFFF; //Shift back to be 16-bit
ccpr2h = ( MX_SERVO_CALC >> 8 ); //Setup capture compare registers
ccpr2l = ( MX_SERVO_CALC & 0xFF );
}
cr_bit(pir1, CCP1IF); //Clear interrupt
}
if (ts_bit(pir2, CCP2IF) && ts_bit(pie2, CCP2IE))
{
if (MX_SERVO_IDX < MX_SERVO_NO_CHAN) //If channel is active
{
FCD_Servo0_TogglePort(MX_SERVO_PORT_ARRAY[MX_SERVO_IDX], MX_SERVO_PIN_ARRAY[MX_SERVO_IDX],0); //End of control pulse
}
MX_SERVO_IDX = (MX_SERVO_IDX + 1) & 0x07; //Increment channel
if (MX_SERVO_REQUIRED[MX_SERVO_IDX] > MX_SERVO_POSITION[MX_SERVO_IDX])
MX_SERVO_POSITION[MX_SERVO_IDX] = MX_SERVO_POSITION[MX_SERVO_IDX] + 1; //Increment duty
if (MX_SERVO_REQUIRED[MX_SERVO_IDX] < MX_SERVO_POSITION[MX_SERVO_IDX])
MX_SERVO_POSITION[MX_SERVO_IDX] = MX_SERVO_POSITION[MX_SERVO_IDX] - 1; //Decrement duty
cr_bit(pir2, CCP2IF); //Clear interrupt
}
#endif
}
what am i going to do with these codes? how am i suppose to start? i am not familiar with them...