Difference between revisions of "Unit PWM"
Line 341: | Line 341: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 353: | Line 353: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 365: | Line 365: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 377: | Line 377: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 389: | Line 389: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 401: | Line 401: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 413: | Line 413: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 425: | Line 425: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 440: | Line 440: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 563: | Line 563: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 575: | Line 575: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 587: | Line 587: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 599: | Line 599: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 611: | Line 611: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 623: | Line 623: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 635: | Line 635: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} | ||
Line 647: | Line 647: | ||
|- | |- | ||
! '''Note''' | ! '''Note''' | ||
− | | | + | | None documented |
|- | |- | ||
|} | |} |
Revision as of 05:42, 27 September 2016
Return to Unit Reference
Description
Pulse Width Modulation (PWM) is a technique of encoding a pulsed signal so as to control the ratio of on to off by switching the signal between on and off at a very high rate.
This on and off switching allows control of the average power supplied to the load and therefore gives fine grained control of things such as motor speeds, lamp dimming and heating elements.
PWM is also used in many low power applications as well such as controlling servo motors and can even by used for audio applications such as class D amplifiers.
This unit deals with the usage of PWM for control applications (for audio applications see the Audio unit) and provides methods to control the state, frequency, duty cycle, range and mode of PWM host controllers. Not all devices support all of these concepts so this API includes a properties function to allow obtaining information about a PWM device and its capabilities.
Constants
To be documented
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
procedure PWMInit;
Note | Called only during system startup |
---|
PWM functions
function PWMDeviceStart(PWM:PPWMDevice):LongWord;
PWM | The PWM device to start |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceStop(PWM:PPWMDevice):LongWord;
PWM | The PWM device to stop |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceWrite(PWM:PPWMDevice; Value:LongWord):LongWord;
PWM | The PWM device to write to |
---|---|
Value | The value to write |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of value may depend on the device and other configured options, in many cases the value will represent the "on" time of each pulse with regard to the duty cycle of the waveform output by the device |
function PWMDeviceGetGPIO(PWM:PPWMDevice):LongWord;
PWM | The PWM device to get the GPIO pin from |
---|---|
Return | The current GPIO pin or GPIO_PIN_UNKNOWN on failure |
function PWMDeviceSetGPIO(PWM:PPWMDevice; GPIO:LongWord):LongWord;
PWM | The PWM device to set the GPIO pin for |
---|---|
GPIO | The GPIO pin to set (eg GPIO_PIN_12) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceGetMode(PWM:PPWMDevice):LongWord;
PWM | The PWM device to get the mode from |
---|---|
Return | The current mode or a default value of PWM_MODE_MARKSPACE |
function PWMDeviceSetMode(PWM:PPWMDevice; Mode:LongWord):LongWord;
PWM | The PWM device to set the mode for |
---|---|
Mode | The mode value to set (eg PWM_MODE_MARKSPACE) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceGetRange(PWM:PPWMDevice):LongWord;
PWM | The PWM device to get the range from |
---|---|
Return | The current range or 0 on failure |
function PWMDeviceSetRange(PWM:PPWMDevice; Range:LongWord):LongWord;
PWM | The PWM device to set the clock rate for |
---|---|
Range | The range value to set |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of range may depend on the device and other configured options, in many cases the range will represent the period of one full cycle of the waveform output by the device |
function PWMDeviceGetFrequency(PWM:PPWMDevice):LongWord;
PWM | The PWM device to get the clock frequency from |
---|---|
Return | The clock frequency in Hz or 0 on failure |
function PWMDeviceSetFrequency(PWM:PPWMDevice; Frequency:LongWord):LongWord;
PWM | The PWM device to set the clock frequency for |
---|---|
Frequency | The clock frequency to set in Hz |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceGetPolarity(PWM:PPWMDevice):LongWord;
PWM | The PWM device to get the polarity from |
---|---|
Return | The current polarity or a default value of PWM_POLARITY_NORMAL |
function PWMDeviceSetPolarity(PWM:PPWMDevice; Polarity:LongWord):LongWord;
PWM | The PWM device to set the polarity for |
---|---|
Polarity | The polarity value to set (eg PWM_POLARITY_NORMAL) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceConfigure(PWM:PPWMDevice; DutyNS,PeriodNS:LongWord):LongWord;
PWM | The PWM device to set the configuration for |
---|---|
DutyNS | The "on" time part of the cycle (Nanoseconds) |
PeriodNS | The duration of one full cycle (Nanoseconds) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceProperties(PWM:PPWMDevice; Properties:PPWMProperties):LongWord;
PWM | The PWM device to get properties from |
---|---|
Properties | Pointer to a TPWMProperties structure to fill in |
Return | ERROR_SUCCESS if completed or another error code on failure |
function PWMDeviceCreate:PPWMDevice;
Return | Pointer to new PWM entry or nil if PWM could not be created |
---|
function PWMDeviceCreateEx(Size:LongWord):PPWMDevice;
Size | Size in bytes to allocate for new PWM (Including the PWM entry) |
---|---|
Return | Pointer to new PWM entry or nil if PWM could not be created |
function PWMDeviceDestroy(PWM:PPWMDevice):LongWord;
Note | None documented |
---|
function PWMDeviceRegister(PWM:PPWMDevice):LongWord;
Note | None documented |
---|
function PWMDeviceDeregister(PWM:PPWMDevice):LongWord;
Note | None documented |
---|
function PWMDeviceFind(PWMId:LongWord):PPWMDevice;
Note | None documented |
---|
function PWMDeviceFindByName(const Name:String):PPWMDevice; inline;
Note | None documented |
---|
function PWMDeviceFindByDescription(const Description:String):PPWMDevice; inline;
Note | None documented |
---|
function PWMDeviceEnumerate(Callback:TPWMEnumerate; Data:Pointer):LongWord;
Note | None documented |
---|
function PWMDeviceNotification(PWM:PPWMDevice; Callback:TPWMNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Note | None documented |
---|
RTL PWM functions
function SysPWMAvailable:Boolean;
Note | None documented |
---|
function SysPWMStart:LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function SysPWMStop:LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function SysPWMWrite(Value:LongWord):LongWord;
Value | The value to write |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of value may depend on the device and other configured options, in many cases the value will represent the "on" time of each pulse with regard to the duty cycle of the waveform output by the device |
function SysPWMSetMode(Mode:LongWord):LongWord;
Mode | The mode value to set (eg PWM_MODE_MARKSPACE) |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function SysPWMSetRange(Range:LongWord):LongWord;
Range | The range value to set |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The exact meaning of range may depend on the device and other configured options, in many cases the range will represent the period of one full cycle of the waveform output by the device |
function SysPWMSetFrequency(Frequency:LongWord):LongWord;
Frequency | The frequency to set in Hz |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function SysPWMConfigure(DutyNS,PeriodNS:LongWord):LongWord;
DutyNS | The "on" time part of the cycle (Nanoseconds) |
---|---|
PeriodNS | The duration of one full cycle (Nanoseconds) |
Return | ERROR_SUCCESS if completed or another error code on failure |
PWM helper functions
function PWMGetCount:LongWord; inline;
Note | None documented |
---|
function PWMDeviceGetDefault:PPWMDevice; inline;
Note | None documented |
---|
function PWMDeviceSetDefault(PWM:PPWMDevice):LongWord;
Note | None documented |
---|
function PWMDeviceCheck(PWM:PPWMDevice):PPWMDevice;
Note | None documented |
---|
procedure PWMLog(Level:LongWord; PWM:PPWMDevice; const AText:String);
Note | None documented |
---|
procedure PWMLogInfo(PWM:PPWMDevice; const AText:String); inline;
Note | None documented |
---|
procedure PWMLogError(PWM:PPWMDevice; const AText:String); inline;
Note | None documented |
---|
procedure PWMLogDebug(PWM:PPWMDevice; const AText:String); inline;
Note | None documented |
---|
Return to Unit Reference