PSoC™ 4 Forum Discussions
Hi,
I'm debugging an excessive delay in BTLE GATT server read packets, and write-response packets with PSOC4 BLE Module. Here is the setup:
PSOC4 with a Gatt server (100ms connection interval).
Raspberry Pi 4 - using gatttool to issue the char-read-hnd command.
The problem if I read using the gatttool - I can see up to 800 ms of latency between the read command, and the response packet. Is there anything in the PSOC GATT configuration that can create such long delays? I'm not sure if it's the gatttool latency on the Pi, or the response time from the CYBLE-214015 module I'm using?
Show Less
Hi,
Are there ANY drawbacks having mag-sense LX+RX pins configured with the "yellow status"?
- any risks for lower performance?
- how can I see what resources are used up due to the "non optimal" pin config!?
Also,
- what's the logic behind how magsense buttons LX vs RX can be placed.
it seems to be quite strict that a LX/RX pair can't sit on a neighbouring pin
(which is usually what you want when routing)
right now, one coil always needs a wire coming from two separate sides of the part
Show LessHi,
I am trying to look at the differences between Capsense and Magsense for a robotic gripper tactile sensor.
I am mainly curious about magsense's ability to read any object applying pressure (light to high) on the sensor, and its possible resolution and sensing speed compared to capsense. I am easily able to get a frequency of a few hundred Hz with capsense readings, with a matrix of 5x5 elements.
1. Is it possible to use some sort of compressible overlay with magsense that would help capture the presence of any object? It could be a conductive fabric or something, and the object would compress it to change inductance?
I am currently trying to implement this with capsense, but a finger is always generating a much stronger signal than any other object compressing the overlay.
2. Is magsense advantageous for fast reading and small sensor elements for a high sensing resolution?
Thanks!
Show LessHello,
The Cs formula in the CapSense_GetSensorCapacitance API of the CapSense datasheet seems to be a Single IDAC formula.
Is this API determined by this formula regardless of Single or Dual IDAC?
Best regards,
Yocchi
Show LessHi,
I want to analyze and tune a CSX touchpad widget for a project. I am using the CE228931–PSoC 4 CapSense CSX Tuning example.
I turned on the capsense BIST as they mention in the example's PDF, so I can use the BIST specific API like CapSense_GetSensorCapacitance();. However, it is unclear in the capsense 7.0 datasheet (the version I am using with PSOC4100S) what are the 3 arguments to use this method. I think the 1st argument is right in my code below, but I am not sure about the rest. The main problem is that I call it for all of the sensors (15, 3rx and 5tx) in my touchpad widget, which seems like I am doing something wrong. Also, I get wierd results in my UART terminal.. not sure if that means I am using the API wrong or if my hardware is bad! (some of the elements have 0 parasitic capacitance and others have enormous amounts, make no sense).
I am calling all of this when capsense is not busy*
How am I supposed to use this API? thanks!
Show LessBelow is my main.c just doing a simple read/write to Em_EEPROM. This is on a CY8C4247AZI-L475 (PSoc-4). This is using Creator 4.3 and Em_EEPROM version 2.2
On this first runs I had the write to Em_EEPROM commented out and it simply initialized and read 4-byte from the Em_EEPROM. The initialization and read gave "success" status and the read of 4-bytes produced 0x00 0x00 0x00 0x00. Then I introduce a write to the Em_EEPROM writing 0x00 0x01 0x02 0x03. The write also give success, and I know the write occurred because subsequent resets of the device return that exact data (0x00 0x01 0x02 0x03) for the reads. The problem is now my device is bricked. I cannot re-program it. The programmer says "failed to reacquire the device". From my debug UART port output it looks like the device is resetting and starting to run the application many times while the programmer is trying to acquire it. Both creator and stand alone programmer behave this way. SWD based programmer. Both Pioneer board and MiniProg3 behave the same.
I thought this was a strange fluke, so I did the same procedure on a new copy of my board. Same result. After writing 4-bytes to the Em_EEPROM it can no longer be programmed. What am I doing wrong here?
-------- my main.c is below --------
cy_en_em_eeprom_status_t returnValue; // used for EEPROM function returns
int main(void)
{
uint8_t eep_data[64];
CyGlobalIntEnable; /* Enable global interrupts. */
init_periphs(); // initialize debug UART
returnValue = Em_EEPROM_1_Init(&emEeprom[0]);
if (returnValue == CY_EM_EEPROM_SUCCESS) {
append_msg("success on init\r\n"); // I get this message...it works
}
returnValue = Em_EEPROM_1_Read(0,eep_data,4);
if (returnValue == CY_EM_EEPROM_SUCCESS) {
append_msg("success on read\r\n"); // I get success message...it works
}
/// The 4-bytes read are all 0x00 (viewed via debug UART) ///
/// Then I write 4-bytes to address 0 ////
eep_data[0] = 0;
eep_data[1] = 1;
eep_data[2] = 2;
eep_data[3] = 3;
returnValue = Em_EEPROM_1_Write(0,eep_data,4); // write 4-bytes
if (returnValue == CY_EM_EEPROM_SUCCESS) {
append_msg("success on write\r\n"); // I get success message
}
/// On subsequent resets of device the 4-bytes read as 0 1 2 3 (what was written)
/// however, I can never again program the device or use the debugger...it is bricked.
for(;;)
{
}
Show LessHello,
I am Using CY8C4147AZI-S445 MCU for a Battery Operated device. This device takes GPS data and send it to server through a GSM Module SIM800. This device has rechargeable batteries , about 2 months device works perfectly, but we found an issue after that, device is in continuous reset. means device wake then start for 2-3 seconds and then watchdog reset occurs. I thought it mighty be a issue of bad battery, but when I changed the battery(fully charged and working ), then issue occurs same, it means device stuck, and doesn't recover. Then I upload code again and device, works perfectly fine without any issue.
This is very bad for a system to not to be recovers automatically also when on power reset.
I also didn't use internal flash for data storage.
Code flow:
1) System Wake
2) On GSM GPS
3) take GPS reading
4) data stored in external EEPROM
5) Send data to server
6) sleep for fix time(example 5 hours)
and this cycle continuous.
Please help us to solve this problem.
Thanks
Bivay
Hello everyone,
how do i have to build a bootloader to start the second application from the bootloader? Both applications are buildable and can also be programmed on the chip.
The Bootloader is Launcher Only and i reffered the Hex and elf to the bootloadable.
The following I do not understand yet:
1. how do I install App1 together with the bootloader on the chip?
2. how do I run the App1 from the bootloader?
3. when does it start into App1 and make this program the primary one?
The bootloader has to be the launcher only, because when we update the AppX, we place the AppX so that the bootloader pulls in the program and then executes it again via the bootloader. But I have not yet reached that point.
The example program is very much broken down from our actual software and in App1 we just start an LED.
I hope you will help me to get further with this thing.
Thanks
Sven
Show LessHello I need to measure a signal's period to calculate heartbeat.
In order to achieve that, I'm trying to capture the time when the signal crosses the average of the signal so I can compare it with the next time it crosses the average and so on.
In Arduino I could use the function "millis" for that. For PSoC, I've read I'd need to install "millis.h" and "millis.c" but I haven't found those files.
Next, I read I can use a timer on continuous mode, here's where I get lost.
I understand I need to connect a 1kHz clock to the timer's clock input so the timer count changes up/down every 1ms. Then I get lost.
should I just use something like "uint32 currentCount = Timer_ReadCounter();"?
I need it to run freely and store in a variable the time in ms in order to compare. How can I achieve that?
Thanks!!
Show Less