I have several designs for high current motor controller using DZ60.
I am finding certain controllers designs have no issues but others will work up until a certain current and
then appears to get some kind if glitch. I suspect it is a crystal/clock circuit issue but cannot determine a method to
isolate and debug this.
A few data points:
- 12Mhz crystal (ECS-120-20-30B-DU) with 20pf/1Mohm oscillator circuit, PLL enabled, 18Mhz bus clock
- For the designs that have this issue - the glitch does not happen on every controller/motor combination.
- For the motor controller that do show the issue - they work at low currents but as the motor pwm duty is increased and current load goes up, the glitch occurs. This would be when the PCB noise is getting worse.
-The MCU is outputing a PWM signal using one of the TPMs. This signal goes to a motor control IC which takes
care of the motor control commutaion and timing. When the "glitch" occurs, the PWM output can get stuck high, low, or
at the last frequency.
- With codewarrior debugger attached, the MCU appears to jump to different instruction locations when glitch occurs(not same place every time).
The instructions are usually in areas of code that should not be being executed.
- I swap to activate internal clock and scale it to achieve nearly identical bus clock. The controller works without any glitches every time.
- I tried to play with the C and R values in the crystal circuit but it did not have any noiticable improvement.
We have a strong suspicion that the crystal circuit is being upset by the electrical noise but
cannot determine a way to prove it. Switching to internal clock is not considered an ideal solution
because of the requirement for CAN bus.
Can anyone suggest some better methods to determine if the clock circuit is the
issue or if it is something else? Feel free to ask any questions needed.