Onde acho literatura sobre canais se referindo a PWM no esp32.

Em todas as postagens sobre o o PWM  no esp32 cita  canais e sempre 

usam o canal 0 sendo que dizem ter 16? Porque somente usam 0?      

Obrigado  pela orientação.

Exibições: 104

Responder esta

Respostas a este tópico

olá Mark.

      Seguem os links para referência:

      ESP32 - PWM Units

   e

      ESP32 - LED PWM Unit   (pode ser usado para PWM geral também)

    e claro, a referência de Hardware:   ESP32 - Hardware Reference

      Abrçs,

      Elcids

Muito obrigado 

Prezado Elcids;

 As primeira e segunda referências li completamente. A terceira algumas partes.

Surgiram novas dúvidas (MCPWM) que deixarei para mais para frente.

As primeiras conclusões que penso ter entendido é que todos os pinos (pwm)

tem 16 canais que seriam saídas de formas de onda diferentes. Caso seja isso

não vi ainda quais e como são essas formas de onde e em TODAS as citações

somente indicam o canal 0, que deve ser a forma de onda retangular (quadrada).

ME CORRIJA POR FAVOR.

Obrigado 

olá Mark.

      Para tentar esclarecer, a princípio  vou focar no PWM  relativo ao periférico para controle de LEDs. Isto porque este PWM dos LEDs no ESP32, atende a grande maioria das necessidades de uso de PWM.  Já o MCPWM (Motor Control PWM), além do "básico" de PWM (ou seja também pode ser usado para PWM geral), tem recursos adicionais mais específicos para o Controle de Motores (como por exemplo Captura de Sinal e Sincronismo Externo), ou seja, deveria ser reservado para aplicações com Motores.

      Baseado no texto que vc escreveu acima, me parece que vc está com alguns conceitos equivocados. Então vamos tentar elucidar isto. Vou enumerar pontos importantes pois caso vc tenha dúvida será mais fácil se referir a estes pontos enumerados.

      Antes de tudo, observe que nas páginas de referência do ESP32 na Internet e no Manual de Referência Técnica (este, essencialmente Hardware),  o texto não está ruim. Certamente pode melhorar. É perceptível que este texto tem origem chinesa,  pois o inglês tem algumas coisas "estranhas".  Isto é importante, pois em certas condições pode-se entender de forma errônea alguma lógica fundamental. Mas este detalhe não compromete a utilidade do texto, uma vez que alguém muito experimentado com a área de Microprocessadores, notará eventuais pontos duvidosos no texto descritivo e saberá o que fazer para elucidar.  Em outras palavras:  para quem não estiver acostumado com aquele tipo de descrição técnica,  pode ter alguns problemas de interpretação.  E claro, independente do inglês,  os chineses ainda não "aprenderam" a forma mais rigorosa de se fazer descrição técnica em datasheets ou em manuais de referência técnica.

      Então segue alguns pontos, concentrando-se no "LED" PWM:

      1) o PWM gerado para controle de intensidade dos LEDs, pode ser usado como um PWM genérico,  para controlar outros dispositivos (inclusive Motores), e também para gerar formas de onda simples ou complexas. Então não é preciso levar o nome "LED" a risca, e este nome seria apenas uma referência para o Módulo existente no ESP32.

      2)  um Canal PWM  deve  minimamente:  permitir especificar a frequência "base" do Sinal PWM,  e permitir especificar o Ciclo PWM (ou "duty cycle" do PWM).

      3)  adicionalmente, na ordem de importância, um Canal PWM  pode também: permitir especificar a resolução do ciclo do PWM (em bits),  permitir especificar a origem do clock para o Gerador PWM (muitas vezes isto está associado a especificar o "Timer/Counter" usado no Canal PWM),  e permitir especificar a "fase" do PWM (ou a  polaridade do PWM).

      4)  outras características podem existir, mas de menor importância do ponto de vista geral de um Canal PWM.  Por exemplo:  no caso dos Canais PWM para LEDs no ESP32, pode-se ter "Fader In" e "Fader Out" automáticos e programáveis,  e também pode-se gerar Interrupções ao final destes faders.

      5)  para o Módulo LED PWM do ESP32,  existem 16 canais PWM, separados em dois grupos de 8 Canais:  grupo "High Speed",  e grupo  "Low Speed".  Sobre a diferença entre os grupos "High Speed" e "Low Speed", não irei falar neste momento, para não "atrapalhar"  a descrição geral dos Canais PWM. Mas dependendo da aplicação  não fará diferença entre um e outro grupo (por exemplo quando se usa Filtro Passa-Baixas na saída para gerar formas de onda),  ou a diferença será praticamente negligenciável.

      6)  os 16 canais são independentes um do outro, ou seja, vc pode programar e controlar cada um deles individualmente.  Mas os recursos disponíveis para estes 16 canais, poderão ser limitados. Por exemplo:  para os 8 Canais do grupo "High Speed", estão disponíveis 4 Timers (numerados de "0" a "3"), e cada um desses Timers pode estar gerando uma Frequência fundamental diferente (a frequência "fonte" ou de origem). Assim, há 8 Canais PWM High Speed, e cada Canal  deve usar um dos  4 Timers disponíveis.  Em outras palavras, caso vc use por exemplo 5 Canais PWM, pelo menos dois desses Canais terão que ter a mesma Frequência fundamental, pois não existem 5 Timers disponíveis para o grupo High Speed (e claro, a mesma lógica se aplica ao grupo Low Speed).

      7)  um recurso limitado e bastante significativo, disponível para os 16 Canais PWM, são os pinos de I/O que podem ser designados para os Canais. Dizemos pinos de I/O, mas efetivamente queremos dizer pino de saída, no qual estará disponível o Sinal PWM de um determinado Canal.  Isto é bastante significativo, uma vez que no caso do PWM praticamente não há sentido em se gerar um sinal, se este sinal não estiver externamente disponível em um pino físico do Processador (o ESP32).  Então veja:  há 16 Canais de PWM, e para cada canal vc pode designar um pino de I/O onde o Sinal PWM estará disponível externamente.  Mas há de fato tantos pinos assim disponíveis no ESP32 que podem ser direcionados para todos os 16 Canais PWM (além daqueles pinos que já tem outras funções no ESP32) ???   Pense a respeito e analise a realidade, estando pronto para fazer concessões devido às limitações físicas da implementação atual do Hardware do ESP32.

      8)  como existem 16 Canais PWM, divididos em 2 grupos "High" e "Low" Speed, para se usar um determinado Canal, é necessário especificar o grupo (High ou Low Speed), e o número do Canal de "0" a "7".   Logo Mark,  dizer apenas "Canal 0"  não especifica completamente um Canal,  uma vez que existem dois "Canais 0", um High e outro Low Speed.  Nos exemplos que vc se refere, acredito que estejam usando o "Canal 0" High Speed (ou simplesmente "HS" ou "hs"), já que os canais High Speed tem suporte de Hardware e portanto são mais "fáceis" de se usar (já os Canais Low Speed precisam de suporte de Software).

      9)  para configurar um dos 16 Canais disponíveis, você deve usar a função "ledc_channel_config", onde especificará o pino de I/O onde o Sinal PWM "aparecerá" externamente,  o grupo do Canal (High ou Low Speed), o número do Canal  (0 a 7naquele grupo, e outros parâmetros relativos ao PWM.   Isto tudo é especificado através de uma estrutura do tipo "ledc_channel_config_t", a qual está definida no arquivo "ledc.h" da Biblioteca nativa do ESP32, e é mostrada na figura a seguir:

(clique na figura para "zoom")

      Note que marquei em amarelo na figura anterior, os elementos mais evidentes relacionados com a definição de um Canal (pino de I/O, grupo HS ou LS, e o próprio número do Canal).

      10)  para exemplificar a definição de um determinado Canal PWM, veja o trecho retirado de um exemplo,  e mostrado na figura a seguir:

(clique na figura para "zoom")

      Observe que para simplificar a especificação dos Canais, foram usados "alias" (ou "apelido")  através de diretivas  #define  da Linguagem C/C++.

      11)  resumindo:  basta usar como referência qualquer exemplo de código com um Canal PWM específico, e alterar os parâmetros para se usar o Canal desejado (um dos 8 HS ou um dos 8 LS).  Essencialmente então, basta se conhecer como se utiliza um Canal PWM genérico, e estender isso para quaisquer dos 16 Canais (lembrando apenas que existem algumas diferenças entre Canais HS e LS).

      Entenda que é comum que se use em exemplos, o primeiro Canal numa sequência numerada, que seria justamente o Canal "0" (ou o HS ou o LS).  Então este é o motivo porque vc quase só vê exemplos usando o Canal "0". Mas como eu disse, basta estender a mesma ideia para qualquer dos outros canais disponíveis (e claro:  especificar todos os parâmetros necessários para que o Canal gere o Sinal PWM desejado).

      Espero ter ajudado.

      Abrçs,

      Elcids

Muito obrigado Elcids. Bela e detalhada aula.

Muito obrigado

Prezado Murta;

As tuas três referências li completamente. 

As do Elcids li as duas primeiras e algumas partes da terceira.

Essa terceira deve ser uma citada por você com de mais de 600 páginas.

Surgiram novas dúvidas (MCPWM) que deixarei para mais para frente.

As primeiras conclusões que penso ter entendido é que todos os pinos (pwm)

tem 16 canais que seriam saídas de formas de onda diferentes. Caso seja isso

não vi ainda quais e como são essas formas de onde e em TODAS as citações

somente indicam o canal 0, que deve ser a forma de onda retangular (quadrada).

ME CORRIJA POR FAVOR.

Obrigado

Desculpe a demora em responder. Muito obrigado novamente

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço