DAVE™ Forum Discussions
text.format{('custom.tabs.no.results')}
There's a bug in the DAVE-generated EEPROM emulation driver for the XMC4800, working with DAVE v4.5 and the E_EEPROM_XMC4 App v4.0.20.
In Dave/Generated/E_EEPROM_XMC4/e_eeprom_xmc4.c, Line 309, I get
/* Read a set of bytes from RAM Buffer */
void E_EEPROM_XMC4_ReadArray(const uint16_t offset_address, uint8_t *const data, const uint16_t length)
{
uint16_t i;
uint8_t *address_ptr;
XMC_ASSERT("E_EEPROM_XMC4_ReadArray: Wrong offset address", (offset_address < E_EEPROM_XMC4_DATA_BLOCK_SIZE))
XMC_ASSERT("E_EEPROM_XMC4_ReadArray: Wrong length",
((offset_address + length) < E_EEPROM_XMC4_DATA_BLOCK_SIZE))
The second assert will fail If I try to read the full section, calling this function with offset_address = 0 and length = E_EEPROM_XMC4_DATA_BLOCK_SIZE.
This is exactly what the EtherCAT Slave Stack code from ECAT_SSC App v4.0.30 does (Dave/Generated/ECAT_SSC/ecat_ssc.c:122) when running any of the EtherCAT examples from the downloads portal.
Proposed fix: Subtract 1 from length in the assert to correctly check the address of the last byte read from the EEPROM emulation.
Show LessHi, I`m new in DAVE and XMC, just was working with Atmel Studio and AVR before. Could you please help me to figure out why my MultiCAN and Interrupt doesnt work ? I set it with typical settings but nothing happened when I`m trying to recieve a CAN ID 568 data to the node0. If I transmitt a data to node1, the Transmitt function says CAN is BUSY (in debugger mode). At the end it will be the CAN filter for my car navigation.
Thank you !
Show Less
Hi everyone,
The PWM App does not allow CCU8 to be selected in DAVE 4.3.2 although the App Help states that CCU8 is an option.
Is this just a documentation error and PWM_CCU8 is to be used instead ?
Thanks very much.
Show LessHello.
How can i solve the problem with the SPI-MASTER App with a XMC4700 microcontroller.
I use the SPI_MASTER App and select "Enable advanved pin configuration" to set up the port pin driver strange on USIC2 Channel 0.
I want to use: Strong Driver Sharp Edge on MOSI and SCLK, but i can only select:
- Dont care
- Weak DRiver
- Medium Driver
- Strong Driver Soft Edge
- Strong Driver Slow Edge
If i want to select: Strong Driver Shart Edge, Dave4 shows a error:
DAVE is not able to grant your last hardware resources request.
That's not possible, because its only a available setting of a port pin, NOT a NEW hardware resource!
Look for example at xmc4_gpio.h:
#define XMC_GPIO_CHECK_OUTPUT_STRENGTH(strength) ((strength == XMC_GPIO_OUTPUT_STRENGTH_STRONG_SHARP_EDGE) ||\
(strength == XMC_GPIO_OUTPUT_STRENGTH_STRONG_MEDIUM_EDGE) ||\
(strength == XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE) ||\
(strength == XMC_GPIO_OUTPUT_STRENGTH_STRONG_SLOW_EDGE) ||\
(strength == XMC_GPIO_OUTPUT_STRENGTH_MEDIUM) ||\
(strength == XMC_GPIO_OUTPUT_STRENGTH_WEAK))
How can is solve this bug?
I can edit the created spi_master_conf.c and write
.output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SHARP_EDGE
to the pin config, but with the next: DAVE->Generat Code , i lost my settings.
Please help.
Show Less
Hello,
I am using the ADC and UART peripherals of XMC4400 Board. I am trying to read the sensor values using the ADC. And, next, I wish to check the results displayed by the ADC. For this, I have used an example code of UART given by the software. This UART code transmits the data from USIC0 channel0 to USIC0 Channel 1. I used this code because it was stated that this code would help me observe the variables values in the debugger.
However, when I used this code and ran the debugger, the variables section of the IFX Debugger showed no variables and only a grey screen. In the expressions section, although I have added the global variables in the "expression" section, the value of the expressions is not updating. Can anyone please help me print the ADC values in Dave 3.0.
Below, I have attached the code I have written for reading the sensor values and displaying the ADC result.
Show Less
Hi everyone,
- I am running DAVE v4.3.2 and the 'ENCODER_POSIF' APP is missing.
- If I check for DAVE APP updates the 'ENCODER_POSIF' does not appear in the 'APPS Library Update Page' either.
- How can I obtain the 'ENCODER_POSIF' please ?
Thank you very much
Show LessHi all,
Would anyone know the purpose of the 't_offset' parameter in the following function please ? It is not documented the v4.0.6 App help.
ENCODER_POSIF_GetRotorAngle ( ENCODER_POSIF_t *const HandlePtr, uint32_t t_offset )
Thanks very much
Show LessHi All,
I have a project with 3 x PWM Apps using 3 x CCU4's.
When I add the ENCODER_POSIF App and I select 'New App Instance' to use the 4th CCU4 I get the following error...
"Dave is not able to grant your last hardware resource request"
Any help would be appreciated.
Show LessHi,
DAVE App of EVENT_GENERATOR for ERU has only single "pattern" input, it has no "tout" output.
XMC1400 ERU has 4 inputs EXICONx.FL to detect pattern, and ERU_TOUT as "tout" without gating.
Why does not the ERU_GENERATOR of DAVE App have "tout" ?
Would you modify the ERU_GENERATOR to have "tout" ?
Best Regards,
Hayashi.K
Hi,
I have an IMU which uses I2C for configuration. The device uses only one byte writing, meaning that the master may transmit only one byte of data to the slave and then the stop condition must be sent by the master.
The slave's address is 0xA (and according to the app description, the value shall be left shifted by 1 bit to make room for the R/W bit, therefore the value of the address define is 0x14), the register address and the content to the written to it are defined in variables. I am also using the NACK received callback function. I am always receiving a NACK signal and am not sure why. Perhaps I am using the transmit function incorrectly? The relevant code is attached below.
Regarding HW problems: the IMU used is not dead, the electrical connection between the master and the slave is fine and the baudrate is also within the device's specification.
void NACK_Received(void)
{
I2C_MASTER_AbortTransmit(&I2C_MASTER_0);
I2C_MASTER_SendStop(&I2C_MASTER_0);
}
// configures the IMUs used for our project
static void configIMUs()
{
uint8_t config[2] = {ADDR_ACCEL_RANGE, 0b00000011};
I2C_MASTER_Transmit(&I2C_MASTER_0, true, IMU_ADDR, config, 2, true);
while(I2C_MASTER_IsTxBusy(&I2C_MASTER_0));
}
I have looked at the code example provided for the transmit function and I believe my implementation above does the same thing. Firstly, the start condition is sent, next the slave address, next the two bytes of data (first the register address and next the data to be written), and finally the stop condition.
Thanks in advance for any advice
Show Less