8XC196MC, MD, MH USER’S MANUAL

The maximum output frequency depends upon the total interrupt latency and the interrupt-service execution times used by your system. As additional EPA channels and the other functions of the microcontroller are used, the maximum PWM frequency decreases because the total interrupt la- tency and interrupt-service execution time increases. To determine the maximum, low-speed PWM frequency in your system, calculate your system's worst-case interrupt latency and worst- case interrupt-service execution time, and then add them together. The worst-case interrupt la- tency is the total latency of all the interrupts (both normal and PTS) used in your system. The worst-case interrupt-service execution time is the total execution time of all interrupt service rou- tines and PTS routines.

Assume a system with a single EPA channel, a single enabled interrupt, and the following inter- rupt service routine.

;If EPA0-xinterrupt is generated EPA0-x_ISR:

PUSHA

LD EPAx_CON, #toggle_command

ADD EPAx_TIME, TIMERx, [next_duty_ptr]; Load next event time

POPA

RET

The worst-case interrupt latency for a single-interrupt system is 56 state times for external stack usage and 54 state times for internal stack usage (see “Standard Interrupt Latency” on page 5-10). To determine the execution time for an interrupt service routine, add up the execution time of the instructions (Table A-9).

The total execution time for the ISR that services the EPA interrupts is 79 state times for external stack usage or 71 state times for internal stack usage. Therefore, a single capture/compare channel can be updated every 125 state times assuming internal stack usage (54 + 71). Each PWM period requires two updates (one setting and one clearing), so the execution time for a PWM period equals 250 state times. When the input frequency on XTAL1 is 16 MHz, the PWM period is 31.25 µs and the maximum PWM frequency is 32 kHz.

11.4.2.2Generating the Highest-speed PWM Output

You can generate a highest-speed, pulse-width modulated output with a pair of EPA channels and a dedicated timer/counter. The first channel toggles the output when the timer value matches EPAx_TIME, and at some later time, the second channel toggles the output again and resets the timer/counter. This restarts the cycle. No interrupts are required, resulting in the highest possible speed. Software must calculate and load the appropriate EPAx_TIME values and load them at the correct time in the cycle in order to change the frequency or duty cycle.

11-14

Page 253
Image 253
Intel 8XC196MH, 8XC196MD, 8XC196MC manual Generating the Highest-speed PWM Output