PSoC™ 5, 3 & 1 Forum Discussions
1: My design is getting more complex, and I have a lot of wires that are long and snake around. I'd like to use something like Net Names in Altium to connect things, rather than having snaky wires. Can I do that, and if so, how?
2: I have a lookup table that I want to drive from a counter. The counter output is a bus [2:0] and the LUT has three discrete inputs, IN0, IN1, IN2. How do I connect these?
Show LessI'm having trouble getting accurate readings from the delsig adc on a CY8CKIT-050 PSoC® 5LP Development Kit. For starters, despite compensating with setting the offset the adc reads a constant 1.3V whereas my multimeter and other CY8CKIT-059 read a constant 0.8V. Furthermore, the readings have sharp spikes in them despite a stable input. I have attached my project below.
Show LessHello,
I need to take samples from SAR ADC at constant rate of 100Ksps and resolution of 8 bits. I read the datasheet of the ADC and relevant ANs (Starting with DMA, ADC buffering using DMA, DMA advanced topics, etc...). For the samples logging I used the "Teraterm" software. Before starting the design, I wrote a small program which sends data via USB UART and saw that it rate is about 230 KBytes/sec, which enough for ADC with 100Ksps of 8 bits/sample .
I saw a lot of examples, while most of them take some amount of samples from ADC, stop sampling and send the samples via DAC or serial interface. This kind of solution isn't good for me, I need a constant sampling rate, I can't lose samples. The only similar example to my case was EP8353 ("ADC to Filter – Dual Channel 16-Bit Streaming using DMA"), but there the author didn't sent the samples via USB UART.
My idea is using 2 DMA channels, while ADC writes to the one of them, I am reading from the second and vice versa (in my previous design I did the same trick using one common array and one DMA, the result was the same.. 😞 ). The data that I got wasn't as expected, it seems that there is overlaps..., and some missing writes to register (data that sent was from previous filling of the same register, please see attached picture).
The results are better (but not perfect) at sample rate of 10 Ksps than 100Ksps.
I thought about few solutions (but I assume that there is more elegant solutions...)
1. I thought about using intermediate register as described AN61102 ("ADC Data Buffering Using DMA", page 16), but I don't fully understand how this serial process can help, while I try to implement a parallel process (I try to live more time to USB UART if there will be any delay, due to flow control for example...?)
2. I afraid that the bit rate using USB UART with TeraTerm isn't constant (maybe average rate is sufficient but the momentary is not) and I need to use full USB part..?
3. Adding local memory..., too complicated.
If you can share some ideas how to implement streaming of 100Ksps, 8 bits/sample ADC's data via USB UART it will be great.
Thank you.
Alex.
Show LessI pressed the reset/xres switch on a cy8ckit50 (psoc5) board and now windows and psoc creator cant recognise the device. What is the fix for this?
Show Lesshello
I am a starter of psoc devices. I have bought CY3210-PSOCEVAL1 and CY3215A-DK In-Circuit Emulation Lite Development Kit.I have read a lot of documents about debugging and find that I also need to buy CY3210-29466 or CY3250-29***. But I have a doubt about how to connect these pod to the target board of CY3210-PSOCEVAL1 as there is no socket for the pod on the evaluation board. The picture of the evaluation board is displayed below.
Looking forward to your help!
Show LessDear Forum readers,
I have been having an issue on the Psoc5, and 5lp series parts when running in debug mode. My problem is when I have a system tic isr that goes off at 1000-10000 times per second to update counters. I am wanting to debug a separate unrelated section of code. So ill set a break point and then attempt to single step through the code I want to inspect. I need the interrupts turned on to get into this section of code. Counter counts up and then executes specific code once counters reach a specific value. So I'm in the code I need to debug. I'll set a break point and the code execution stops. Now I want to single step to the next line of code, Click the single step button and then I am in the ISR and not where I want to be. Ok, I'll click the jump out button and then I'm at the beginning of the isr again. The only way to get back to the break point is to click the play button. At this point I'm back where I started and I click the single step button and I'm in the isr again. I am hoping the part/debugger has a way of allowing me to use the single step mode while the interrupts are enabled. It seems like the internal clocks are not stopping when I have hit a break point and the debugger is not adding a fixed number clocks to the processor as I step thru each line of code. Each unique line of c code with x .asm instructions should equal y system clocks based upon the instruction in that specific line of c. Instead I get to a break point and the debugger stops and shows me where I am but the internal clocks on the processor keep running the clocks. The clock is coming from the cy_clock out of the schematic area which is tied to a isr. It does have the sync with master checked. Should I be using another kind of clock? I know I can also turn off the global interrupts manually after I hit my break point and reenable them once I am through debugging, but there has got to be a better cleaner way for this to work.
Thanks for the help!!
Matt
Show LessHi,
I'd like to know if there a way for one of my apps (in a PSoC 5LP Dual-App Bootloader configuration) to call something like CySoftwareReset(enum AppNum) where AppNum = { BOOTLOADER, APP1, APP2 }. I see that CySoftwareReset() doesn't take such any argument, but it would be great if it did. Is playing with the metadata the only way to tell the CY Bootloader to boot a specific app or just wait for commands from the comm link? Can I somehow use the RESET_SR0 GPIO[0,1] bits to do so before calling CySoftwareReset()? I couldn't find any doc describing how to do that, just that the Bootloadable app uses those to communicate with the Bootloader across a reset, and that these bits were off-limits to users. If that's true, they're not very General Purpose if you ask me, and they should be labeled BOOT[0,1].
Show Less
Hi,
I'm new in developing embedded systems and just trying to built my own voltmeter based on PSoC 5LP using PSoC Creator 4.0/4.1. When I try to configure the ADC_SAR I cannot set the Vref value. I have learned from the datasheet that this is normal because when using internal reference the Vref is read only (fixed 2.500volts).
Although I would like to have the input range from Vss (0V) up to Vdda witch is set to 3,3volts. So the Vref should be set to 1.6500 volts. I have no external reference voltage so have to use the internal. Please help how to perform the measurement between 0-3,3V.
Many thanks!
Gabor
hi,
I have been working on converting float value to hex value through different method.
like this:
int main()
{
char str[32];
float a = 3.1415927;
sprintf(str,"%X", *(int *)&a);
return 0;
}
This is small part of my whole program. This is working perfect with C normal IDE software but when i add this program in creator.it gives error like this:
type error in argument 2 to `sprintf'; found `pointer to __flash char' expected `pointer to char'
can anyone explain me how can i overcome this error??
i need to convert float value to hex value for my program.
Show LessI have read through all the DMA notes and USB datasheet and I am just a little confused conceptually on the best way to steam ADC data over USB. I am using the EOC on a Sequencing ADC to trigger a DMA channel from the final array of the ADC to the a ping pong buffer, and I would like to stream the data over USB. Using DMA with manual buffer management this is pretty straightforward: Each TD triggers an interrupt and the ISR sends the inactive (full) buffer to the USB using loadInEP().
I was thinking it would be better to use USB DMA with automatic buffer management since it would enable the use of a larger buffer for each loadEP (it is an ISO endpoint), but since the source array changes each time I need to call load it seems like I would have to call loadEP twice? the first time sets the new source array and the second time triggers the DMA? this is more complicated than the manual DMA it seems for this kind of setup.
If I set up DMA directly from the ADC results buffer (two bytes, since I am sequencing two channels at 8-bits each) to the USB ISO endpoint would it buffer them and send a full packet at once or would it just send a ton of two-byte packets?
Show Less