Record TPWM

Unit

Declaração

type TPWM = record

Descrição

Este record representa um canal PWM acessado a partir da classe TPasRipherals (MarkSpaceEnabled Habilita ou desabilita o modo Mark/Space no canal PWM atual. Quando o modo Mark/Space está desabilitado o canal usa o modo PWM normal. (Campos MSEN1 e MSEN2 do registrador CTL. DataSheet p. 141-143)

Visão Geral

Campos

FPasRipherals: TCustomPasRipherals;
FPWMChannel: TPWMChannel;

Métodos

function GetCurrentConfig: String;
function GetData: UInt32;
function GetEnabled: Boolean;
function GetMarkSpaceEnabled: Boolean;
function GetPolarity: TPWMPolarity;
function GetRange: UInt32;
function RegisterCTL: PUInt32;
function RegisterDAT: PUInt32;
function RegisterRNG: PUInt32;
procedure Configure(AMarkSpaceEnabled: Boolean; APolarity: TPWMPolarity; ARange: UInt32; AData: UInt32; AEnabled: Boolean); overload;
procedure Configure(ARepeatCycle: UInt16; ADutyCycleMin: UInt32; ADutyCycleMax: UInt32; AEnabled: Boolean); overload;
procedure SetData(APWMData: UInt32);
procedure SetEnabled(APWMEnabled: Boolean);
procedure SetMarkSpaceEnabled(APWMMarkSpaceEnabled: Boolean);
procedure SetPolarity(APWMPolarity: TPWMPolarity);
procedure SetRange(APWMRange: UInt32);

Properties

property CurrentConfig: String read GetCurrentConfig;
property Data: UInt32 read GetData write SetData;
property Enabled: Boolean read GetEnabled write SetEnabled;
property MarkSpaceEnabled: Boolean read GetMarkSpaceEnabled write SetMarkSpaceEnabled;
property Polarity: TPWMPolarity read GetPolarity write SetPolarity;
property Range: UInt32 read GetRange write SetRange;

Descrição

Campos

FPasRipherals: TCustomPasRipherals;
 
FPWMChannel: TPWMChannel;
 

Métodos

function GetCurrentConfig: String;
 
function GetData: UInt32;
 
function GetEnabled: Boolean;
 
function GetMarkSpaceEnabled: Boolean;
 
function GetPolarity: TPWMPolarity;
 
function GetRange: UInt32;
 
function RegisterCTL: PUInt32;

Esta função retorna um ponteiro para o registrador CTL, cujos campos são explicados com detalhes nas páginas 141 a 143 do DataSheet

function RegisterDAT: PUInt32;

Esta função retorna um ponteiro para o registrador DAT, cujos campos são explicados com detalhes nas páginas 146 a 147 do DataSheet

function RegisterRNG: PUInt32;

Esta função retorna um ponteiro para o registrador RNG, cujos campos são explicados com detalhes nas páginas 145 a 146 do DataSheet

procedure Configure(AMarkSpaceEnabled: Boolean; APolarity: TPWMPolarity; ARange: UInt32; AData: UInt32; AEnabled: Boolean); overload;

Configura todas as características do PWM atual de uma só vez e de forma livre. É recomendável usar a outra versão desta função, mais simplificada e direcionada para parâmetros da vida real, como datasheets de servos

Parâmetros
AMarkSpaceEnabled
Habilita o modo Mark/Space (true) ou mantém o modo PWM tradicional (false) no canal PWM atual
APolarity
Define a polaridade a ser usada pelo canal PWM atual, ppNormal para polaridade normal ou ppInverted para polaridade invertida
ARange
Define o range a ser utilizado pelo canal PWM atual
AData
Define o valor, dentro do range, a ser usado pelo canal PWM atual
AEnabled
Ao final da execução do procedure, caso AEnabled seja true, o canal PWM atual será automaticamente habilitado, caso seja false ele se manterá desabilitado
See also
TPWMPolarity
Esta enumeração define os dois possíveis valores para a polaridade de cada canal PWM (Campos POLA1 e POLA2 do registrador CTL.
procedure Configure(ARepeatCycle: UInt16; ADutyCycleMin: UInt32; ADutyCycleMax: UInt32; AEnabled: Boolean); overload;

Configura de forma simplificada o PWM. Esta função configura o modo Mark-Space, define a polaridade como ppNormal, calcula o range de acordo com o ciclo de repetição informado, configura o registrador DAT na posição mediana de acordo com os valores de ADutyCycleMin e ADutyCycleMax e, opcionalmente, habilita o PWM.

Para calcular o range este procedure leva em conta a frequência do clock utilizado pelo PWM e seu respectivo divisor usando a fórmula:

PWM Range = PWM Clock Frequency / PWM Clock Divisor / PWM Repeat Cycle

Ao configurar o PWM para uso com servos pode ser perigoso configurar apenas o registrador RNG sem se preocupar com o registrador DAT e vice-versa. Para este uso, é imprescindível informar os parâmetros ADutyCycleMin e ADutyCycleMax, os quais normalmente são informados no datasheet do servo. Ao informar estes valores CORRETAMENTE o registrador DAT será configurado numa posição mediana e "segura" do servo, evitando que ele seja danificado durante a sua configuração.

Os duty cycles mínimo e máximo mostrados nos datashets podem ser diferentes da realidade do servo. Normalmente estes valores não correspondem aos valores reais aceitos pelo servo, o que significa que com os valores mostrados no datasheet não se consegue alcançar os ângulos 0 e 180. É reponsabilidade do desenvolvedor obter por meio de experimentos os valores reais dos ciclos de trabalho, os quais podem ser seguramente utilizados aqui no lugar dos ciclos de trabalho mostrados no datasheet

Parâmetros
ARepeatCycle
Ciclo de repetição em hertz
ADutyCycleMin
Menor valor possível do duty cycle em microssegundos
ADutyCycleMax
Maior valor possível do duty cycle em microssegundos
AEnable
Habilita o pwm após configurá-lo
procedure SetData(APWMData: UInt32);
 
procedure SetEnabled(APWMEnabled: Boolean);
 
procedure SetMarkSpaceEnabled(APWMMarkSpaceEnabled: Boolean);
 
procedure SetPolarity(APWMPolarity: TPWMPolarity);
 
procedure SetRange(APWMRange: UInt32);
 

Properties

property CurrentConfig: String read GetCurrentConfig;

Obtém de forma textual todas as configurações do canal PWM atual

property Data: UInt32 read GetData write SetData;

Define ou obtém o valor de configuração do canal PWM atual (Registradores DAT1 e DAT2. DataSheet p. 146 e 147)

property Enabled: Boolean read GetEnabled write SetEnabled;

Habilita ou desabilita o canal PWM atual (Campos PWMEN2 e PWMEN2 do registrador CTL. DataSheet p. 141-143)

property MarkSpaceEnabled: Boolean read GetMarkSpaceEnabled write SetMarkSpaceEnabled;
 
property Polarity: TPWMPolarity read GetPolarity write SetPolarity;

Alterna a polaridade do canal PWM atual (Campos POLA1 e POLA2 do registrador CTL. DataSheet p. 141-143)

property Range: UInt32 read GetRange write SetRange;

Define ou obtém o range (intervalo) de funcionamento do canal PWM atual (Registradores RNG1 e RNG2. DataSheet p. 145 e 146)


Gerado por PasDoc 0.15.0.