PSoC™ 5, 3 & 1 Forum Discussions
This blog post tells you how to observe memory locations in the debugger watch window. This is useful if you want to group together and view separate memory locations that are linked by functionality such as DAC configuration, DAC routing and DAC trim.
To observe memory in the XDATA space, use the following in the watch window:
*((char*)0x01yyy)
Where YYYY is a 2 byte address. This limits the addressable range for XDATA to 64KB. The char designator restricts it to a single byte, which for most debugging purposes is sufficient.
*Note: There are no spaces in the name.
Other observable memory locations:
The address spaces are limited based on address type through the watch window (Keil limit), and everything must be addressed via the 24 bit address.
XDATA: 0x01YYYY 64k limit
DATA: 0x0000YY 128 byte limit
CODE: 0xFFYYYY 64k limit
PDATA: 0xFE00YY 256 byte limit
Other types: Char is not the only allowable type. For larger values (16 and 32 bit) you can also use int and long:
*((int*)0x01YYYY)
*((long*)0x01YYYY)
Be aware though, Keil is a big endian compiler, so it will interpret memory differently than if you read it out of the memory window. For example:
In the memory map:
0x7000 0x7001 0x7002 0x7003
FE 00 00 1F
The result of the watch window:
Watch window expressions:
You can also create interesting expressions in the watch window:
In the memory map:
0x4690 0x4691
77 02
(int)(*((char*)0x014690)+(*((char*)0x014691)<<8))
This generates the following value -> 0x0277
For PSoC 5 (GCC), there are no memory restrictions for PSoC 5 so the entire register space can be accessed in the debugger.
The same techniques apply for PSoC 5 when setting up watch variables for memory locations, although the compiler is little endian oriented, so the int and long values will look different from PSoC 3 to PSoC 5 for the same value:
In the memory map:
0x7000 0x7001 0x7002 0x7003
FE 00 00 07
The result of the watch window:
Quick Reference (PSoC 3):
XDATA: *((char*)0x01YYYY)
*Limited to 64 KB, no spaces in name
CODE: *((char*)0xFFYYYY)
*Limited to 64 KB, no spaces in name
DATA: *((char*)0x0000YY)
*Limited to 128 B, no spaces in name
Quick Reference (PSoC 5):
ALL MEMORY: *((char*)0xYYYYYYYY)
* no spaces in name
PSoC®3 and PSoC®5 devices feature a Direct Memory Access (DMA) engine, which can used for data transfer between on-chip elements without any CPU intervention. The DMA engine is part of a high performance bus known as the peripheral hub (PHUB). The PHUB is a programmable and configurable central bus backbone within PSoC3/PSoC5 devices that ties the various on-chip system elements together. It consists of multiple spokes; each spoke is connected to one or more peripheral blocks.
The DMA with the help of Transaction Descriptors (TD) can move data from a source to destination at very high speeds. The TDs can be chained together to perform complex data transfers. The following diagram illustrates a simple data transfer using DMA.
The key features of PSoC® 3 and PSoC® 5 DMA are:
- 24 DMA channels
- Each channel has one or more Transaction Descriptors (TDs) to configure channel behavior. Up to 128 total TDs can be defined
- TDs can be dynamically updated
- Eight levels of priority per channel
- Any digitally routable signal, the CPU, or another DMA channel, can trigger a transaction
- Each channel can generate up to two interrupts per transfer
- Transactions can be stalled or canceled
- Supports transaction size of infinite or 1 to 64k bytes
- TDs may be nested and/or chained for complex transactions
Please refer AN52705 - PSoC® 3 and PSoC 5 - Getting Started with DMA for information on different ways to configure the DMA channel and TD to perform data transfers. The application note also has example projects and a brief video.
Show LessHi,
we are having a problems running CY8C3866LTI-068 with external oscillators.
In our devices we are using 12 MHz external oscillator (core), and 32 kHZ external oscillator (RTC).
Can someone help me and explain what capacitors I should use with them?
In documentations its just written that they should be but there is no information about right capacitance. I expect that it should be some kind of equation..
On developer kit I can see that capacitors next to external oscillator are just on schematic, marked as "not loaded". On board there is none of them.
When we were doing tests with different capacitors (using equations that we thought that should work) it sometimes work, sometimes not.
ps. there is no problems when i switch it to use internal oscillator.
Thanks in advance for reply!
Show LessA fellow student and PSoC enthusiast Zeta,made a simple PSoC 3/5 programmer based on the EZ-USB-FX1 chip.
Its a fairly simple single sided design,and heres more about his build:
dangerousprototypes.com/forum/viewtopic.php
Show LessHi
I'm quit new with PSoc and I want to install FreeRTOS on PSOC5 So when I wnat to open the workspace from "FreeRTOS/Demo/CORTEX_CY8C5588_PSoC_Creator_GCC/FreeRTOS_Demo Workspace.cywrk workspace file from within the PSoC Creator IDE." then it shows me the error : Error: prj.M0052: Unable to open the project "./RTOSDemo.cydsn/RTOSDemo.cyprj": (Could not find a part of the path 'C:\Program Files\Cypress\PSoC Creator\FreeRTOSv7.0.2\Demo\CORTEX_CY8C5588_PSoC_Creator_GCC\RTOSDemo.cydsn\RTOSDemo.cyprj'.). Address the error and try again.
Can you help me with solving ?
Thanks
Show LessPSoC®3 and PSoC®5 devices feature a Direct Memory Access (DMA) engine, which can used for data transfer between on-chip elements without any CPU intervention. The DMA engine is part of a high performance bus known as the peripheral hub (PHUB). The PHUB is a programmable and configurable central bus backbone within PSoC3/PSoC5 devices that ties the various on-chip system elements together. It consists of multiple spokes; each spoke is connected to one or more peripheral blocks.
The DMA with the help of Transaction Descriptors (TD) can move data from a source to destination at very high speeds. The TDs can be chained together to perform complex data transfers. The following diagram illustrates a simple data transfer using DMA.
The key features of PSoC® 3 and PSoC® 5 DMA are:
- 24 DMA channels
- Each channel has one or more Transaction Descriptors (TDs) to configure channel behavior. Up to 128 total TDs can be defined
- TDs can be dynamically updated
- Eight levels of priority per channel
- Any digitally routable signal, the CPU, or another DMA channel, can trigger a transaction
- Each channel can generate up to two interrupts per transfer
- Transactions can be stalled or canceled
- Supports transaction size of infinite or 1 to 64k bytes
- TDs may be nested and/or chained for complex transactions
Please refer AN52705 - PSoC® 3 and PSoC 5 - Getting Started with DMA for information on different ways to configure the DMA channel and TD to perform data transfers. The application note also has example projects and a brief video.
Show LessCypress Semiconductor has completed the production programming qualification for Hilo Systems (http://www.hilosystems.com.tw/). The qualification covered all electrical requirements, algorithm support (SWD protocol only), and verification of device sockets. Cypress has qualified all 48-QFN, 48-SSOP, 68-QFN, and 100-TQFP sockets from Hilo Systems for programming PSoC3 devices.
Read more about this here, http://www.cypress.com/?rID=55804&cache=0
Show LessI am using CYACKIT-00 PSOC development kit... and to check whether UART is functioning or not i tried connecting arduino Rx-Tx directly to Tx-Rx of kit and even the ground are kept common still there is no communication between the two.. what could be the possible error... reply ASAP..thnks
Show LessI'm trying to implement a VME interface using a PSoC devices, but there are some things I would know.
- How a status and controll register are accessed from uC ?
- For example, If I use two 8bit status registers for reading a 16bit data bus, using the cortex-M3, the reading will be performed contemporarily or it needs two or more clock intervals?
- How they are mapped on PSoC?
- What type of internal bus they use?
- Could I associate the same variable at two or more status or controll registers?
- There is a way to choose to use the FIFO registers contained in the UDBs or it is the IDE that assign the internal resources?
Thanks in advance
Show Less