Difference between revisions of "Component: PWM (Outputs: General)"

From Flowcode Help
Jump to navigationJump to search
(XML import)
 
Line 22: Line 22:
 
==Examples==
 
==Examples==
 
Here is a basic example to control the PWM duty based on an ADC reading.
 
Here is a basic example to control the PWM duty based on an ADC reading.
 +
 
{{Fcfile|PWMDemo.fcfx|PWMDemo}}
 
{{Fcfile|PWMDemo.fcfx|PWMDemo}}
 +
 
Digital PWM trace
 
Digital PWM trace
  
Line 29: Line 31:
  
 
Here is another basic example which ramps the PWM duty cycle up and down. If the PWM output pin is connected to a LED and series resistor then the LED will smoothly transition between on bright and off.
 
Here is another basic example which ramps the PWM duty cycle up and down. If the PWM output pin is connected to a LED and series resistor then the LED will smoothly transition between on bright and off.
 +
 
{{Fcfile|PWM_fader.fcfx|PWM Fader}}
 
{{Fcfile|PWM_fader.fcfx|PWM Fader}}
  

Latest revision as of 15:56, 27 August 2019


Author Matrix Ltd
Version 1.8 (Release)
Category Outputs: General


Image PWM component

Pulse Width Modulation, a versitile way of generating a digital pulse using mark / space modulation. Uses the capture compare peripherals onboard most Microcontrollers to generate accurate waveforms without any intervention from the processor. Useful for generating audio, controlling the speed of motors, brightness of LED etc.

Examples

Here is a basic example to control the PWM duty based on an ADC reading.

FC6 Icon.png PWMDemo

Digital PWM trace

PWMDigital.jpg


Here is another basic example which ramps the PWM duty cycle up and down. If the PWM output pin is connected to a LED and series resistor then the LED will smoothly transition between on bright and off.

FC6 Icon.png PWM Fader

Downloadable macro reference

ChangePeriod

Sets the overall period and prescaler of the output PWM signal.

Parameters

UINT Period
The maximum number that will represent 100% on, PIC/AVR: 0-255 16-bit PIC: 0-65535
INT Prescaler
The scaler used to divide the system clock speed down to the PWM rate.


Return value

This call does not return a value


Disable

Disables a PWM channel and allows the default output / input state to be resumed

Parameters

This macro has no parameters


Return value

This call does not return a value


SetDutyCycle

Sets the PWM duty cycle in terms of on/off based on the current period setting.

E.g. if period = 255 then duty of 128 is equal to 50% on and 50% off.

16-bit PIC users should use the 10bit duty function to access the full range.

Parameters

BYTE Duty
8-bit PWM duty 0-255


Return value

This call does not return a value


Enable

Enables a PWM channel as an output overriding the default output pin state.

Parameters

This macro has no parameters


Return value

This call does not return a value


SetDutyCycle10Bit

PIC/AVR - Sets the full scale PWM duty cycle based on the current period setting.

If period = 255 then Duty of 512 is equal to 50%.


16-bit PICs have a 16-bit period range available.

If period = 65535 then Duty of 32768 is equal to 50%.

Parameters

UINT Duty
PWM duty PIC/AVR: 0-1023 16-bit PIC: 0-65535


Return value

This call does not return a value


Simulation macro reference

This component does not contain any simulation macros


Property reference

Channel

This property is of type Fixed list of ints and can be referenced with the variable name channel.

Selects which PWM channel the component is connected to.

Alternative pin

This property is of type True or false and can be referenced with the variable name altpin.

Allows an alternate pin to be used if available.

Note that on some devices you will also have to change this setting in the device configuration.

PWM Pin

This property is of type Single digital pin and can be referenced with the variable name pwm_pin.

Specifies the pin assigned to the PWM channel selected

Remap Pin

This property is of type Fixed list of ints and can be referenced with the variable name RemapPin.

Allows the PWM hardware pin to be reassigned to another pin

PWM Timer

This property is of type Fixed list of ints and can be referenced with the variable name timer.

Timer associated with PWM to drive the output.

Warning - All PWM channels linked to the same timer will share the same period and prescaler settings.

Period Overflow

This property is of type Unsigned integer and can be referenced with the variable name period.

Allows the user to change the number of counts for the whole PWM period.

Note that all PWM channels based on the same timer will share the same period overflow.

PIC/AVR Range: 0 - 255

16-bit PIC Range: 0 - 65535

Prescaler

This property is of type Fixed list of ints and can be referenced with the variable name prescale.

Allows the user to change the number of program cycles per PWM cycle count.

Note that all PWM channels based on the same timer will share the same prescaler.

Period (us)

This property is of type Floating point and can be referenced with the variable name period_calc.

Displays the length of time to complete one PWM cycle.

Frequency (Hz)

This property is of type Floating point and can be referenced with the variable name frequency_calc2.

No additional information


Frequency (KHz)

This property is of type Floating point and can be referenced with the variable name frequency_calc.

Displays the frequency of PWM cycles per second.

Required Frequency (Hz)

This property is of type Floating point and can be referenced with the variable name ReqFreq.

Type in your required frequency in Hz and the component will automatically calculate

the best prescaler and period to acheive the frequency with the maximum possible resolution.

Calculated Frequency (Hz)

This property is of type Floating point and can be referenced with the variable name CalcFreq.

The frequency we have ended up acheiving using the calculated period and prescaler

Calculated Period

This property is of type Unsigned integer and can be referenced with the variable name CalcPeriod.

The suggested period setting to use to acheive the calculated frequency.

Calculated Prescaler

This property is of type Unsigned integer and can be referenced with the variable name CalcScaler.

The suggested prescaler setting to use to acheive the calculated frequency.

Representation

This property is of type Fixed list of ints and can be referenced with the variable name SimRep.

Edits how the PWM is shown on the simulation panel.