Quantcast
Channel: Infineon Forums
Viewing all articles
Browse latest Browse all 9892

BLDC Motor control with XMC4700

$
0
0
Hello together,

I want to control a BLDC motor with a XMC4700 Relax Kit and Eval-M1-05F804 Board.
The motor shuld only be controled in the open loop with the PWM_BC APP but something is wrong. I can't get any signal out of the µC and don't know the reason for this.
Generally I tried to follow the example in the "APP-Help" as far as possible.

Code:

/*
 * main.c
 *
 *  Created on: 2018 Jul 24 11:01:09
 *  Author: Simon
 */
#include <DAVE.h>                //Declarations from DAVE Code Generation (includes SFR declaration)

/**

 * @brief main() - Application entry point
 *
 * <b>Details of function</b><br>
 * This routine is the application entry point. It is invoked by the device startup code. It is responsible for
 * invoking the APP initialization dispatcher routine - DAVE_Init() and hosting the place-holder for user application
 * code.
 */

 uint8_t pat_index = 1;
 uint16_t duty_cycle = 300;
 uint16_t ten_milli_count = 200;
 uint32_t count = 0;

int main(void)
{
  DAVE_STATUS_t status;

  status = DAVE_Init();          /* Initialization of DAVE APPs  */

  if(status != DAVE_STATUS_SUCCESS)
  {
    /* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
    XMC_DEBUG("DAVE APPs initialization failed\n");

    while(1U)
    {

    }
  }

  PWM_BC_Start(&PWM_BC_0); // synchronous start for the CC8 slices.

  /* Placeholder for user application code. The while loop below can be replaced with user application code. */
  while(1U)
  {


  }
}

void PWM_PeriodMatchISR(void)
{
        if(count > ten_milli_count) /*Check if it is time to apply next pattern?*/
        {

                if(pat_index > (uint8_t)6) /*Check if pattern index is greater than 6*/
                {
                        pat_index = (uint8_t)1;
                }

                PWM_BC_SetNextMCPatt(&PWM_BC_0,pat_index); /*Sets the MCM pattern to shadow register*/
                PWM_BC_ModulationForSyncTransfer(&PWM_BC_0); /*Compare value update*/
                XMC_POSIF_MCM_UpdateMultiChannelPattern(POSIF0);/*Immediate Shadow transfer*/

                /*Apply dutycyle*/

                PWM_BC_DutyCycleUpdate(&PWM_BC_0,duty_cycle);
                pat_index++;
                count = 0;
        }

        else
        {
                count++;
        }
}

What could be the reason for this issue?

Some additional settings:


PS: Sorry for my bad english!

Kind regards

Viewing all articles
Browse latest Browse all 9892

Trending Articles