Fábio Souza
2015
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 Timers
Os 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 Module
Caracterí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 Module
Fontes de Clock
5
Fábio Souza 2015
TPM - Timer/PWM Module
Digrama 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 TPM
System Clock Gating Control Register 6 (SIM_SCGC6)
8
Fábio Souza 2015
Selecionando a fonte de clock
System Options Register 2 (SIM_SOPT2)
9
Fábio Souza 2015
Desabilitando o clock
Status and Control (TPMx_SC)
10
Fábio Souza 2015
Carregado o valor de MOD
Modulo (TPMx_MOD)
11
Fábio Souza 2015
Limpar Flag TOF
Status and Control (TPMx_SC)
12
Fábio Souza 2015
Habilitar Timer
Status and Control (TPMx_SC)
13
Fábio Souza 2015
Exemplo - TIMER_TPM
14
Fábio Souza 2015
Exercício
Fazer o LED piscar com a frequência de 5 Hz.
15
Fábio Souza 2015
TPM como PWM
O 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 PORT
Antes 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 PWM
Os 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 PWM
Status and Control (TPMx_SC)
22
Fábio Souza 2015
Configura modo do PWM
Channel (n) Status and Control (TPMx_CnSC)
23
Fábio Souza 2015
Definir a frequência do PWM
Modulo (TPMx_MOD)
24
Fábio Souza 2015
Duty Cycle
Channel (n) Value (TPMx_CnV)
25
Fábio Souza 2015
Exemplo - PWM_TPM
26
Fábio Souza 2015
Exercício
Gerar 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_LIB
Verificar o uso de funções para configuração do PWM.
Refazer exercício anterior usando a biblioteca.
28

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

  • 1.
    Fábio Souza 2015 Microcontroladores ARMCortex M0+ Aplicação em robôs autoguiados TPM - TIMER/PWM Module
  • 2.
    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
  • 3.
    Fábio Souza 2015 Introduçãoaos Timers Os 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
  • 4.
    Fábio Souza 2015 TPM- Timer/PWM Module Caracterí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
  • 5.
    Fábio Souza 2015 TPM- Timer/PWM Module Fontes de Clock 5
  • 6.
    Fábio Souza 2015 TPM- Timer/PWM Module Digrama de blocos 6
  • 7.
    Fábio Souza 2015 Usandoo 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
  • 8.
    Fábio Souza 2015 Habilitandoo clock para o TPM System Clock Gating Control Register 6 (SIM_SCGC6) 8
  • 9.
    Fábio Souza 2015 Selecionandoa fonte de clock System Options Register 2 (SIM_SOPT2) 9
  • 10.
    Fábio Souza 2015 Desabilitandoo clock Status and Control (TPMx_SC) 10
  • 11.
    Fábio Souza 2015 Carregadoo valor de MOD Modulo (TPMx_MOD) 11
  • 12.
    Fábio Souza 2015 LimparFlag TOF Status and Control (TPMx_SC) 12
  • 13.
    Fábio Souza 2015 HabilitarTimer Status and Control (TPMx_SC) 13
  • 14.
  • 15.
    Fábio Souza 2015 Exercício Fazero LED piscar com a frequência de 5 Hz. 15
  • 16.
    Fábio Souza 2015 TPMcomo PWM O 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
  • 17.
    Fábio Souza 2015 Ativandoo Clock para o PORT Antes 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
  • 18.
    Fábio Souza 2015 Configurandoo pino para saida PWM Os 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
  • 19.
    Fábio Souza 2015 Habilitandoo clock para o TPM 19 System Clock Gating Control Register 6 (SIM_SCGC6)
  • 20.
    Fábio Souza 2015 Fontede Clock 20 System Options Register 2 (SIM_SOPT2)
  • 21.
    Fábio Souza 2015 Desabilitaro TPM 21 Status and Control (TPMx_SC)
  • 22.
    Fábio Souza 2015 Configuramodo do PWM Status and Control (TPMx_SC) 22
  • 23.
    Fábio Souza 2015 Configuramodo do PWM Channel (n) Status and Control (TPMx_CnSC) 23
  • 24.
    Fábio Souza 2015 Definira frequência do PWM Modulo (TPMx_MOD) 24
  • 25.
    Fábio Souza 2015 DutyCycle Channel (n) Value (TPMx_CnV) 25
  • 26.
  • 27.
    Fábio Souza 2015 Exercício Gerarum sinal PWM de 1KHz e atualizar o valor do duty cycle com um potenciômetro de 0 a 100%. 27
  • 28.
    Fábio Souza 2015 Exemplo- PWM_LIB Verificar o uso de funções para configuração do PWM. Refazer exercício anterior usando a biblioteca. 28