Not applicable
Jul 27, 2018
01:19 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 27, 2018
01:19 PM
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.
What could be the reason for this issue?
Some additional settings:
PS: Sorry for my bad english!
Kind regards
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.
/*
* main.c
*
* Created on: 2018 Jul 24 11:01:09
* Author: Simon
*/
#include//Declarations from DAVE Code Generation (includes SFR declaration)
/**
* @brief main() - Application entry point
*
* Details of function
* 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
0 Replies