- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I am using a PSOC-5 chip to drive 8 channel buck converter. This is a continuation of an older product that was a 5 channel buck converter controlled by PSOC-4.
(There are high frequency switched inductors on board)
The problem is that the ADC starts behaving abruptly and gives results greater than 65000. This has been confirmed using the SWD monitor. The entire control loop freezes because of incorrect ADC readout and the LED driver stops working. (The MCU is still running).
As soon as someone touches the ADC input pin by hand, the ADC magically starts functioning normally and continues to do so. It only hangs randomly during power-on. If it survives the power-on stage, it works ok. But if it hangs during power-on, then someone needs to touch the ADC pin to get it working.
The input pin is buffered by an external opamp and the voltage is well within range.
Someone please share your experience as to why the ADC will start reading out abnormally high value and get OK when someone touches it.
Thanks
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
The ADC hanging issue has been fixed.
It was a uint16 variable that was attaining a -ve value during runtime. After changing the type from uint16 to int, the program works correctly.
The only thing surprising is why touching a physical pin would effect firmware error!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try to add ~10n bypassing capacitor on the ADC input pin and see if it helps
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Does the ADC hanging issue fixed by now?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
The ADC hanging issue has been fixed.
It was a uint16 variable that was attaining a -ve value during runtime. After changing the type from uint16 to int, the program works correctly.
The only thing surprising is why touching a physical pin would effect firmware error!