PSoC™ 5, 3 & 1 Forum Discussions
Could anyone please provide the road-map for PSoC 3 (CY8c3866axi-040) and Buffer IC (CY2304SXI-2).
Also, suggest the next better alternative if it is about to become obsolete.
Show LessHello,
I am troubleshooting a commercial consumer USB HID which uses the CY8C24894-24LTXI .
I do not have a MiniProg to debug it or program it.
The board developed an issue, the cause of which is unknown to me, where it fails if initially powered with a voltage above approx. 3.45V. Simply plugged into a computer USB port, the device fails to be recognised/enumerated by Windows (device descriptor failed).
The board is USB powered via bus (not self powered via external power supply). There are no indications that it's meant to work at 3.3V (no 3.3v LDO regulator on board that I can see, and the LEDs on the physical device itself are too dim on 3.3V). There is no physical damage visible on the board, bypass caps are present (capacitance or ESR was not measured, all ceramic caps no electrolytic), although the inline resistors for the D+/D- line are 27Ohm, which is outside the recommended values as per the datasheet. Regardless, the device was working without incident for several years and still works at 3.3v which implies that there is no catastrophic/dead shorts on board.
Using a bench power supply to investigate the issue, I have found the following.
If initial voltage below 3.45V is applied, the device works fine. If Voltage greater than that is applied on startup, the device hangs and Windows does not recognise it (error 43 type, device descriptor failed).
However, if the board is booted with <3.45V (ideally 3.3v) then the voltage can be manually increased until 3.95V (this value is consistent), upon which the chip hangs and USB traffic ceases.
The internal 3.3v regulator seems to work, at least superficially, as I can detect some 3.25v traffic on the USB data lines when trying to boot it at 5v.
When booted at 3.3v and then manually raised up to 3.95v the voltage of the traffic on the usb lines seems to rise to around 3.45v.
I tried to see if the Voltage on the USB data lines goes out of spec as per the datasheet (+3.6v or -0.3v) but I got not triggers on the scope at those levels.
I have thoroughly checked the documentation and app notes but I did not find anything that fits the failure conditions/triggers.
Your help and guidance would be greatly appreciated.
Show LessDear Sirs and Madams,
I am investigating the operation of SysTick timer.
I got a sample project of SysTick timer. Thank you.
PSoC5LP : How to use SysTick timer
I added hibernate mode to the sample project.
You can see that CyPmSeveClocks API switches the SysTick timer to IMO.
In other words, I understand that the SysTick timer does not stop on CyPmSeveClocks.
The CyPmHibernate API after CyDelay API has stopped the SysTick timer interrupt.
Do you know where the Systick timer interrupt is stopped in CyPmHibernate API?
Even if you check it with the debugger, you will not be able to check the SysTick timer interrupt when stepping.
Regards,
Show LessHow small can I get the clock-to-output delay for a UDB implemented component?
I've tried designing a simple experiment with a toggle flip flop driven by an external clock input (SCL) and sending it to the output pin (SDA). The static timing analysis seems to be telling me it will take nearly 36 ns to update the output pad (see below.) Is this a good figure, or am I missing something significant? I had been hoping for something closer to 8-12 ns.
Source | Destination | Delay (ns) | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cy_tff_1/q | SDA(0)_PAD | 35.430 | ||||||||||||||||||||||||||||||||||||||||||
|
Hello,
I am writing a custom component to drive WS2812 pixels with as less hardware as possible. I am already done with Verilog part, but I can't get DMA working. When I write to FIFO using CPU, it is working as expected. When I try my DMA code, nothing happens.
Does anyone see what I am doing wrong? I need to use DMA. Simultaneously driving 24 strings + generating patterns seems like too much for CPU only approach.
Thanks in advance,
Stanislav
#include "cytypes.h"
#include "cyfitter.h"
#include "`$INSTANCE_NAME`_DMA_dma.h"
#define `$INSTANCE_NAME`_Data_Reg `$INSTANCE_NAME`_WS2812Internal_Shifter_u0__F0_REG
#define `$INSTANCE_NAME`_DMAStatus_Active 0
#define `$INSTANCE_NAME`_DMAStatus_Completed 1
#define `$INSTANCE_NAME`_DMAStatus_Failure -1
void `$INSTANCE_NAME`_InitDMA();
void `$INSTANCE_NAME`_InitIRQ(cyisraddress isr);
void `$INSTANCE_NAME`_SendDMA(uint8_t *data, uint16_t count);
uint8_t `$INSTANCE_NAME`_GetDMAStatus();
void `$INSTANCE_NAME`_WaitDMAComplete();
Show Less#include <project.h>
#include "cytypes.h"
#include "stdlib.h"
#include "cyfitter.h"
#include "`$INSTANCE_NAME`_WS2812.h"
uint8_t `$INSTANCE_NAME`_DmaChannel;
uint8_t `$INSTANCE_NAME`_DmaTd;
void `$INSTANCE_NAME`_InitDMA()
{
`$INSTANCE_NAME`_DmaChannel = `$INSTANCE_NAME`_DMA_DmaInitialize(1,1,HI16(CYDEV_SRAM_BASE),HI16(CYDEV_PERIPH_BASE));
`$INSTANCE_NAME`_DmaTd = CyDmaTdAllocate();
}
void `$INSTANCE_NAME`_InitIRQ(cyisraddress isr)
{
`$INSTANCE_NAME`_IsrTxComplete_StartEx(isr);
}
void `$INSTANCE_NAME`_SendDMA(uint8_t *data, uint16_t count)
{
CyDmaTdSetConfiguration(`$INSTANCE_NAME`_DmaTd,count,`$INSTANCE_NAME`_DmaTd,CY_DMA_TD_INC_SRC_ADR | WS2812_1_DMA__TD_TERMOUT_EN );
CyDmaTdSetAddress(`$INSTANCE_NAME`_DmaTd,LO16((uint32)data),LO16(`$INSTANCE_NAME`_Data_Reg));
CyDmaChSetInitialTd(`$INSTANCE_NAME`_DmaChannel,`$INSTANCE_NAME`_DmaTd);
CyDmaChEnable(`$INSTANCE_NAME`_DmaChannel,1);
CyDmaChSetRequest(`$INSTANCE_NAME`_DmaChannel,CPU_REQ);
}
uint8_t `$INSTANCE_NAME`_GetDMAStatus()
{
uint8_t state;
if(CyDmaChStatus(`$INSTANCE_NAME`_DmaChannel,NULL,&state) == CYRET_SUCCESS)
{
if((state && STATUS_CHAIN_ACTIVE) == STATUS_CHAIN_ACTIVE)
return 0;
else
return 1;
}
return -1;
}
void `$INSTANCE_NAME`_WaitDMAComplete()
{
uint8_t state;
while(1)
{
CyDmaChStatus(`$INSTANCE_NAME`_DmaChannel,NULL,&state);
if((state & STATUS_CHAIN_ACTIVE) == 0)
return;
}
}
This is weird problem faced by me. I stucked from days. I have given a task to add some features like pwm to the firmware. I am using 29666 psoc1 chip 32kb . Almost 95% chip is used. however there is some place for pwm16 module to be added.
My problem is I successfully added the pwm 16 module and updated the boot.tpl for appropriate isr on correct block interrupt but still my code under ISR routine doesnt get executed as i am not getting the interrupt call within the firmware.
Is it that if chip is almost full with firmware starts giving error.
Show LessHello
I am having some problems connecting the ice cube with the pod
I could download a design but I could not connect the pod and it shows me an error
"could not detect the pod"
The power led of the pod turns on for a few seconds but vanishes when connection is attempt
Thanks for any help....I would like to power my pod to make a circuit debug
Show LessHi...
On my PCB MCU CY8C26643-24PI is mounted and which is working with software.
And now that MCU gone faulty and i want replace it with new fresh MCU.
So for that i have programme it or will it work directly.
Already we are giving commands from PC.
Show LessI want to use timer 8 capture and terminal count isr in my code . how to to that. psoc designer 5.4 gives opportunity to either use capture isr or terminal isr. but is there any way to use both isr at once in firmware.
My psoc1 29666 is almost out of resources and i cant generate the pwm using the hardware digital block. I want to use capture isr and terminal count isr to toggle the output pin for desired pwm. pwm frequency is very low in few hz. so my firmware will handle. But i can see how to generate the two simultaneous isrs in firmware.
Show Less