16. PWM Configuration Defaults

#include <iostream>
using namespace std;

// Default frequency = 1000 Hz
// Default deadtime = 0 us
void setPWM(int duty, int frequency = 1000, int deadtime = 0) {
    cout << duty << " " << frequency << " " << deadtime;
}

int main() {
    int duty, mode;
    cin >> duty >> mode;

    if (mode == 0) {
        setPWM(duty);                      // use both defaults
    }
    else if (mode == 1) {
        int frequency;
        cin >> frequency;
        setPWM(duty, frequency);           // override frequency only
    }
    else if (mode == 2) {
        int frequency, deadtime;
        cin >> frequency >> deadtime;
        setPWM(duty, frequency, deadtime); // override both
    }

    return 0;
}

Explanation & Logic Summary:

Default arguments allow setPWM to be called with 1, 2, or 3 parameters using a single function definition.

The required parameter (duty) appears first, followed by optional parameters with default values.

  • If only duty is provided, both frequency and deadtime use defaults.
  • If frequency is provided, only deadtime uses its default.
  • If all parameters are provided, all defaults are overridden.

This enforces C++’s rule that default arguments must appear at the end of the parameter list.

 

Firmware Relevance & Real-World Context:

PWM drivers frequently expose optional configuration parameters such as frequency and dead-time.

In real firmware:

  • Basic applications may adjust only duty-cycle
  • Advanced applications tune frequency and dead-time for efficiency or safety

Using default arguments enables clean, scalable embedded APIs that support both simple and advanced use cases without code duplication.

This mirrors real-world motor control, LED dimming, and power electronics firmware design.

 

 

 

 

Loading...

Input

50 0

Expected Output

50 1000 0