PSoC

Overview

The PSoC ecosystem by Cypress is a range of microcontrollers (PSoC 3, 4, 5 and 5LP) and IDE’s (PSoC Designer and PSoC Creator).

Child Pages

Bootloading
PSoC 3, 4, 5 and 5LP microcontrollers have bootloader support, with easy drag'n'drop bootloader modules to speed up the development process.
Components
PSoC Creator comes with heaps of useful components that make design quicker and simpler!
Controlling Registers
How to read and write from all kinds of registers on a PSoC device.
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.
Data Types
All about the data types you can use while writing firmware for the PSoC.
Development Kits
Information on PSoC development kits (not just the Cypress ones).
Family Comparison
A comparison between the PSoC 3, PSoC 4, PSoC 5, and PSoC 5 LP. Weighs up the advantages and disadvantages.
Fault Finding
ContentsReset Cause DetectionReset Cause Detection PSoC provides the function CyResetStatus(), which returns information on the cause of the last PSoC reset. Like this:Like Loading...
How To Route A PSoC Microcontroller
Tips and advice when routing (wiring up/connecting) a PSoC microcontroller in your PCB design.
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.
Low-Volume Production With PSoC Microcontrollers
Tips when entering the low production stage of production using PSoC microcontrollers.
Outputting A Constant Length Pulse
How to output a constant length pulse using a PSoC microcontroller (both hardware and firmware solutions).
Porting
How to port code from PSoC 3 to PSoC 5.
Programming
Tips on programming PSoC chips.
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 Creator
Tips regarding the PSoC Creator (IDE), such as: The types of files used (and SCM recommendations), debugging, and installing.
PSoC Power Management
All about the sleep modes and how to save power. Comes with great tips and code examples.
Useful PSoC Macros
Useful PSoC macros that you can use to determine what PSoC version the code is compiling for.
Using C++ With PSoC Creator
With a few hacks, C++ can be used with PSoC Creator.

Ports/Pins

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.

 

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 (www.planetpsoc.com) is a small website with some information and block designs for PSoC 1 and PSoC 3 devices.
  • Pingback: How To Use C++ With PSoC Creator | Clandestine Laboratories()

  • Colin MacKenzie

    Approximately how much did the FreeRTOS kernel take up on your PSOC5 LP? Thanks.

    • gbmhunter

      Hi Colin, I can’t remember, but I’ll try and find out at work tomorrow (one of guys is currently programming with FreeRTOS on a PSoC5 LP) and get back to you hopefully within 24 hours.

    • gbmhunter

      So the figures I got were about 25kB flash, and 5kB RAM. These were rough estimates! Next time I use FreeRTOS with a PSoC 5, I’ll make sure to note the exact flash and RAM usage of the core FreeRTOS system files.

  • Colin MacKenzie

    Thanks!!!