PSoC™ Creator & Designer Forum Discussions
Hi, Psoc creator crashes randomly (but often) on my PC (Windows 10 home v 1803)
It seems to crash when it's opne and I'm not using it. There is no error message.
In the application journal, I've found :
------------------------
Nom de l’application défaillante psoc_creator.exe, version : 0.0.0.0, horodatage : 0x5a85e2fd
Nom du module défaillant : ucrtbase.dll, version : 10.0.17134.1, horodatage : 0xbb0923b6
Code d’exception : 0xc0000409
Décalage d’erreur : 0x000a273b
ID du processus défaillant : 0x3120
Heure de début de l’application défaillante : 0x01d4148027105cb3
Chemin d’accès de l’application défaillante : C:\Program Files (x86)\Cypress\PSoC Creator\4.2\PSoC Creator\bin\psoc_creator.exe
Chemin d’accès du module défaillant: C:\WINDOWS\System32\ucrtbase.dll
ID de rapport : 66705999-2373-4da2-a1b8-90a6914c940c
Nom complet du package défaillant :
ID de l’application relative au package défaillant :
--------------------
and each time, it's the same crash report. I've tryed to reinstall .NET framework (v4.7.2), but this has no effect.
I've only one version of Psoc creator installed on this PC (i've changed quite recently my PC).
Thanks for any help.
Show LessHi,
I'm using the PSoC 3 UART function and seem to be having problems getting the data in a simple application.
If I am using a terminal window to type characters, everything works fine but if I programmatically send a string, it appears that the FIFO wraps around and the LF winds up in the first character in the buffer.
What I tried to do is read the status to see when a character comes in (UART_1_RX_STS_FIFO_NOTEMPTY), then go into a loop almost identical to the example in the datasheet.that takes all the characters until the CR-LF. .
I have put a UART_1_GetRxBufferSize() to see if more than one character has arrived but I never see more than one at a time.
Any ideas to prevent me from days of hacking and guessing?
Regards,
Nick
Show LessHello,
I have a problem with the CAN component (PSOC5LP), namely it does not communicate on the 500Kb rate. Having 125kb and normal clock set in "Clocks" it works, and the CAN hardware component datasheet says that it supports speeds up to 1Mb.
I was using AN52701 example project CAN RTR Node1 modified to send a message every 1 second. But it just does not work. Any ideas what the problem could be?
Below you can take a look at Clock settings for 500Kb rate.
Show LessHi,
I have the latest PSOC Creator, and I just checked cypress update manager. Im running windows 10 pro. Every time I make a change to top design, API is regenerated for each component. Only problem is, I have maybe over 30 components, and during the "Cleanup..." process, each component takes around 1 SECOND.
If I remember correctly, even down to PSOC Creator 2.2, the build process chugged along faster than this. I only noticed this on 4.1. Even my biggest projects didnt take 30 seconds to build before. Now a simple one can take around 50, and its specifically slowed down by this "Cleanup..." Process. The console line shows this for each component.
"arm-none-eabi-gcc.exe -mcpu=cortex-m3 -mthumb -I. -IGenerated_Source\PSoC5 -Wa,-alh=.\CortexM3\ARM_GCC_541\Debug/PSOC_485_R_P.lst -g -D DEBUG -Wall..."
Any input much appreciated.
-GB
Show LessI'm trying to use the example AN82072 to send and receive some data from a psoc5 over USB. I loaded up the example workspace and programmed it onto my development kit. That seemed to work fine on my CY8CKIT-050.
I used the Windows host application included with the AN, and it seems to be connecting and getting the ADC and switch status just fine. The problem I'm seeing is with sending data from the application to the psoc. If I change the duty cycle and hit the update button, nothing happens. If I spam click the button a whole bunch of times, eventually the new value makes it through, and is reflected on the LCD. I had a colleague try it on his machine with the same result.
Seems like it might be a problem with cyusb.dll - it's ultimately using the CyHidDevice.WriteOutput() method. Maybe there's some sort of usage issue with the library, but that seems odd, given that I'm just trying to use the example as-is. I tried the Linux host example, and it worked reliably.
Show LessI am using a systick timer interrupt that looks something like this:
static volatile uint16_t timer = 0;
static int set_count = 0;
void USR_Tick(void) //ISR for systick
{
timer++;
}
void main(void)
{
while(1)
{
if (timer==100u )
{
//hardware code (take ~700 micro seconds to execute)
set_count++;
}
if (timer==200u )
{
//hardware code (take ~700 micro seconds to execute)
set_count++;
}
if (timer == 300)
{
timer =0;
}
}
}
Within my 300 ms reset, I am getting a very high value of set_count, I expect it to be 2. Is that right or am I missing something?
Show LessHello,
I am facing one issue with CY8CMBR3116. In my application, I am using 12 sensors instead of 16. Its working fine. Now as per my application need, I keep only 6 sensors enable during sleep mode of host controller by initializing CY8CMBR3116 and whenever host controller is wake up, I re-initialize the CY8CMBR3116 to enable 12 sensors. But it is observed that CY8CMBR3116 never get re-initialized. It keeps only 6 sensors enable and rest disable.
So, can you please tell me why this is happening?
The sequence I am following is as follows,
CYPRESS_CAPSENSE_DEVICE_ADD – 0x6E and All registers addresses are as mentioned in the “Capsense Controllers registers TRM” document ***
Cypress_Module_Data[0] = 0x40; /* Configure host interrupt pulse at SPO1 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SPO_CFG_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0xFE; /* CS2 to CS7 enable and CS0 - CS1 disable */
Cypress_Module_Data[1] = 0x1F; /* CS8 to CS13 enable and CS14 - CS15 disable */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SENSOR_ENABLE_ADD, 1, Cypress_Module_Data, sizeof(Cypress_Module_Data), 4);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0xFE; /* CS2 to CS7 FSS enable and CS0 - CS1 FSS disable */
Cypress_Module_Data[1] = 0x1F; /* CS8 to CS13 FSS enable and CS14 - CS15 FSS disable */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FSS_ENABLE_ADD, 1, Cypress_Module_Data, sizeof(Cypress_Module_Data), 4);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0; /* Disable Automatic threshold setting */
Cypress_Module_Data[1] = 0;
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, DEVICE_CFG2_ADD, 1,&Cypress_Module_Data[0], 1, 2); // Disable AUtomatic threshold setting.
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_SENSITIVITY; /* 0xFF */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SENSITIVITY_0_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_SENSITIVITY; /* 0xFF */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SENSITIVITY_1_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_SENSITIVITY ;/* 0xFF */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SENSITIVITY_2_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_SENSITIVITY;/* 0xFF */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, SENSITIVITY_3_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD; /* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, BASE_THRESHOLD_0_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD; /* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, BASE_THRESHOLD_1_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_2_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_3_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_4_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_5_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_6_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_7_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_8_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_9_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_10_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_11_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_12_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = FINGER_THRESHOLD;/* 100 */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, FINGER_THRESHOLD_13_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = CYPRESS_REFRESH_INTERVAL;/* 3 - 60mS refresh interval */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, REFRESH_CONTROL_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0x9E; /* Write button hysteresis value and enable overwrite */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, BUTTON_HYS_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
/*Reset The Cypress Capsense IC */
Cypress_Module_Data[0] = 0x03; /* Send calculate CRC command */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CNTRL_CMD_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0x00; /* Read the calculated CRC value */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Read(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CALC_CRC_ADD, 1, Cypress_Module_Data, 2, 4);
HAL_Delay(5);/* Delay of 5mS */
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CONFIG_CRC_ADD, 1, Cypress_Module_Data, 2, 4);//Write the CRC value to control register */
HAL_Delay(5);/* Delay of 5mS */
Cypress_Module_Data[0] = 0x02; /* Save the configuration data to non-volatile memory */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CNTRL_CMD_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(220);/* Delay of 220mS */
Cypress_Module_Data[0] = 0x00; /* Read the control command status register to check whether configuration is saved successfully */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Read(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CNTRL_CMD_STATUS_ADD, 1, Cypress_Module_Data, 1, 2);
HAL_Delay(10);/* Delay of 10mS */
Cypress_Module_Data[0] = 0xFF; /* Issue the reset command once the configuration data saved successfully */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Write(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, CNTRL_CMD_ADD, 1, &Cypress_Module_Data[0], 1, 2);
HAL_Delay(300);/* Delay of 300mS */
/* Read the values written to Cypress IC registers */
Cypress_Module_Data[0] = 0x00; /* Check written data is saved */
Cypress_Module_Data[1] = 0x00;
HAL_I2C_Mem_Read(&hi2c1, CYPRESS_CAPSENSE_DEVICE_ADD, BUTTON_HYS_ADD, 1, Cypress_Module_Data, 1, 2);
HAL_Delay(10);/* Delay of 10mS */
If any thing is missing in this sequence, please let me know.
Thanks & Regards,
Mamata Nivalkar
Show LessI have a very short main.c that assigns a SysTick interrupt with a non-volatile assigned variable (uint32 systick = 0;) named systick that gets incremented every time the interrupt occurs.
Simple. Note: Using Creator 4.2
In main(), I compare the systick value for different values to make decisions. The code 'hangs' looking for systick to get to 100. (In debug mode, the code hangs yet the systick exceeds the value be checked)
If I assign the systick as volatile (volatile uint32 systick = 0;), the code DOES NOT hang!
I think the compiler is assuming the systick variable can be register assigned (nonvolatile) in main(). Yet when I hover over the systick var, it can far exceed the value being compared.
Attached is a very small archive of the program that exhibits this issue.
Show Less