PWM channel vs PWM controller

Howdy,

I have a newby question about PWM on SITCore devices. Reading through the tutorial, I noticed there is a separation between PwmController and PwmChannel. I read the notice saying not to use GetDefault() method like other peripherals, but I still don’t understand the difference between the two objects.

If I wanted to fade two separate LEDs independently, could I use the same channel? Could I use the same controller? From a physical standpoint, what does each control? Please assume I know nothing, thanks!

A controller may have just one or more than one channel. If channels have same controller will have same frequency but can set to different dutycyle.

you should use two channels.

GetDefault() is used for some peripheral has only one controller (gpio, usb host, usbclient, watchdog…). Some peripherals has more than one controller (pwm, spi, i2c…) you need to point out what controller you wanted to use.

Alright I think I understand, to reiterate so I understand:

  • A single pwm controller operates at one frequency but can host multiple pwm channels.
  • A pwm channel is one subset of a pwm controller, usually connected to one external device, and can have its own duty cycle.
  • To control two separately fading LEDs, I could use either one or two controllers, so long as they have different channels with their own duty cycle.

If I misunderstood, please let me know–otherwise, I appreciate the clarification!

1 Like

Is there a way to have different channels on the same controller have different frequencies? I saw a “SetDesiredFrequency(PwmChannel channel, double desiredFrequency)” method in the PwmController class. Some web searches suggested that this is what this overload of the method is for. I thought I would come to the source and ask.

No way, it is hardware limitation as I know. Is there no more other pwm controller?