XMC™ Forum Discussions
text.format{('custom.tabs.no.results')}
The CCU8 timers on the XMC4400 and 4700 have a strange quirk when in center-aligned PWM mode.
When setting the duty cycle to 0%, the reference manual says "generating a 0% duty cycle signal is always possible by setting a value in the compare register bigger than the one programmed into the period register". The quirk affects how the complementary output is generated in this case.
If you program the compare register with the value in the period register + 1 things work as expected, and the complementary output appears as a 100% duty cycle signal. If you set it to anything larger, such as period register + 2, the complementary output appears as either a glitch or as a 0% duty cycle some of the time. This is not consistent--sometimes the complementary output is 100% (as expected) and sometimes it just glitches or stays low.
The manual should say "generating a 0% duty cycle signal is always possible by setting a value in the compare register to the one programmed into the period register + 1". Setting it to "a value in the compare register bigger than the one programmed into the period register" will cause problems in the complementary output.
Show LessIs it possible to use Arduino IDE to program XMC processor? I have noticed that my XMC1100 boot kit already has Arduino Uno compatible pinout.
I mean that directly programing in wiring language, not through any "translating layer".
Thanks for any hints. Show Less
Is 32-bit I2S PCM supported by XMC4500 ? The maximum supported Word Length is 16-bits only.
So, how should we Read/Capture 24-bit I2S MIC data ? We have interfaced an I2S MIC, INMP441 with
XMC4500, which gives 24-bit PCM. So, how to read Data ? We have used FIFO & DMA without any success.
Please urgently, provide us example for reading 32-bit PCM using DAVE 4.
Show LessHello all,
I working on XMC1403MCU on CAN. I am facing the problem while Receive buffer is clearing
I am using CAN BUS ANALYSER and transmitting the data to the XMC1403 CAN peripheral when I debugging I can see the data in receive buffer of CAN (CAN_NODE_0_LMO_02.can_data_byte[0])
suppose this is condition is when I an not clearing the Buffer with this for loop
/*for(int l=0;l<7;l++)
{
CAN_NODE_0_LMO_02.can_data_byte[l]=0;
}*/
After receiving the 8 bytes data to another Array uint8_t dummycan_data_arr[8] I Am Clearing the Data in (CAN_NODE_0_LMO_02.can_data_byte[0])
but so when I do this my (CAN_NODE_0_LMO_02.can_data_byte[0]) all 8 bytes are filled with zeros
even though when I send the DATA from Analyser while debugging the (CAN_NODE_0_LMO_02.can_data_byte[0]) are
coming zeros
In main function
{
CAN_Recieve();
Delaysec(1);
if(dummycan_data_arr[0] == 1)
{
CAN_SendData();
}
}
/**********************************************************/
void CAN_SendData()
{
uint8_t can_send_data[8];
uint8_t *can_send_datap;
uint16_t FCData[4];
FCData[0] = 54;
FCData[1] = 0;
FCData[2] = 0;
FCData[3] = 0;
//id 0x1812F400
can_send_data[0] = (FCData[0]>>8)&0xFF;
can_send_data[1] = (FCData[0]>>0)&0xFF;
can_send_data[2] = (FCData[1]>>8)&0xFF;
can_send_data[3] = (FCData[1]>>0)&0xFF;
can_send_data[4] = (FCData[2]>>8)&0xFF;
can_send_data[5] = (FCData[2]>>0)&0xFF;
can_send_data[6] = (FCData[3]>>8)&0xFF;
can_send_data[7] = (FCData[3]>>0)&0xFF;
can_send_datap = can_send_data;
CAN_NODE_MO_UpdateID(CAN_NODE_0.lmobj_ptr[0], 0x1812F400);
CAN_NODE_MO_UpdateData(CAN_NODE_0.lmobj_ptr[0],can_send_datap);
CAN_NODE_MO_Transmit(HandlePtr1->lmobj_ptr[0]);
status = CAN_NODE_GetStatus(HandlePtr1);
if (status & XMC_CAN_NODE_STATUS_TX_OK)
{
//Clear the transmit OK flag
CAN_NODE_ClearStatus(HandlePtr1, XMC_CAN_NODE_STATUS_TX_OK);
}
}
Problem is am continuosly receiving the data in Analyser if I Tx only once from CAN bus analyser
Regards,
karthik
Show Less
Hi,
I have "XMC14_3300W_TPBiDi" code then I need to use more ADC and then the ADC are gererrate with LLD_conf_code.
How to generate and re-configuration LLD_conf_code in Dave?
Thanks and Best regards
Rattana Le
i push 'file' inside Dave afterthan i push "import" afterthan i select "DALIXVR" file but i did not select .Anyone help me please
What are the limitations of using TDI & TRST pins with a CAN controller?
CAN NODE. The Datasheet is sparse on info.
Hello,
I have a question regarding a this function :
uint32_t SYSTIMER_CreateTimer ( uint32_t period, SYSTIMER_MODE_t mode, SYSTIMER_CALLBACK_t callback, void *args)
And this is an example in how to use it:
TimerId = (uint32_t)SYSTIMER_CreateTimer(ONESEC,SYSTIMER_MODE_PERIODIC (void*)LED_Toggle_EverySec, NULL);
But I don't quite understand if I can use it with a callback function which return value for example (uint16_t *)LED_UART) and do you know if the part "void *args" is for the variable of return of the callback function?
If yes, how will it be writen?
Best regards,
Show Less
Hi everyone.
Due to the apocalipchip (the chip shortage), we will use different packages to run the same code. We need to identify the package to avoid make different firmware for each package.
Does anybody know how to idenfy the package by code?
We've found this register, that has different values depending on the package, but in the documentation is not listed the values for each package:
Thank you.
Show LessHi everyone
I'm using the CCU8 symmetric, with 50% of PWM and dead time of 400ns, for the High side, and for the Low side the same thing.
But when I want to stop PWM, I use PWM_CCU8_Stop(&PWM_CCU8_0), always one of the pins remains at a high level, and for the Half Bridge, which I'm using, this is a big problem, I need the GPIOs to be at level 0, after command PWM_CCU8_Stop(&PWM_CCU8_0) .
I already tried to force the GPIO to level 0 using LLD with the commands
XMC_GPIO_SetOutputLow(XMC_GPIO_PORT0,0);
XMC_GPIO_SetOutputLow(XMC_GPIO_PORT0,1);
But I was not successful. I did other methods and I couldn't.
Can you help me with this?
Best regards
Show Less