28
Fábio Souza 2015 Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados TPM - TIMER/PWM Module

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIMER/PWM Module

Embed Size (px)

Citation preview

Fábio Souza2015

Microcontroladores ARM Cortex M0+Aplicação em robôs autoguiados

TPM - TIMER/PWM Module

Fábio Souza 2015

Objetivos

● Entender a estrutura interna do TPM;● Entender os modos de funcionamento;● Aprender a configura os registradores;● Utilizar o TPM como temporizador.● Utilizar o TPM para gerar sinal PWM.

2

Fábio Souza 2015

Introdução aos TimersOs Timers são periféricos utilizados para contagem, temporização, medida de largura de pulso e geração de sinais PWM.

Funcionando em paralelo com a CPU os timers incrementam seus contadores automaticamentes, através de um clock externo ou o próprio clock do sistema. Dependendo da sua configuração, e modo de funcionamento, ao final de sua contagem é sinalizado através de flags para tratamento por parte da CPU.

O KL25 possui 3 módulos de timers chamados de TPM.

3

Fábio Souza 2015

TPM - Timer/PWM ModuleCaracterísticas:● Clock selecionável;● Timer/contador de 16 bits;● Possui 6 canais que podem ser configurados como capture, output compare, ou

PWM.● Suporte para entrada de trigger para reset ou start;● Trigger para o hardware ao fim da contagem.

4

Fábio Souza 2015

TPM - Timer/PWM ModuleFontes de Clock

5

Fábio Souza 2015

TPM - Timer/PWM ModuleDigrama de blocos

6

Fábio Souza 2015

Usando o TPM para gerar delay

Esses são os passos necessários para configurar o TPMx_CNT para gerar delays:● habilitar o clock para o TPM através do registrador SIM_SCGC6;● Selecionar a fonte de clock para o timer através do registrador

SIM_SOPT2;● Desabilitar o timer para fazer as configurações;● Carreagar o registrador TPMx_MOD com o valor desejado;● limpar o flag TOF;● Configurar preescaler;● Habilitar como contador crescente no resgistrador TMPx_SC;● Aguardar o flag TOF ir para HIGH;

7

Fábio Souza 2015

Habilitando o clock para o TPMSystem Clock Gating Control Register 6 (SIM_SCGC6)

8

Fábio Souza 2015

Selecionando a fonte de clockSystem Options Register 2 (SIM_SOPT2)

9

Fábio Souza 2015

Desabilitando o clockStatus and Control (TPMx_SC)

10

Fábio Souza 2015

Carregado o valor de MODModulo (TPMx_MOD)

11

Fábio Souza 2015

Limpar Flag TOFStatus and Control (TPMx_SC)

12

Fábio Souza 2015

Habilitar TimerStatus and Control (TPMx_SC)

13

Fábio Souza 2015

Exemplo - TIMER_TPM

14

Fábio Souza 2015

ExercícioFazer o LED piscar com a frequência de 5 Hz.

15

Fábio Souza 2015

TPM como PWMO modulo TPM também pode ser utilizado para gerar sinais PWM - Pulse Width Modulation. Para geração de um sinal PWM usando o TPM deve-se seguir os seguintes passos:

● Habilitar o clock para o pino;● Configurar o GPIO para saida de sinal PWM;● Habilitar o clock para o TMP correspondente;● Selecionar a fonte de clock para o TPM;● Desabilitar TPM para a configuração;● Selecionar o modo de funcionamento do PWM através do registrador

TPMx_CnSC;● Configurar a frequência do sinal através do valor carregado em TPMx_MOD;● Carregar o valor do duty cycle no registrador TPMx_CnV;● habilitar clocck e configura PWM● Atualizar o duty cycle alterando o valor no TPMx_CnV

16

Fábio Souza 2015

Ativando o Clock para o PORTAntes de utilizar o pino deve-se ativar o clock para cada conjunto de porta. Isso é feito através do registrador:

SIM_SCGC5 (System Clock Gating Control)

17

Fábio Souza 2015

Configurando o pino para saida PWMOs pinos geralmente possuem diversas funções que são multiplexadas ao mesmo. Dessa forma é necessário configurar qual função vai ser utilizada. Para isso utiliza-se o registrador : Pin Control Register n (PORTx_PCRn).Para uso do pino como GPIO deve-se confirgurar o MUX. Conforme tabela na pagiana 161, do KL25 Sub-Family Reference Manual.

18

Fábio Souza 2015

Habilitando o clock para o TPM

19

System Clock Gating Control Register 6 (SIM_SCGC6)

Fábio Souza 2015

Fonte de Clock

20

System Options Register 2 (SIM_SOPT2)

Fábio Souza 2015

Desabilitar o TPM

21

Status and Control (TPMx_SC)

Fábio Souza 2015

Configura modo do PWMStatus and Control (TPMx_SC)

22

Fábio Souza 2015

Configura modo do PWMChannel (n) Status and Control (TPMx_CnSC)

23

Fábio Souza 2015

Definir a frequência do PWMModulo (TPMx_MOD)

24

Fábio Souza 2015

Duty CycleChannel (n) Value (TPMx_CnV)

25

Fábio Souza 2015

Exemplo - PWM_TPM

26

Fábio Souza 2015

ExercícioGerar um sinal PWM de 1KHz e atualizar o valor do duty cycle com um potenciômetro de 0 a 100%.

27

Fábio Souza 2015

Exemplo - PWM_LIBVerificar o uso de funções para configuração do PWM.

Refazer exercício anterior usando a biblioteca.

28