PSoC™ 5, 3 & 1 Forum Discussions
I have added a currently used project as a template with 'Set As Active Project' and then 'Copy To My Templates'. Regardless when I try to open a new project from the template, I don't see my project on the list of templates. When I try to create a new template from the same project, P. Creator warns me the template is already saved.
I have also tried to restart P. Creator and create a new project or add a new project (while in a workspace). Either way, the template never appears. What's the solution for this issue? The picture: there should be another template on the list.
NOTE: I have tried to save another project as template and it appeared on the list straight away. Is there a rule for templates? What am I missing here?
Show Less
I want to test PWM with lowpass filter as a DAC, reading samples from a lookup table (sine wave). On the scope I do not see the width changing at all. What am I missing? Does the ISR have to be in sync with the PWM's clock?
#include "project.h"
#include "LUT.h"
int sineTableIndex;
int sineTableSize = 255;
uint16_t low = 10;
uint16_t high = 5000;
int main(void)
{
PWM_1_Start();
Clock_1_Start();
Clock_2_Start();
isr_1_Start();
CyGlobalIntEnable; /* Enable global interrupts. */
for(;;)
{
}
}
CY_ISR(isr_1){
PWM_1_WriteCompare(sineWaveLUT[sineTableIndex]);
(sineTableIndex==sineTableSize) ? sineTableIndex=0 : sineTableIndex++;
};
/* [] END OF FILE */
Show Less
I am trying to update the firmware in some devices, but when ever I plug in the miniprog3 into my Computer, I get the USB not recognized error in windows. If I reboot, or let it sit unplugged for a while (sometimes hours) it might work, but then will fail when I go to turn on the units power., which then tells me to disconnect the USB again to fix the issue. This causes the whole cycle to begin again.
Anyone have any advice on how to get this to work?
Show LessHi,
[context: Using PSoC 5LP]
I have the following scenario:
I'm using USBUART for console, and writing to the console works great as long as a terminal is attached in the host.
If there are no terminal attached, it keeps waiting for ever in the "while" (see code):
```
void console_print(const char* msg) {
// Loops forever if no terminal is attached
while (!USBUART_CDCIsReady())
;
USBFS_PutString(msg);
}
```
What I'd like to do detect is whether a terminal is connected... something like:
```
void console_print(const char* msg) {
// exit if no terminal is attached
if (!terminal_is_attched())
return;
while (!USBUART_CDCIsReady())
;
USBFS_PutString(msg);
}
```
How can I detect whether the terminal is attached? (or avoid waiting forever is CDCIsReady() if host doesn't have a terminal) ?
Many thanks!
Show LessWhat is the difference between these SPIM Register_TxStatus: SPI Done and SPI Idle.
What needs to happened to set SPI Idle once that SPI Done is already set?
Thanks.
Show LessI've built a bit-banging SWD programmer for performing OtA firmware updates of our product.
This programming is performed by a separate MCU connected to the PSoC.
I've been working off this https://www.cypress.com/file/119651/download document.
I've gotten everything working and I can correctly program all the PSoCs memories,
but the PSoC won't boot and function normally after the final reset.
However, if I power-cycle the system, the PSoC boots and behaves normally.
I know I am actually programming it, because it has a firmware version number that it sends over SPI to another MCU
and this does change when I program different firmware versions.
It also sends other data, which is how I know if it is working.
If I use the MiniProg 3 to program, the PSoC boots as it should.
Both the MiniProg and the bitbanger use the dedicated XRES pin on the TQFP package.
The difference is that the MiniProg plugs into a header routed to the combined JTAG/SWD interface,
while the MCU is routed to the SWD/USB pins. These pins are only used for programming, they're not used as USB or GPIO.
I have a breakout with all the relevant signals and I've scoped these
to compare my implementation with what the MiniProg does.
The MiniProg actually does things a bit different from what the official app note says,
but there's nothing special about the final reset.
It just holds down the reset for about 20ms, the release it and the PSoC boots and starts sending SPI data.
Since I've confirmed that I correctly program all the memories,
I find it really surprising that the PSoC won't just come out of reset and start working.
There shouldn't be any difference between using XRES and the PSoC doing a POR.
Thank you in advance!
Show LessHi,
my kit CY8CKIT-050 PSOC5 5LP development Kit not detected on windows 10
PSOC Creater 4.4 not detected the Kit
my hardwar Manager show DVKProg5(unconfigured)
How can i resolve it.
Show LessHi,
We've bought some CY8C5868AXI-LP035 with the final characters "ES" and I'm trying to program it on both methods: PSoC Creator (4.4) and PSoC Programmer 3.29.1 and I'm getting the follow errors:
- PSoC Programmer: Program Finished at 15:15:26 |
| Programming Terminated
ERROR! ---> | The hex file does not match with the acquired device, please check the device
Device set to CY8C5888AXI-LP061 at 15:15:26 | 262144 FLASH bytes
Device Family set to CY8C5xxxLP at 15:15:26 |
| Automatically Detected Device: CY8C5888AXI-LP061
| JtagID: 2E 13 D0 69 - PSoC Creator: "this device was recognized, but PSoC Creator does not support using at this time"
Can someone help me?
Show LessHi,
I have a PSoC 5LP using USBFS-UART component.
I tested the example that comes with PSoC Creator and works great.
But instead of polling for data by calling USBUART_DataIsReady(), I'd like to get notified when data is ready to be read (either via an interrupt or callback).
Is that possible?
Many thanks!
PS: I tried with USBUART_DISPATCH_CDC_CLASS_CDC_READ_REQUESTS_CALLBACK / USBUART_DISPATCH_CDC_CLASS_CDC_WRITE_REQUESTS_CALLBACK but it seems they are meant for something else.
Show LessDear all, I'm trying to generate 4 analog signals using a LUT, DAC and a HW multiplexer (as demux) with not much success. The idea is that the same LUT sample is placed on all the 4 channels and when the demux counter rolls over, the LUT indexed is incremented and the demux count is set to zero. This way the same signal will be placed on all the four outputs. Unfortunately, only the HW multiplexer can demux so I have no software control over it. Note that it takes two clock cycles for the demux to change channel (break and make) so the rest of the circuit runs on half the clock speed, including the demux counter.
I tried to use a UDB counter but they don't seem to have counter value output with selectable width. What am I missing?
#include "project.h"
uint8_t sineSampleSize = 255;
uint8_t sawSampleSize = 255;
uint8_t tableIndexSaw;
uint8_t tableIndexSine;
float sineAmplitudeIndex = 0.5;
float sawAmplitudeIndex = 0.5;
uint8_t sampleIncrement = 1;
int muxCount;
uint8_t sineWaveLUT[255] = {0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,
0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,
0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,
0xea,0xeb,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfb,0xfc,
0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfd,
0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,
0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xeb,
0xe9,0xe7,0xe5,0xe3,0xe1,0xdf,0xdd,0xdb,
0xd9,0xd7,0xd4,0xd2,0xcf,0xcd,0xca,0xc8,
0xc5,0xc3,0xc0,0xbd,0xba,0xb8,0xb5,0xb2,
0xaf,0xac,0xa9,0xa6,0xa3,0xa0,0x9d,0x9a,
0x97,0x94,0x91,0x8e,0x8a,0x87,0x84,0x81,
0x7e,0x7b,0x78,0x75,0x71,0x6e,0x6b,0x68,
0x65,0x62,0x5f,0x5c,0x59,0x56,0x53,0x50,
0x4d,0x4a,0x47,0x45,0x42,0x3f,0x3c,0x3a,
0x37,0x35,0x32,0x30,0x2d,0x2b,0x28,0x26,
0x24,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,
0x14,0x13,0x11,0x10,0xe,0xd,0xb,0xa,
0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,
0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x1,0x1,0x1,0x2,0x2,
0x3,0x4,0x4,0x5,0x6,0x7,0x8,0x9,
0xb,0xc,0xd,0xf,0x10,0x12,0x14,0x15,
0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,0x25,
0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,
0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,0x4f,
0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,
0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c};
uint8_t sawWaveLUT[255] = {
0x00,0x01,
0x02,0x03,0x04,0x05,0x06,
0x07,0x08,0x09,0x0A,0x0B,
0x0C,0x0D,0x0E,0x0F,0x10,
0x11,0x12,0x13,0x14,0x15,
0x16,0x17,0x18,0x19,0x1A,
0x1B,0x1C,0x1D,0x1E,0x1F,
0x20,0x21,0x22,0x23,0x24,
0x25,0x26,0x27,0x28,0x29,
0x2A,0x2B,0x2C,0x2D,0x2E,
0x2F,0x30,0x31,0x32,0x33,
0x34,0x35,0x36,0x37,0x38,
0x39,0x3A,0x3B,0x3C,0x3D,
0x3E,0x3F,0x40,0x41,0x42,
0x43,0x44,0x45,0x46,0x47,
0x48,0x49,0x4A,0x4B,0x4C,
0x4D,0x4E,0x4F,0x50,0x51,
0x52,0x53,0x54,0x55,0x56,
0x57,0x58,0x59,0x5A,0x5B,
0x5C,0x5D,0x5E,0x5F,0x60,
0x61,0x62,0x63,0x64,0x65,
0x66,0x67,0x68,0x69,0x6A,
0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,
0x75,0x76,0x77,0x78,0x79,
0x7A,0x7B,0x7C,0x7D,0x7E,
0x7F,0x80,0x81,0x82,0x83,
0x84,0x85,0x86,0x87,0x88,
0x89,0x8A,0x8B,0x8C,0x8D,
0x8E,0x8F,0x90,0x91,0x92,
0x93,0x94,0x95,0x96,0x97,
0x98,0x99,0x9A,0x9B,0x9C,
0x9D,0x9E,0x9F,0xA0,0xA1,
0xA2,0xA3,0xA4,0xA5,0xA6,
0xA7,0xA8,0xA9,0xAA,0xAB,
0xAC,0xAD,0xAE,0xAF,0xB0,
0xB1,0xB2,0xB3,0xB4,0xB5,
0xB6,0xB7,0xB8,0xB9,0xBA,
0xBB,0xBC,0xBD,0xBE,0xBF,
0xC0,0xC1,0xC2,0xC3,0xC4,
0xC5,0xC6,0xC7,0xC8,0xC9,
0xCA,0xCB,0xCC,0xCD,0xCE,
0xCF,0xD0,0xD1,0xD2,0xD3,
0xD4,0xD5,0xD6,0xD7,0xD8,
0xD9,0xDA,0xDB,0xDC,0xDD,
0xDE,0xDF,0xE0,0xE1,0xE2,
0xE3,0xE4,0xE5,0xE6,0xE7,
0xE8,0xE9,0xEA,0xEB,0xEC,
0xED,0xEE,0xEF,0xF0,0xF1,
0xF2,0xF3,0xF4,0xF5,0xF6,
0xF7,0xF8,0xF9,0xFA,0xFB,
0xFC,0xFD,0xFE
};
CY_ISR(clock_interrupt){
if(muxCount == 3){
muxCount=0;
if(tableIndexSine == sineSampleSize ){
tableIndexSine=0;
} else {
tableIndexSine += sampleIncrement;
}
} else {
muxCount++;
tableIndexSine = tableIndexSine;
}
VDAC8_1_SetValue(sineWaveLUT[tableIndexSine]);
}
int main(void){
VDAC8_1_Start();
Clock_1_Start();
Opamp_1_Start();
tableIndexSine = 0;
//Counter_1_Start();
clock_interrupt_StartEx(clock_interrupt);
CyGlobalIntEnable; /* Enable global interrupts. */
for(;;)
{
/* Place your application code here. */
}
}
Show Less