Child Pages

Family Comparison A comparison between the PSoC 3, PSoC 4, PSoC 5, and PSoC 5 LP. Weights up the advantages and disadvantages.
How To Route A PSoC Microcontroller Tips and advice when routing (wiring up/connecting) a PSoC microcontroller in your PCB design.
Programming Tips on programming PSoC chips.
PSoC Creator (the IDE) Tips regarding the PSoC Creator (IDE), such as: The types of files used (and SCM recommendations), debugging, and installing.
Development Kits Information on PSoC development kits (not just the Cypress ones).
Using C++ With PSoC Creator With a few hacks, C++ can be used with PSoC Creator.
PSoC Power Management All about the sleep modes and how to save power. Comes with great tips and code examples.
PSoC Bugs, Problems¬†And Annoyances Some of the bugs, problems and annoyances that you find after using the PSoC system for a while (not that it isn’t a great product!)
PSoC Components PSoC Creator comes with heaps of useful components that make design quicker and simpler!
Creating And Editing Your Own PSoC Components PSoC Creator allows you to create your own (or edit existing) components, a powerful feature which allows you to capture both hardware (VDHL hardware) and software and package it into a reusable “block” which can be dropped into other projects.
Installing And Using emWin On A PSoC How to install and use emWin, the powerful graphics library by SEGGER that you can use for free with PSoC Creator.
Interrupts How to use interrupts on a PSoC microcontroller. Covers both component based interrupts (also check out the PSoC Components page) and code based interrupts.
Data Types All about the data types you can use while writing firmware for the PSoC.
Porting How to port code from PSoC 3 to PSoC 5.
Useful PSoC Macros Useful PSoC macros that you can use to determine what PSoC version the code is compiling for.
Low Volume Production With PSoC Microcontrollers Tips when entering the low production stage of production using PSoC microcontrollers.
Controlling Registers How to read and write from all kinds of registers on a PSoC device.


psoc-5-cy8c5246ax1-054-microcontroller A schematic drawing of the PSoC 5 CY8C5246AX1-054 microcontroller.

Programming tips and hints when using the Cypress PSoC programming suites (either PSoC Creator or PSoC Designer).

PSoC Creator integrates graphical design with automatic hardware routing with VHDL and a c code application programming/debugging interface.

psoc-9-pwm-and-32-input-adc An example of a design in PSoC Creator showing the great hardware possibilities and flexibility allowed with the PSoC 3 and 5 microcontrollers.


PSoC devices are great in the fact that almost all hardware peripherals are reconfigurable to any port/pins. You don’t have specific ports/pins for UART peripherals, nor for ADC’s e.t.c. However, I have to say almost, because there are some restrictions. These include:

  • Power/ground pins – These are fixed (not really a big surprise there)
  • Reset pin – This is also fixed. You could make another reconfigurable reset pin by using a GPIO, an interrupt, and a software reset, but this would have slightly less functionality
  • External oscillator pins – If you want to use an external oscillator for better timing, it has to be connected up to specific pins (seperate pins for kilohertz and megahertz ¬†oscillators)
  • Op-Amp Inputs/Outputs – I think these are pre-defined to optimise resolution/signal-to-noise ratios.
  • USB D+ and D- pins – Because of the high communication speeds of the USB protocol, these pins require special design and hence are fixed.


Both PSoC 3 and PSoC have modules that make bootloading easy. Currently they support the I2C or USB interface. Cypress has also made a computer-based app to install new program code. In literally takes 5mins to set-up a bootloadable PSoC application. You can also modify the code to run with a different comms interface (e.g. UART) with not too much difficulty.

FreeRTOS and PSoC

As far as I know, there are three ports for the PSoC family for using freeRTOS, all for the PSoC 5 family. Two are supplied with the freeRTOS download (i.e. officially supported), and the other is availiable on the Cypress forums (specifically, here).

The two official ports both have the same functionality, but one is for the GCC compiler while the other is for IAR. It utilises the CY8CKIT-001 development board and features some sophisticated RTOS feature tests, as well as flashing the lights and using the LCD screen. The unofficial port is targeted for the same dev board, but is much simpler and just flashes two lights.

They all use the native ARM M3 timer interrupt for the RTOS tick, which can be misleading since this is not set-up graphically (as most interrupts are, you can see them on the schematic editor). However, it is pretty easy to change this tick to run off a different source, such as the sleep timer, and ignore the ARM timer interrupt completely.

You can find various FreeRTOS firmware modules for the PSoC microcontroller on my GitHub account. This includes:

Other Resources

  • The Cypress website naturally has tons of information about PSoC devices. A really handy feature is that the IDE has one-click links to the datasheets with many of the supplied “components” (blocks of code).
  • Planet PSoC ( is a small website with some information and block designs for PSoC 1 and PSoC 3 devices.