Why the PSOC4 is a POS..a brief reply to some Corporate comments:
I said, "The PSOC4 documentation for most UDB (functional blocks such as PWM ADC etc) are so very vague and poorly explained that it required hours upon hours to experiment, trying to understand how to get these functional blocks to work.
For instance the PWM requires code to turn off and on the PWM just to set Duty Cycle to zero, else the DCyC reverts to 100% when it should be 0, (PWM single output compare match for PWM Duty Cycle) for a simple single-output PWM."
-------------------------------------------------
But some kind of Cypress apologist says,"I disagree that the datasheets are vague. If anything, they are excruciatingly detailed, going into clock cycles for various commands, memory usage, interactions with other parts and more. For example, just the PWM datasheet alone is 46 pages, the ADC datasheet is 30 pages, etc. They also note in every datasheet that you can get example code and sample projects right from within Creator by clicking "File -> Example Project". There you can filter by PSoC family, chip range and example type. There are 3 example projects just for the PSoC4, 4200 family, ADC which show the component in use (and you can compile and use the samples if you like)."
-----------------------------------------------------
Let us look at my experience with creating a simple PWM:
Eager to learn how to use this part, I enthusiastically found that Cypress offers two Tutorial Videos (each less than a few minutes long) about how to use PSOC Creator. In fact, the first introductory video features how to create a PWM without using any C-code.
What astonished me was how Cypress might consider this as such wonderful HW accomplishment of PSOC Creator. If I wanted to blink a LED without any C-language code, me or any other electronic noobie could so easily do this with a 555 timer rather than going to the trouble of purchasing a PSOC4 eval. kit. It would seem the purpose of any tutorial on how to use a powerful, versatile 32-bit CPU would be to show that the chip could be programmed, to be used for something more than blinking an LED, to be programmatically used for something more than the most trivial of MCU tasks.
Secondly, after going through the 40 or so pages explaining the PWM UDB, I was quite astonished, that all this info does not even show how to code the most common and simple single output PWM module. I would expect to be quickly shown how to create a single output PWM (that is, a PWM UDB with a single output that can be programmed to vary from 0 to 100% to control power without dangerously reverting to 100% duty cycle when a programming attempt is made to set the duty cycle to 0.) But I don't find this coding info, almost no useful c-code for any PWM purpose.
Ok, so I reminded by some Corporate advice, "There are always Examples to further explain how to use a UDB (in this case PWM) module.
So I search the Cypress 42xx family Project Examples of PWM and I find the one and only one PSOC4 Example It clearly shows me how to initialize and start an example PWM, nothing more, actually showing a few lines of c-code, however it amounts to nothing, just what is needed to start the PWM module, nothing about usefully controlling duty cycle.