Projeto da nova função de temporizador/contador com base no MCU

"Temporizadores e contadores são provavelmente os periféricos mais comuns em projetos de MCU. Quase qualquer aplicativo pode usar um cronômetro ou contador para melhorar o desempenho, reduzir o consumo de energia ou simplificar um projeto, substituindo operações repetitivas ou em loop da CPU por interrupções simples de cronômetro ou contador. No entanto, você pode não ter usado algumas das unidades de temporizador/contador mais recentes, e alguns recursos avançados agora estão disponíveis para melhorar ainda mais seu design. Este artigo revisará rapidamente alguns dos novos recursos de temporizador/contador que podem ser usados ​​para melhorar projetos com exemplos ilustrativos de famílias populares de MCU, com ênfase especial em recursos para operação autônoma e controle de motor.

"

Autor: Warren Miller

Temporizadores e contadores são provavelmente os periféricos mais onipresentes nos projetos de MCU. Quase qualquer aplicativo pode usar um cronômetro ou contador para melhorar o desempenho, reduzir o consumo de energia ou simplificar um projeto, substituindo operações repetitivas ou em loop da CPU por interrupções simples de cronômetro ou contador. No entanto, você pode não ter usado algumas das unidades de temporizador/contador mais recentes, e alguns recursos avançados agora estão disponíveis para melhorar ainda mais seu design. Este artigo revisará rapidamente alguns dos novos recursos de temporizador/contador que podem ser usados ​​para melhorar projetos com exemplos ilustrativos de famílias populares de MCU, com ênfase especial em recursos para operação autônoma e controle de motor.

Modos de temporizador e contador: do simples ao avançado

Os temporizadores e contadores começam com alguns modos de operação muito simples para substituir os loops gerais do programa usados ​​para contar eventos externos, cronometrar operações internas e externas e coletar várias estatísticas sobre as principais operações do MCU. As características no máximo MAXQ612 ilustra alguns dos MCUs de modo de contagem mais familiares e alguns exemplos são mostrados na Figura 1 abaixo. A tabela na parte inferior da figura mostra os três modos autônomos comuns de operação para o Temporizador B, o temporizador/contador MAXQ612 módulo: recarga automática, captura e pp/contagem regressiva. A imagem superior direita mostra o diagrama de blocos do modo de recarga automática. A entrada do clock para o TImer B pode vir de um prescaler de clock que divide o clock do sistema com oito configurações diferentes, ou de um pino externo. O bit de controle TRB ativa ou desativa a operação do Timer B. O Timer Value Register (TVB) conta quando o temporizador atinge o valor armazenado no Timer B Reload Register (TBR) e gera uma interrupção e redefine o TVB para zero. Isso fornece uma maneira fácil de criar latência sem usar ciclos de CPU preciosos para criar latência.


Figura 1: Exemplo de modo contador/temporizador Maxim MAXQ612 MCU. (Cortesia de Maxim)

O diagrama de blocos no canto superior direito da Figura 1 ilustra a operação do modo de captura. Neste modo, o prescaler do relógio e as funções habilitar/desabilitar são as mesmas do modo de recarga automática. O registrador TBV conta e zera em caso de estouro e uma interrupção opcional. Na borda descendente do pino externo TBB, o valor no registrador TBV é carregado no registrador de captura TBR e uma interrupção EXFB pode ser gerada. Este modo pode ser usado para contar o número de clocks entre as bordas de subida de um sinal externo para determinar a frequência do sinal ou o atraso do sinal. Assim, o temporizador libera a CPU de executar operações de contagem intensivas em ciclos, para que ela possa fazer o que realmente precisa ser feito com mais eficiência.

O MAXQ612 suporta várias outras operações comuns de temporizador/contador, como recarga automática para cima/para baixo e um pino externo para controlar a direção do contador. Este modo é útil para decodificar vários sinais modulados por largura de pulso, como os usados ​​em sensores eletromecânicos. O modo de saída do relógio pode ser usado para criar um relógio de saída simples usando o relógio do sistema, o prescaler e a contagem do terminal do temporizador B. Finalmente, o modo de saída de Modulação por Largura de Pulso (PWM) pode gerar sinais de borda alinhada para aplicações PWM comuns, como aquelas usadas no controle de motores.

Função de contador/temporizador PWM para controle do motor

Algumas funções de temporizador/contador de última geração são usadas para aplicações PWM de controle de motor. Esses contadores implementam o máximo possível de funções PWM relacionadas ao motor usando hardware dedicado para liberar o processador para funções de nível superior. A operação básica de um contador/temporizador PWM de controle de motor é comum à maioria das implementações do fabricante, e um bom exemplo é fornecido pelos temporizadores NXP LPC 17xx PWM para Trifásico Motores CA e CC A aplicação de controle foi otimizada. Conforme mostrado na Figura 2, a funcionalidade do módulo PWM de controle do motor pode parecer bastante complicada até você perceber que existem três cópias do canal do temporizador PWM básico; um à esquerda, um no meio e um à direita. O fato de ter três canais permite usar um único temporizador/contador para controlar um motor trifásico, tornando a implementação muito eficiente. Cada canal controla um par de saídas, que por sua vez controlam algo fora do chip, como um conjunto de bobinas em um motor. Cada canal contém um registro de timer/counter (TC) que é incrementado pelo clock do processador (modo timer) ou um pino de entrada (modo contador).


Figura 2: Temporizador/contador NXP LPC 17xx PWM. (Cortesia de NXP)

Cada canal tem um registro de limite que é comparado ao valor de TC e, quando ocorre uma correspondência, o TC é “reiniciado” de duas maneiras. No modo edge-aligned, TC redefine para 0, enquanto no modo center, uma correspondência muda TC para diminuir em cada clock do processador ou transição de pino de entrada até chegar a 0, ponto em que começa a contagem novamente.

Cada canal também inclui um registro de correspondência que contém um valor menor que o registro de limite. No modo alinhado à borda, as saídas dos canais alternam sempre que o TC corresponde ao registrador de correspondência ou limite, enquanto no modo alinhado ao centro elas alternam apenas quando o registrador de correspondência é correspondido. Portanto, o registrador de limite controla o período da saída, enquanto o registrador de correspondência controla quanto de cada período a saída gasta em cada estado. Se a saída estiver integrada no Voltagem, um valor pequeno no registro de limite minimiza a ondulação e permite que o temporizador PWM de controle do motor controle dispositivos de alta velocidade.

Todos esses elementos de hardware de canal juntos controlam duas saídas, A e B, que podem acionar um par de transistores para comutar o ponto de controle entre os dois trilhos de alimentação. Na maioria das vezes, as duas saídas têm polaridades opostas, mas um recurso de tempo morto pode ser ativado (por canal) para atrasar a transição dos dois sinais do estado passivo para o ativo, de modo que os transistores nunca liguem em o mesmo tempo . O estado de cada par de saída pode ser pensado como alto, baixo e flutuante ou alto, baixo e centralizado. O mapeamento de ativo e passivo para alto e baixo é programável para cada canal, e cada canal pode executar PWM alinhado à borda e alinhado ao centro. A Figura 3 mostra dois exemplos de configurações de saída. O da esquerda é alinhado ao centro sem nenhum tempo morto.


Figura 3: Exemplo de configuração de saída de exemplo de temporizador/contador PWM NXP LPC17xx. (Cortesia de NXP)

O temporizador PWM de controle do motor também inclui várias fontes de interrupção para informar ao processador que são necessárias funções de controle do motor de nível superior. Essas interrupções são organizadas por canal e podem indicar quando o TC corresponde ao registro de correspondência, quando o TC corresponde ao registro de limite, quando o canal captura o valor do TC em seu registro de captura ou quando a entrada de interrupção está ativa. O LPC17xx também possui vários periféricos de suporte para simplificar funções avançadas de controle, incluindo uma interface de codificador de quadratura, módulos PWM adicionais, temporizadores de interrupção e temporizadores de vigilância. Essa ampla variedade de funções de temporização dedicadas mostra como as funções de temporização se tornaram importantes para projetos baseados em MCU.

Outras funções especializadas de cronometragem

Em muitos MCUs modernos, as funções de temporização e contagem estão se tornando mais especializadas à medida que os fabricantes visam áreas de aplicação específicas. Por exemplo, a família KineTIs K10 da Freescale, como o MK10DN512ZVLQ10, possui uma variedade de periféricos de contagem e temporização com funções especializadas. Esses periféricos incluem: Blocos de atraso programáveis ​​que controlam as operações ADC e DAC, liberando o processador do gerenciamento desses processos de baixo nível; blocos de temporização flexíveis que fornecem vários canais de temporização, contagem, captura de entrada e comparação de saída para suportar iluminação e gerenciamento e controle de energia do motor; um temporizador de interrupção periódica que pode gerenciar de forma autônoma interrupções periféricas e transferências DMA; um temporizador de energia muito baixa que funciona mesmo quando o MCU está em seu estado de energia mais baixo para fornecer eventos periódicos simples de "despertar"; relógio em tempo real, mantém o tempo preciso e pode ser alimentado por bateria mesmo quando o MCU está completamente desligado para facilitar o acesso à operação do sistema e aos dados vitalícios.

A série K10 também fornece funções dedicadas de relógio e temporização dedicadas a módulos específicos, para que nenhum outro recurso de temporização seja consumido. Por exemplo, módulos transmissores moduladores de portadora usados ​​para criar protocolos usados ​​em vários esquemas de codificação de sinal, como aqueles em comunicações infravermelhas, têm suas próprias funções dedicadas de temporização e contagem, bem como contadores de modulação por largura de pulso, gerenciamento e teclas de mudança de frequência. Variação de largura de pulso dependente do esquema de codificação. Espera-se que essa tendência de funções dedicadas de temporização e contagem continue à medida que os MCUs se tornem mais específicos de aplicativos e segmentos de mercado.

Os kits de desenvolvimento aceleram o tempo de lançamento no mercado

À medida que os MCUs se tornam mais específicos de aplicativos, os fabricantes estão criando mais kits de desenvolvimento orientados para aplicativos e designs de referência. As aplicações de controle de motores são provavelmente um dos exemplos mais comuns de um conjunto de aplicações específico. Como exemplo, a Renesas oferece um kit de desenvolvimento de controle de motor completo, o YMCRPRX62T mostrado na Figura 4, que inclui até mesmo um motor de exemplo. Este kit vem com todo o software e projetos de exemplo que você precisa para avaliar o Renesas RX62T MCU em vários projetos de controle de motor. A GUI de demonstração hospedada no PC exibe a velocidade, tensão e corrente do motor, permitindo ao usuário ajustar parâmetros e algoritmos para visualizar diretamente vários resultados para ajudar a ajustar a operação do motor para obter os melhores resultados em um projeto específico. Os kits de avaliação de controle do motor com funcionalidade semelhante ao Renesas RX62T também estão disponíveis em muitos outros fabricantes. Encontre o kit que melhor corresponda à sua aplicação de destino e ambiente de desenvolvimento para ajudar a acelerar seu próximo projeto de controle de motor, aproveitando a grande quantidade de trabalho “empacotado” pelo fabricante.

Os temporizadores e contadores são os periféricos mais familiares aos MCUs, mas aproveitá-los ao máximo pode garantir economia de energia, melhorar o desempenho e simplificar seus projetos. Este artigo discute alguns recursos novos e avançados que permitem explorar esses elementos comuns de maneiras incomuns.

Autor: Warren Miller

Temporizadores e contadores são provavelmente os periféricos mais onipresentes nos projetos de MCU. Quase qualquer aplicativo pode usar um cronômetro ou contador para melhorar o desempenho, reduzir o consumo de energia ou simplificar um projeto, substituindo operações repetitivas ou em loop da CPU por interrupções simples de cronômetro ou contador. No entanto, você pode não ter usado algumas das unidades de temporizador/contador mais recentes, e alguns recursos avançados agora estão disponíveis para melhorar ainda mais seu design. Este artigo revisará rapidamente alguns dos novos recursos de temporizador/contador que podem ser usados ​​para melhorar projetos com exemplos ilustrativos de famílias populares de MCU, com ênfase especial em recursos para operação autônoma e controle de motor.

Modos de temporizador e contador: do simples ao avançado

Os temporizadores e contadores começam com alguns modos de operação muito simples para substituir os loops gerais do programa usados ​​para contar eventos externos, cronometrar operações internas e externas e coletar várias estatísticas sobre as principais operações do MCU. Os recursos do Maxim MAXQ612 ilustram alguns dos MCUs de modo de contagem mais familiares e alguns exemplos são mostrados na Figura 1 abaixo. A tabela na parte inferior da figura mostra os três modos autônomos comuns de operação para o Timer B, o módulo temporizador/contador MAXQ612: recarga automática, captura e pp/contagem regressiva. A imagem superior direita mostra o diagrama de blocos do modo de recarga automática. A entrada do relógio para o TIMEr B pode vir de um prescaler de relógio que divide o relógio do sistema com oito configurações diferentes ou de um pino externo. O bit de controle TRB habilita ou desabilita a operação do Timer B. O Timer Value Register (TVB) faz a contagem crescente quando o timer atinge o valor armazenado no Timer B Reload Register (TBR) e gera uma interrupção e redefine o TVB para zero. Isso fornece uma maneira fácil de criar latência sem usar ciclos de CPU preciosos para criar latência.


Figura 1: Exemplo de modo contador/temporizador Maxim MAXQ612 MCU. (Cortesia de Maxim)

O diagrama de blocos no canto superior direito da Figura 1 ilustra a operação do modo de captura. Neste modo, o prescaler do relógio e as funções habilitar/desabilitar são as mesmas do modo de recarga automática. O registrador TBV conta e zera em caso de estouro e uma interrupção opcional. Na borda descendente do pino externo TBB, o valor no registrador TBV é carregado no registrador de captura TBR e uma interrupção EXFB pode ser gerada. Este modo pode ser usado para contar o número de clocks entre as bordas de subida de um sinal externo para determinar a frequência do sinal ou o atraso do sinal. Assim, o temporizador libera a CPU de executar operações de contagem intensivas em ciclos, para que ela possa fazer o que realmente precisa ser feito com mais eficiência.

O MAXQ612 suporta várias outras operações comuns de temporizador/contador, como recarga automática para cima/para baixo e um pino externo para controlar a direção do contador. Este modo é útil para decodificar vários sinais modulados por largura de pulso, como os usados ​​em sensores eletromecânicos. O modo de saída do relógio pode ser usado para criar um relógio de saída simples usando o relógio do sistema, o prescaler e a contagem do terminal do temporizador B. Finalmente, o modo de saída de Modulação por Largura de Pulso (PWM) pode gerar sinais de borda alinhada para aplicações PWM comuns, como aquelas usadas no controle de motores.

Função de contador/temporizador PWM para controle do motor

Algumas funções de temporizador/contador de última geração são usadas para aplicações PWM de controle de motor. Esses contadores implementam o máximo possível de funções PWM relacionadas ao motor usando hardware dedicado para liberar o processador para funções de nível superior. A operação básica de um contador/temporizador PWM de controle de motor é comum à maioria das implementações de fabricantes, e um bom exemplo é fornecido pelos temporizadores PWM NXP LPC 17xx para motores CA e CC trifásicos. A aplicação de controle foi otimizada. Conforme mostrado na Figura 2, a funcionalidade do módulo PWM de controle do motor pode parecer bastante complicada até você perceber que existem três cópias do canal do temporizador PWM básico; um à esquerda, um no meio e um à direita. O fato de ter três canais permite usar um único temporizador/contador para controlar um motor trifásico, tornando a implementação muito eficiente. Cada canal controla um par de saídas, que por sua vez controlam algo fora do chip, como um conjunto de bobinas em um motor. Cada canal contém um registro de timer/counter (TC) que é incrementado pelo clock do processador (modo timer) ou um pino de entrada (modo contador).


Figura 2: Temporizador/contador NXP LPC 17xx PWM. (Cortesia de NXP)

Cada canal tem um registro de limite que é comparado ao valor de TC e, quando ocorre uma correspondência, o TC é “reiniciado” de duas maneiras. No modo edge-aligned, TC redefine para 0, enquanto no modo center, uma correspondência muda TC para diminuir em cada clock do processador ou transição de pino de entrada até chegar a 0, ponto em que começa a contagem novamente.

Cada canal também inclui um registro de correspondência que contém um valor menor que o registro de limite. No modo alinhado à borda, as saídas dos canais alternam sempre que o TC corresponde ao registrador de correspondência ou limite, enquanto no modo alinhado ao centro elas alternam apenas quando o registrador de correspondência é correspondido. Portanto, o registrador de limite controla o período da saída, enquanto o registrador de correspondência controla quanto de cada período a saída gasta em cada estado. Se a saída estiver integrada à tensão, um pequeno valor no registro de limite minimiza a ondulação e permite que o temporizador PWM de controle do motor controle dispositivos de alta velocidade.

Todos esses elementos de hardware de canal juntos controlam duas saídas, A e B, que podem acionar um par de transistores para comutar o ponto de controle entre os dois trilhos de alimentação. Na maioria das vezes, as duas saídas têm polaridades opostas, mas um recurso de tempo morto pode ser ativado (por canal) para atrasar a transição dos dois sinais do estado passivo para o ativo, de modo que os transistores nunca liguem em o mesmo tempo . O estado de cada par de saída pode ser pensado como alto, baixo e flutuante ou alto, baixo e centralizado. O mapeamento de ativo e passivo para alto e baixo é programável para cada canal, e cada canal pode executar PWM alinhado à borda e alinhado ao centro. A Figura 3 mostra dois exemplos de configurações de saída. O da esquerda é alinhado ao centro sem nenhum tempo morto.


Figura 3: Exemplo de configuração de saída de exemplo de temporizador/contador PWM NXP LPC17xx. (Cortesia de NXP)

O temporizador PWM de controle do motor também inclui várias fontes de interrupção para informar ao processador que são necessárias funções de controle do motor de nível superior. Essas interrupções são organizadas por canal e podem indicar quando o TC corresponde ao registro de correspondência, quando o TC corresponde ao registro de limite, quando o canal captura o valor do TC em seu registro de captura ou quando a entrada de interrupção está ativa. O LPC17xx também possui vários periféricos de suporte para simplificar funções avançadas de controle, incluindo uma interface de codificador de quadratura, módulos PWM adicionais, temporizadores de interrupção e temporizadores de vigilância. Essa ampla variedade de funções de temporização dedicadas mostra como as funções de temporização se tornaram importantes para projetos baseados em MCU.

Outras funções especializadas de cronometragem

Em muitos MCUs modernos, as funções de temporização e contagem estão se tornando mais especializadas à medida que os fabricantes visam áreas de aplicação específicas. Por exemplo, a família KineTIs K10 da Freescale, como o MK10DN512ZVLQ10, possui uma variedade de periféricos de contagem e temporização com funções especializadas. Esses periféricos incluem: Blocos de atraso programáveis ​​que controlam as operações ADC e DAC, liberando o processador do gerenciamento desses processos de baixo nível; blocos de temporização flexíveis que fornecem vários canais de temporização, contagem, captura de entrada e comparação de saída para suportar iluminação e gerenciamento e controle de energia do motor; um temporizador de interrupção periódica que pode gerenciar de forma autônoma interrupções periféricas e transferências DMA; um temporizador de energia muito baixa que funciona mesmo quando o MCU está em seu estado de energia mais baixo para fornecer eventos periódicos simples de "despertar"; relógio em tempo real, mantém o tempo preciso e pode ser alimentado por bateria mesmo quando o MCU está completamente desligado para facilitar o acesso à operação do sistema e aos dados vitalícios.

A série K10 também fornece funções dedicadas de relógio e temporização dedicadas a módulos específicos, para que nenhum outro recurso de temporização seja consumido. Por exemplo, módulos transmissores moduladores de portadora usados ​​para criar protocolos usados ​​em vários esquemas de codificação de sinal, como aqueles em comunicações infravermelhas, têm suas próprias funções dedicadas de temporização e contagem, bem como contadores de modulação por largura de pulso, gerenciamento e teclas de mudança de frequência. Variação de largura de pulso dependente do esquema de codificação. Espera-se que essa tendência de funções dedicadas de temporização e contagem continue à medida que os MCUs se tornem mais específicos de aplicativos e segmentos de mercado.

Os kits de desenvolvimento aceleram o tempo de lançamento no mercado

À medida que os MCUs se tornam mais específicos de aplicativos, os fabricantes estão criando mais kits de desenvolvimento orientados para aplicativos e designs de referência. As aplicações de controle de motores são provavelmente um dos exemplos mais comuns de um conjunto de aplicações específico. Como exemplo, a Renesas oferece um kit de desenvolvimento de controle de motor completo, o YMCRPRX62T mostrado na Figura 4, que inclui até mesmo um motor de exemplo. Este kit vem com todo o software e projetos de exemplo que você precisa para avaliar o Renesas RX62T MCU em vários projetos de controle de motor. A GUI de demonstração hospedada no PC exibe a velocidade, tensão e corrente do motor, permitindo ao usuário ajustar parâmetros e algoritmos para visualizar diretamente vários resultados para ajudar a ajustar a operação do motor para obter os melhores resultados em um projeto específico. Os kits de avaliação de controle do motor com funcionalidade semelhante ao Renesas RX62T também estão disponíveis em muitos outros fabricantes. Encontre o kit que melhor corresponda à sua aplicação de destino e ambiente de desenvolvimento para ajudar a acelerar seu próximo projeto de controle de motor, aproveitando a grande quantidade de trabalho “empacotado” pelo fabricante.

Os temporizadores e contadores são os periféricos mais familiares aos MCUs, mas aproveitá-los ao máximo pode garantir economia de energia, melhorar o desempenho e simplificar seus projetos. Este artigo discute alguns recursos novos e avançados que permitem explorar esses elementos comuns de maneiras incomuns.

Veja mais : Módulos IGBT | Ecrãs LCD | Componentes Eletrônicos