Welcome in the forum, no need for paranoia,
Have a look into the cyboot component described in the "System Reference Guide" from creator help menu. Additionally go through the generated cyboot sources to see what happens there.
To start debugging from reset check the right option in Creator -> Tools -> Program/Debug -> General.
By the way: Debugging is meant to find errors and eliminate them, do you suspect any bugs in the startup code?
For your LED: Use the negated output of the PWM, will need some calculations for setting the brightness.
Happy debugging ;-)
Can not move LED control pin to negated PWM output due to PRoC routing limitations. Therefore, selected "Output line signal: Inverse output" option in TCPWM config GUI.
The PWM output pin does indeed go high when resetting to reset vector. After __libc_init_array() is called in Cm0Start.c, the PWM output pin goes low turning on the LED. Trying to step into __libc_init_array() during debug does not work and it steps over the function. Can't find this extern defined routine when searching the workspace... to determine the issue. Classic.
Update: I just tried using the negated output pin of the PWM, and it also goes low during powerup. So, both the non-negated and negated outputs of the PWM go low during powerup. Therefore, they are not complements to each other.
How many other components have unpredictable/uncontrollable behavior during powerup? Can this problem be solved in the GUI IDE, or do I need external circuitry to control the startup behavior of PRoC module pins?
New discovery: If I choose a PWM output pin that does NOT support a negative PWM output selection (ie.. TCPWM.line_out of which there is no selection for TCPWM.line_out_compl), the component works properly. So, looks like dual output PWM instantiations do not properly execute correct levels on startup.
You should have a look into AN60616 which describes the startup procedure for PSoC3 and 5. This is also applicable to PSoC4 chips-
Before the components have been initialized all pins are in high-z state. To overcome your problem, I would suggest to initially configure your LED-pin to high-z and at the time you start(ed) the PWM set the pin's configuration to your required drive mode using Pin_SetDriveMode() API.
Attach your project so I can make my suggested changes.To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.
OK.. thanks. See attached config that was req'd. Hopefully, the additional Qty-2 LED colors PWM drivers will work the same. (ie.. CREE LED used on the BLE Pioneer kit).
Bob. Thanks for the help.
You have defined an analog pin for the blue LED. As my experiences are: this will not work.
OK. See below verbatim comment from Cy tech support:
You don't want the LED to be turned on for a small duration after reset/bootup. Have I understood your question correctly?
If that is the case, there is a simple workaround:
a) Configure the Pin to 'High Impedance Analog' in the configuration window of the pin.
b) Use the Pin_SetDriveMode() API in your program after your PWM has started, and change the drive mode to whatever you prefer.
I reverted config GUI define to digital output : HW connection type w/ Hi-Z digital drive mode and it works too.