#include "..\..\..\SDK\SDK_ApossC.mc"
#define SLAVE_CAN_BUSID 1
long waitTransitionToState(long busId, long targetState, long timeout);
void errorHandler();
void faultMonitoring();
long main(void)
{
long handle, i;
long actState=0;
handle = DefCanOut(0, 2);
CanOut(handle, 0, 0x8100);
handle = DefCanOut(100000, 2);
CanOut(handle, 0, 0x8100);
Delay(2000);
ErrorClear();
InterruptSetup(ERROR, errorHandler);
InterruptSetup(PERIOD, faultMonitoring, 25);
{
}
Delay(1000);
for(i = 0; i < 2; i++)
{
Delay(1500);
Delay(1500);
Delay(500);
Delay(1500);
Delay(500);
}
Delay(2000);
return(1);
}
void faultMonitoring()
{
{
errorHandler();
}
}
void errorHandler()
{
long axeNbr = ErrorAxis();
long errNbr = ErrorNo();
long errInfoNbr = ErrorInfo();
long statusWord, idIndex, sdoAbortCode;
print("-----------------------------------------------------------");
printf("Error %d: ",errNbr);
print();
print("...Info: ",errInfoNbr, " AxisNo: ", axeNbr);
print("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -");
print();
switch(errNbr)
{
case F_CANIO:
printf("SDO Abort Code 0x%lX: ", sdoAbortCode );
print();
print("Check Can baudrate & Can bus id");
}
if(axeNbr == 0xFF && errNbr != F_CANIO)
{
{
print();
printf("Bus Id %d, Slave device is in fault state\n", SLAVE_CAN_BUSID);
{
print("...Following Error");
}
}
}
ErrorClear();
print();
print(" There is no error handlig → Exit()");
print("-----------------------------------------------------------");
Exit(0);
}