コード例 #1
0
ファイル: CAN001.c プロジェクト: aqeelarshad19/CAN_BUS_THX
status_t CAN001_ReadMsgObj
(
 const CAN001_HandleType* Handle,
 CAN001_MessageHandleType* SwMsgObjptr,
 uint8_t MsgObjnr
)
{
  uint32_t Error = (uint32_t)CAN001_ERROR;
  uint32_t Count = 0U;
  bool RxPnd = 0U;
  bool NewData = 0U;
  uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U));
  /* Mapping to message object offset value*/
  CAN_MO_TypeDef* CAN_MOxRegs = \
                 GET_MO_OFFSET(MsgNo);
  
  DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo));
  /* check if message object is a receive message object */
  /*<<<DD_CAN001_API_6_1>>>*/
  if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \
                                   CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)RECMSGOBJ)
  {
    Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE;
    DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); 
  }
  /* check if reception is ongoing on message object */
  /*<<<DD_CAN001_API_6_2>>>*/
  else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_RXUPD_Msk, \
                                         CAN_MO_MOSTAT_RXUPD_Pos) == 1U)
  {
    Error = (uint32_t)CAN001_MO_BUSY;
    DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); 
  }
  else
  {
    /* read message parameters */
    /*<<<DD_CAN001_API_6_3>>>*/
    do
    {
      CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_RESNEWDAT_Msk;
      if((RD_REG(CAN_MOxRegs->MOAR, CAN_MO_MOAR_IDE_Msk , \
                         CAN_MO_MOAR_IDE_Pos)) == 0U)
      {
        SwMsgObjptr->IDExten = (uint8_t)STANDARDTYPE;
        SwMsgObjptr->Identifier = (CAN_MOxRegs->MOAR & (uint32_t)CAN_MO_MOAR_STDID_Msk) >> \
                                                    CAN_MO_MOAR_STDID_Pos;
        SwMsgObjptr->IDEMask = (uint8_t)((uint32_t)(CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAMR_MIDE_Msk) >> \
                             CAN_MO_MOAMR_MIDE_Pos);
        if(SwMsgObjptr->IDEMask == 1U)
        {
          SwMsgObjptr->IDMask = (CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAR_STDID_Msk) >> \
     	                                             CAN_MO_MOAR_STDID_Pos;
        }
        else
        {
     	   SwMsgObjptr->IDMask = CAN_MOxRegs->MOAMR & (uint32_t)CAN_MO_MOAMR_AM_Msk;
        }
      }
      else
      {
コード例 #2
0
ファイル: PWMMP001.c プロジェクト: Moonwalkee/Flying-PCB
/**
 * This function initializes all instances of the PWMMP001 App.
 */
void PWMMP001_Init(void)
{
  status_t Status;
  /*Clock initialization - if it is not already done by DAVE3.h */
  CLK001_Init();
  /* CCU8 global init to start the prescalar and de-assert the module */
  CCU8GLOBAL_Init();
  Status = PWMMP001_lInit(&PWMMP001_Handle0);
  if(Status == (uint32_t)DAVEApp_SUCCESS)
  {
    if (PWMMP001_Handle0.StartControl == (uint8_t)SET)
    {
      Status = PWMMP001_Start(&PWMMP001_Handle0);
      DBG002_N(Status != DAVEApp_SUCCESS);
    }
  }
  else
  {
    DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, PWMMP001_STATUS_LEN, &Status);
  }	  
	        
    /* Configuration of Phase 1 Direct Output Pin 1.14 based on User configuration */
  PORT1->PDR1 &= (~((uint32_t)PORT1_PDR1_PD14_Msk));
  PORT1->PDR1 |= (((uint32_t)0U << (uint32_t)PORT1_PDR1_PD14_Pos) & \
                               (uint32_t)PORT1_PDR1_PD14_Msk);
  PORT1->IOCR12  &= (~((uint32_t)PORT_IOCR_PC2_PO_Msk));
  PORT1->IOCR12  |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC2_PO_Pos) & \
                               (uint32_t)PORT_IOCR_PC2_PO_Msk);   
    /* Configuration of Phase 1 Inverted Output Pin 1.11 based on User configuration */
  PORT1->PDR1 &= (~((uint32_t)PORT1_PDR1_PD11_Msk));
  PORT1->PDR1 |= (((uint32_t)0U << (uint32_t)PORT1_PDR1_PD11_Pos) & \
                             (uint32_t)PORT1_PDR1_PD11_Msk);
  PORT1->IOCR8  &= (~((uint32_t)PORT_IOCR_PC3_PO_Msk));
  PORT1->IOCR8  |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC3_PO_Pos) & \
                               (uint32_t)PORT_IOCR_PC3_PO_Msk);
    /* Configuration of Phase 2 Direct Output Pin 1.4 based on User configuration */
  PORT1->PDR0  &= (~(PORT1_PDR0_PD4_Msk));
  PORT1->PDR0  |= ((0 << PORT1_PDR0_PD4_Pos) & \
                             PORT1_PDR0_PD4_Msk);
  PORT1->IOCR4  &= (~((uint32_t)PORT_IOCR_PC0_PO_Msk));
  PORT1->IOCR4  |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC0_PO_Pos) & \
                               (uint32_t)PORT_IOCR_PC0_PO_Msk);
    /* Configuration of Phase 2 Inverted Output Pin 1.10 based on User configuration */
  PORT1->PDR1 &= (~(PORT1_PDR1_PD10_Msk));
  PORT1->PDR1 |= ((0 << PORT1_PDR1_PD10_Pos) & \
                             PORT1_PDR1_PD10_Msk);
  PORT1->IOCR8  &= (~((uint32_t)PORT_IOCR_PC2_PO_Msk));
  PORT1->IOCR8  |= (((uint32_t)0U << (uint32_t)PORT_IOCR_PC2_PO_Pos) & \
                               (uint32_t)PORT_IOCR_PC2_PO_Msk);
}
コード例 #3
0
/** This function initializes the app */
void CNT001_Init(void)
{
  status_t status = (uint32_t)CNT001_OPER_NOT_ALLOWED_ERROR;


  CCU4GLOBAL_Init();
  status = CNT001_lInit( &CNT001_Handle0);
    
    /* Start the app if "Start after initialization" is selected */
  if(status == (uint32_t)DAVEApp_SUCCESS)
  {
	DBG002_N(status != DAVEApp_SUCCESS);
    if(CNT001_Handle0.StartControl == (uint8_t)SET)
    {
      status = CNT001_Start( &CNT001_Handle0);
	  DBG002_N(status != DAVEApp_SUCCESS);
    }
  }
  else
  {
	 DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, CNT001_STATUS_LEN, &status);
  }
}
コード例 #4
0
ファイル: CAN001.c プロジェクト: rocky-luo/can-485conversion
status_t CAN001_SendRemoteFrame(const CAN001_HandleType* Handle, uint8_t MsgObjnr)
{
  uint32_t Error = 0U;
  uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U));
  /* Mapping to message object offset value*/
  CAN_MO_TypeDef* CAN_MOxRegs = \
                  GET_MO_OFFSET(MsgNo);
  /*<<<DD_CAN001_API_5>>>*/
  DBG002_FUNCTION_ENTRY(DBG002_GID_CAN001,CAN001_FUNCTION_ENTRY);
  DBG002_N ((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo));
  /* check if message object is a receive message object */
  /*<<<DD_CAN001_API_5_1>>>*/
  if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \
                                        CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)RECMSGOBJ)
  {
    Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE;
    DBG002_ERROR(DBG002_GID_CAN001,Error, 0, NULL);
  }
  /* check if message is disabled */
  else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_MSGVAL_Msk, \
                                              CAN_MO_MOSTAT_MSGVAL_Pos) == 0U)    		
  {
    Error = (uint32_t)CAN001_MSGOBJ_DISABLED;
    DBG002_INFO(DBG002_GID_CAN001,Error, 0, NULL);
  }
  /* check if transmission is ongoing on message object */
  /*<<<DD_CAN001_API_5_2>>>*/
  else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_TXRQ_Msk, \
                                                CAN_MO_MOSTAT_TXRQ_Pos) == 1U)  
  {
    Error = (uint32_t)CAN001_MO_BUSY;
    DBG002_INFO(DBG002_GID_CAN001,Error, 0, NULL);
  }
  else
  {
    /* Put transmit request to message object */
    /*<<<DD_CAN001_API_5_3>>>*/
    CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_SETTXRQ_Msk;
    Error = (uint32_t)DAVEApp_SUCCESS;
  }
  DBG002_FUNCTION_EXIT(DBG002_GID_CAN001,CAN001_FUNCTION_EXIT);
  return Error;
}
コード例 #5
0
ファイル: CAN001.c プロジェクト: aqeelarshad19/CAN_BUS_THX
status_t CAN001_SendDataFrame(const CAN001_HandleType* Handle, uint8_t MsgObjnr)
{
  uint32_t Error = (uint32_t)CAN001_ERROR;
  uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U));
  /* Mapping to message object offset value*/
  CAN_MO_TypeDef* CAN_MOxRegs = \
                  GET_MO_OFFSET(MsgNo);
  
  DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo));
  /* check if message object is not a transmit message object */
  /*<<<DD_CAN001_API_4_1>>>*/
  if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_DIR_Msk, \
                                        CAN_MO_MOSTAT_DIR_Pos) != (uint32_t)TRANSMSGOBJ)
  {
    Error = (uint32_t)CAN001_MO_NOT_ACCEPTABLE;
    DBG002_ERROR(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error); 
  }
  /* check if message is disabled */
  else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_MSGVAL_Msk, \
                                              CAN_MO_MOSTAT_MSGVAL_Pos) == 0U)    
  {
    Error = (uint32_t)CAN001_MSGOBJ_DISABLED;
    DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error);
  }
  /* check if transmission is ongoing on message object */
  /*<<<DD_CAN001_API_4_2>>>*/
  else if( RD_REG(CAN_MOxRegs->MOSTAT, CAN_MO_MOSTAT_TXRQ_Msk, \
                                                 CAN_MO_MOSTAT_TXRQ_Pos) == 1U)  
  {
    Error = (uint32_t)CAN001_MO_BUSY;
    DBG002_INFO(APP_GID, DBG002_MESSAGEID_LITERAL, sizeof(Error), &Error);
  }
  else
  {
    /* set TXRQ bit */
    /*<<<DD_CAN001_API_4_3>>>*/
    CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_SETTXRQ_Msk;
    Error = (uint32_t)DAVEApp_SUCCESS;
  }
 
  return Error;
}
コード例 #6
0
ファイル: CAN001.c プロジェクト: rocky-luo/can-485conversion
status_t CAN001_ConfigMsgObj
(
  const CAN001_HandleType* Handle, 
  const CAN001_MessageHandleType* SwMsgObjptr,
  uint8_t MsgObjnr
 )
{
  uint32_t Error = (uint32_t)CAN001_MO_NOT_FOUND;
  uint8_t MsgNo = (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U));
	/* Mapping to message object offset value*/
  CAN_MO_TypeDef* CAN_MOxRegs = \
                      GET_MO_OFFSET(MsgNo);
  /* <<<DD_CAN001_API_3>>> */
  DBG002_FUNCTION_ENTRY(DBG002_GID_CAN001,CAN001_FUNCTION_ENTRY);
  DBG002_N((MsgObjnr == 0U)||(MsgObjnr > Handle->NodeMONo));
    
  if (((SwMsgObjptr->IDExten != (uint8_t)STANDARDTYPE) && \
                                        (SwMsgObjptr->IDExten != (uint8_t)EXTENDEDTYPE))
    ||((SwMsgObjptr->MsgObjEN != CAN001_ENABLE) && (SwMsgObjptr->MsgObjEN != CAN001_DISABLE))
    ||((SwMsgObjptr->MsgObjType != RECMSGOBJ) && (SwMsgObjptr->MsgObjType != TRANSMSGOBJ)))
  {
    Error =  (uint32_t)CAN001_INVALID_INPUT;
    ERROR(DBG002_GID_CAN001,Error, 0, NULL);
  }
  /* check if message object is to be disabled */
  /*<<<DD_CAN001_API_3_1>>>*/
  else if (SwMsgObjptr->MsgObjEN == CAN001_DISABLE)
  {
    /* Reset MSGVAL bit */
    CAN_MOxRegs->MOCTR = CAN_MO_MOCTR_RESMSGVAL_Msk;
    Error = (uint32_t)DAVEApp_SUCCESS;
  } /* if (SwMsgObjptr->MsgObjEN == CAN001_DISABLE) */
  else
  {
    CAN001_lConfigMORegs(SwMsgObjptr, (uint8_t)(Handle->FirstMOMapping+(MsgObjnr-1U)));
    Error = (uint32_t)DAVEApp_SUCCESS;
  } /*if (SwMsgObjptr->MsgObjEN == CAN001_ENABLE)*/
  DBG002_FUNCTION_EXIT(DBG002_GID_CAN001,CAN001_FUNCTION_EXIT);
  return Error;
}