Certain aspects of the MCAF utilize the functions provided by the HAL,
but the choice of behavior lies within the MCAF.
Some of these choices have been made to facilitate portability between
devices that have different underlying peripheral mechanisms.
Customers for whom
CPU or peripheral performance is a severe constraint that takes
precedence over portability and maintainability, should consider
modifying the HAL as necessary to meet those constraints. Microchip does
not recommend this approach unless absolutely necessary.
4.9.1.2. Overcurrent fault detection and clearing
MCAF requires a two phase fault clearing scheme to reset the latch circuitry. In order to clear the fault in Latched mode in dsPIC33EP devices, it is necessary to clear the interrupt flag and enable the fault mode at the next PWM cycle. Please refer to DS70645C p.14-101 for additional information.
Phase 1 occurs at current PWM cycle
- 33EP: Disable the fault latch mode
- 33CK: Clear the fault latch
Phase 2 occurs at the next PWM cycle
- 33CK & 33EP: Clear the fault interrupt flag
- 33EP: Enable the fault latch
4.9.1.3. Analog-to-digital conversion
Some of the ADC inputs have strict timing requirements, as shown in Table 4.7.
(At present, MCAF requires a fixed \(f_{PW\!M}\) = 20 kHz.)
Table 4.7 Sampling requirements for MCAF
Analog input |
Sampling frequency |
Timing requirements |
Motor currents (A,B,Sum) |
\(f_{PW\!M}/K\) |
Sample near the center of the PWM cycle(typically the start of center-aligned cycle).
All samples should be complete within some small time Tskew. (Typically 1 μs or less) |
DC link voltage |
\(f_{PW\!M}/K\) |
K=1 or K=2 typical. (Minimizing K is preferred.) Otherwise, no strict timing requirements |
Potentiometer |
\(f_{PW\!M}/K\) |
Depends on the application; MCAF uses K=2. Otherwise, no strict timing requirements |
Given the above constraints, multiple ADC sample scheduling schemes can be used. The timing diagrams below show the sampling schedules of motor phase currents, DC link voltage, and potentiometer in both 33CK and 33EP.
Figure 4.10 shows an example of dsPIC33CK devices with multiple cores (such as the dsPIC33CK64MP105, and dsPIC33CK256MP508) sampling motor currents phase A and B simultaneously at the beginning of the center-aligned PWM cycle. After motor current phase B, with less than 1 μs between samples, the shared core sequentially samples the DC link voltage, and potentiometer, followed by the end of conversion of the potentiometer which triggers the ADC ISR.
Figure 4.11 shows an example of dsPIC33CK devices with a single ADC core (such as dsPIC33CK64MC105) sampling analog inputs: motor currents phase A, B, DC link voltage, and potentiometer sequentially. At the end of the conversion sequence the ADC ISR is triggered and executes.
Figure 4.12 shows an example of dsPIC33EP256MC506 sampling all analog inputs simultaneously at the beginning of the center-aligned PWM cycle, with the exception of the potentiometer input. After analog inputs have been sampled and converted this triggers the beginning of the ADC ISR. At the next center-aligned PWM cycle the shared ADC core is switched from sensing DC link voltage to sensing the potentiometer input. At the next PWM boundary this cycle repeats.
4.9.1.3.1. Difference between 33EP and 33CK PWM modules and its implications on ADC operation
To measure the motor phase currents accurately the ADC must begin sampling in the middle of the low-side duty cycle pulse. This is to allow enough time for current sense signal conditioning to settle and charge the ADC sampling capacitor before the low-side pulse has ended.
Figure 4.13 shows the difference between symmetric and asymmetric dead time. In symmetric dead time high-to-low transitions are advanced by DT/2 and low-to-high transitions are delayed by DT/2. In asymmetric dead time low-to-high transitions are delayed by DT. This figure also shows that in asymmetric dead time insertion the PWM deadcenter event is delayed by T1.
- dsPIC33EP:
- Implements symmetric dead time in PWM module
- Due to symmetric dead time the beginning of the center-aligned cycle is aligned with the center of the low-side pulse.
- No delay is required to ensure sampling/conversion occurs in the middle of the low-side pulse.
- dsPIC33CK:
- Implements asymmetric dead time in PWM module
- Due to asymmetric dead time the beginning of the center-aligned cycle is slightly ahead of the center of the low-side pulse.
- We suggest adding a small delay of half the dead time to the ADC trigger to ensure sampling/conversion occurs in the middle of the low-side pulse.
4.9.1.4. PWM update options
For center-aligned PWM, there are several choices that determine when
updates to the PWM duty cycle registers
are actually loaded into the PWM generator for use.
These choices usually include the following:
- immediate update — duty cycle register updates are
loaded into the PWM generator immediately. This has the lowest
additional delay, but can cause extra output transitions
(for example, if the duty cycle registers are updated
from an older larger duty cycle, to a newer smaller duty cycle,
after the older duty cycle has already caused a low-to-high transition,
but before the newer duty cycle would cause a low-to-high transition)
or fall within known errata of the PWM module.
Immediate update is not recommended for use with MCAF.
- single update (single synchronous update) —
duty cycle register updates are loaded into the PWM generator
at the start of the center-aligned PWM period. This creates only
one opportunity per PWM cycle for control loops to update the duty cycle.
- double update (double synchronous update) —
duty cycle register updates are loaded into the PWM generator
both at the start and the center of the center-aligned PWM period.
This creates two opportunities per PWM cycle
for control loops to update the duty cycle.
The choice of update creates an effective delay
in the current control loop timing.
The critical metric is the
sample-to-update delay
\(T_{su}\),
which measures the time between the instant that information
is available from ADC sampling, until a new set of PWM duty cycles
is loaded into the PWM generator.
Single update and double update are shown in
Figure 4.14.
Double-update PWM allows for a minimum delay \(T_{su}\)
of one half PWM cycle. Single-update PWM allows for
a minimum delay \(T_{su}\) of one full cycle.
The actual delay depends on how quickly the control loop
executes the critical code between ADC sampling
and PWM duty cycle register update.
Double update is recommended for MCAF, to reduce sample-to-update delay.
In dsPIC33C devices this feature is disabled by default
and needs to be enabled in the peripheral configuration.
In dsPIC33E devices this feature is enabled by default
and does not require or allow any change in peripheral configuration.
(Note: For dsPIC33E please check the device errata. Earlier silicon
revisions for some devices implement the single-update behavior
rather than double-update behavior.)
4.9.1.5. Board service module
The board service module in MCAF works with Hardware Access Functions (HAF)
in the HAL in order to provide MCAF with board-level functionality.
It provides two main board-related features: a board handler and a
PWM bootstrap charging routine.
4.9.1.5.1. Board handler
The board handler includes interfaces to configure and execute a
board service process. The board service process uses a timer to periodically handle board level services. Working with appropriate HAL interfaces,
the board handler provides services to push buttons, potentiometer
and configurable PWM drivers (if available) to user-level applications, such as the sample application.
4.9.1.5.2. PWM bootstrap charging routine
The PWM bootstrap charging routine includes interfaces to initialize
and execute the PWM bootstrap charging process.
During the PWM bootstrap charging process, PWM bootstrap capacitors
are sequentially charged up at a controlled rate. (see errata)