All packets with 16 ids CAN be sent, ok, and an IOVR1 error will be reported at 17. The interval between sending each ID is 100ms. Each ID uses a different messagebox.
After the For loop, run again and immediately enter the IOVR1 handle
How do I locate and analyze the IOVR1 error?
Hi,
Instruction Fetch Error report in this case means that there was bus termination error during fetching of instruction. MCSRR0 shows address 0x02DE015A which is unimplemented address space. This leads to machine check exception IVOR1 and IF in MCSR is set.
- Check if size of stack is sufficient.
- Try to disable both instruction and data cache to confirm that this is not related to some coherency issues.
- If it is possible, try to disable unnecessary features/functions in your code to make the project as simple as possible. If it helps, then enable the functions one by one to see what makes the difference.
BR, Petr
- Check if size of stack is sufficient.
- Try to disable both instruction and data cache to confirm that this is not related to some coherency issues.
- If it is possible, try to disable unnecessary features/functions in your code to make the project as simple as possible. If it helps, then enable the functions one by one to see what makes the difference.
The following is the i2c initialization code
/****************************************************************************
* Macro Definitions
*****************************************************************************/
#define IICHAL_CHANNEL_MAX_NUM 1u
/*****************************************************************************************
* Internal Variable Definitions
******************************************************************************************/
i2c_master_state_t i2c1MasterState;
/*****************************************************************************************
* Global Variable Definitions
******************************************************************************************/
const uint32 IicInstanceConfig [IICHAL_CHANNEL_MAX_NUM] =
{
INST_I2C1,
};
const i2c_master_user_config_t* IicUserConfig [IICHAL_CHANNEL_MAX_NUM] =
{
&i2c1_MasterConfig0,
};
const i2c_master_state_t* IicMasterConfig [IICHAL_CHANNEL_MAX_NUM] =
{
&i2c1MasterState,
};
Std_ReturnType IicHal_MasterInit(IicHal_IdType Id)
{
#if(IICHAL_DEBUG_1 == STD_ON)
if(Id < IICHAL_CHANNEL_MAX_NUM)
#endif
{
if( I2C_DRV_MasterInit( IicInstanceConfig[Id],IicUserConfig[Id],IicMasterConfig[Id] ) == STATUS_SUCCESS )
return ERR_FLAG_OK;
}
return ERR_FLAG_FAULT;
}
Hi,
so try to step through IicHal_MasterInit inside functions within debugger and try to locate the line when it goes away.
BR, Petr