PSoC™ 4 Forum Discussions
I am going around in circles with the UDBs - how do I get data (3 bytes/24 bits in this case) from a programme into a FIFO (without using Ax or Dx)?
A trivial question, I know!
Thank you,
Mike
Show LessHi,
In PSoC 4 BLE project we want to connect as a central device, turn on scanning and monitor for advertising packets from an app. There is a problem though when turning scanning on and off while connected. I tracked this down in the BLE stack and it appears there are start and stop flags that will not get cleared when connected. In the BLE event handler if the state is connected the start and stop flags in cyBle_eventHandlerFlag will not get cleared. This appears to prevent scanning starts until the flags are cleared. I was clearing them manually but the BLE stack started crashing.
Can some please tell me how I can start and stop scanning while connected as a central device.
Thank you, James Osborne
Show LessHello,
I want to Drive RGB LED strip using PSoC 4100S Plus family member CY8C4146.
So my questions are,
1. How can I drive the RGB LED strip like WB2812?
2. Is UDBs are required to drive the RGB LED strip?
Because there is no UDB in PSoC 4100S Plus.
Thanks in Advance.
Show LessGetting errors I cannot resolve trying to configure a CYBLE-212006-001 project.
Please see the attached bundle.
Here are images of the error and the reason I cannot understand what the fix it.
Show Less
Hello
I am attempting to build a system that uses an I2C sensor. it is an RHT sensor. this is the firmware datasheet
https://paramair.de/app/uploads/2018/01/Amphenol-manual-TELAiRE-ChipCap2-T9602.pdf
I am attempting to read the sensor at a distance. Initially, the distance was 1 m and everything is fine. I googled it and found that i can read at a cable distance of 10m if i switch the baudrate from 100 Kbps to 10 Kbps. (i can read 1 meter at 100 Kbps and 10 meters at 10 Kbps). I really really need it to be able to read at a distance of about 7m (24 feet). Is this theoretically possible? because it works! and i do not understand the math behind it.
In addition, when setting the I2C Master componenet baudrate in the topdesign diagram to 10 Kbps, it gives me an alert saying the actual baudrate is 52 Kbps. Is there a way i can force it to 10Kbps to make sure i have a reliable connection at 10m? or is that a sign of a greater problem. A swift answer would be heavily appreciated as i am on a time crunch.
note: I am using PSOC 4100s Plus, CY8C4147AZI-S465
Thank you so much in advance. I really like this community forum.
Omr
Show LessI am trying to program the CY8C4245AX1-483. I have a .cysch file with a PWM component. On the PWM I have a clock and pin. On the .CYDWR, I show the CY8C4245AX1-483 device and the pin. I selected the pin and configured it to port P1(6). I placed PWM_1_Start(); in my main.C file. I performed a successful build (no erros). My EVAL board is plugged into my PC's USB socket. I have a yellow light on the board and a blue flashing light. But I cannot program the board. When I go to select target and program. I don't see anything in the list. Is it possible the PSOC Creator 4.3 application does not see the EVAL board? If so, what do I need to do to get the PSOC Creator 4.3 application to see the EVAL board?
Show LessHi,
I have a project that has a W5500 and an SPI FRAM sharing the same SPI bus. All appears to be fine, but I haven't really tested the combination in anger and one thing has just struck me.
The W5500 uses SS0 from the SPI component (which is set by the SpiSetActiveSlaveSelect() call) and the FRAM is using the Serial NVRAM component with it's own CS line.
Looking at the code in the Serial NVRAM component I can't see it doing anything to "unselect" the SPI SS0 line, therefore my assumption is that this will also be active during the NVRAM operations (since it will be pulled low by the SPI operation) and therefore any FRAM operations may well have unexpected side effects on the W5500?
If I'm correct it's really not a problem since I can easily wrap the relatively infrequent FRAM calls with SetActiveSlaveSelect() calls to a non-used SS line or disconnect SS0 using the HSIOM, but this does seem like a fairly obvious omission from the code (or at least the Datasheet) ???
Does anyone know if my assumption is correct?
Thanks,
Lee.
Show LessHello every one,
we are working on a PSOC4245 based USB_UART device, we have completed the basic application functionality .now its time to add the firmware update functionality over USB-Uart. we have created 2 projects one with bootloader & Bootloadable components. in bootloader just "bootloader start(); is used. in bootloadable no code is added related to bootloading. confused about whether bootloader component handles all USB uart traffic and all communication ,flash updating thing, or do we need to add any code. kindly point me to some examples which has both bootloader & application firmware updating support example codes via USB_UART. so we can add that code to our main application.Thank you
with regards
Dr.N.Chandra sekhar,M.Tech,phd
Show LessI re-post my question from "Software Forums > PSoC Creator & Designer Software > Discusiones"
Hello, I'm doing a proyect where I have to measure the angular speed of a BLDC motor. It has hall sensors, so I measure the electrical frequency through them, then I calculate the rotary speed knowing the number of poles of the motor. But this is not my problem. I measure the electrical frequency using a timer component, which is continuosly running, when it does a capture it means an electrical turn is achieved, so I only have to calculate the difference between two consecutive captures.
The following image shows the blocks that I'm using:
The next image shows how I've configured the timer:
Then, an interrupt occurs when the timer gets a capture or finishs a period (on TC), in the code, I have to differentiate the two cases. In the first case, I have to store the value of the capture if it is the first time, or (if it isn't the first capture) calculate the "delay" between the last capture value and get a new value of angular speed. In the second option, I have to take into account that the timer has finished a period, so I increment a variable called "n_periodos" which measure the number of timer periods between two consecutive captures, the following image could clear up this method:
T0 is the last capture, T1 is the current capture, when it uses the value of actual T1, it is stored in T0 until the next capture.
- /************************************* SPEED MEASUREMENT ************************************/
- CY_ISR(ISR_SPEED_MEASURE_HANDLER)
- {
- /*=================================================================================
- * Averiguar causa de la interrupción
- * Figure out the interrupt origin
- =================================================================================*/
- status_register = Timer_speed_ReadStatusRegister(); //Se lee el registro y se limpia la interrupción
- //Read the status register, and clear the interrupt
- /*============================== INTERRUPCIÓN DEBIDA A TC =========================================
- * INTERRUPT DUE TO TC
- * Si la interrupción es porque ha llegado al final de la cuenta, y además el motor está en marcha
- * de esta forma evitamos que el timer cuente cuando esté el motor parado y la variable se desborde
- ================================================================================================*/
- if ((status_register & Timer_speed_STATUS_TC_INT_MASK) && SYSTEM_STATE.run){
- n_periodos++; //Incrementamos variable que almacena el número de períodos transcurridos
- //Variable which store the number of periods
- }
- /*========================== INTERRUPCIÓN DEBIDA A CAPTURA ======================================*/
- /* INTERRUPT DUE TO CAPTURE */
- if ((status_register & Timer_speed_STATUS_CAPTURE_INT_MASK) && SYSTEM_STATE.run){
- if (first_turn){ /* Es la primera vez */
- n_periodos = 0; //Reseteamos cuenta de los períodos
- first_turn = FALSE; //Cambiamos variable para mostrar que la próxima vez ya no será la primera
- T0 = Timer_speed_ReadCapture(); //Guardamos la captura, está en n*bits
- }else if (!first_turn){ /* No es la primera vez */
- T1 = Timer_speed_ReadCapture(); //Almacenamos el valor de T1
- delay = (T0+n_periodos*TIMER_SPD_PERIOD-T1); //Calculamos el nº de ciclos ocurridos
- T0 = T1; //Actualizamos T0
- n_periodos = 0; //Limpiamos variable que cuenta los períodos almacenados
- w_real = 60/(MOTOR.NPolePairs*delay*CLCK_SPD_PERIOD*1e-9); //Calculate the angular speed
- }
- }
- }
Well, after this vast explanation, finally I can present my problem. All looks work propertly, but sometimes, the timer looks like skip a capture, then the time measured is double, this produces an error in the velocity, showing the half of the real. The next images (get from the bridge control panel) show this errors:
The high frequency noise is easily removed with a low pass filter, but I can't eliminate these sporadic errors. If I decrease the frequency of the clock connected to the timer, these errors are more frequently. For example, with a "speed_clock = 1kHz" I get the following result:
And if I increase the frequency of the clock, the errors also are more frequently. I don't know why these errors are produced, I suspect like the timer omit one capture sometimes, because it show exactly the half of the real velocity. Somebody could help me to find a solution?
Show LessHello,
I am trying CSD Tuner for PSoC4000S with Miniprog3.
The settings of Tuner communication is below.
but, it won't connect. Why?
Best regards,
Yocchi
Show Less