Página 1 de 1

CAPTURE-PWM-CAP LPC17XX.

MensagemEnviado: 06 Jul 2012 15:20
por fabim
Pessoal, eu aprendi a usar o PWM dos CM3 no ano passado, e agora eu preciso capturar largura de pulsos para medir a velocidade de 3 ventoinhas.

Eu estou aqui tentando entender o UM, mais esta muito confuso.

EU possuo os CAPx[x], e os PCAPx[x].

Estou a algum tempo tentando entender mais esta complicado. Nos pic, eu escolhia entre bordas de subida, bordas de decida, e até quantas bordas eram !!
Só que quando eu utilizava o capture, eu ficava sem o pwm, e proporcionalmente sem os timers...

Bom, no arm, o hW do digamos CCP funciona a parte dos 4 tmr disponíveis.
Ou seja, eu posso utilizar os timers, cada qual com os seus MAT´s que geram interrupções para base de tempo interno, ou para interagir com os pinos.
Porém estes mesmos timers possuem função capture também ?
E os dois canais de pwm também possuem capture ?

To confuso bragarai, alguém tem uma ligth ?

MensagemEnviado: 10 Jul 2012 09:38
por tronico
No momento não possuo um hardware montado para testar e garantir 100% mas pelo que me recordo e analisei o user manual é o seguinte:

O LPC17xx possui dois PWM porém um deles é otimizado para controle de motor trifásico AC e motor DC o MCPWM. Cuja as características não conheço bem.
Irei me referir ao PWM1 que possui 6 saídas.

Os Timers0/1/2/3 são independentes do Timer do PWM e ambos possuem a função Capture também independentes.

Todos os Timers possuem dois canais Capture de 32 bits exclusivos com seus respectivos pinos:
CAP0[0] = Entrada Capture para Timer0, canal 0.
CAP0[1] = Entrada Capture para Timer0, canal 1.
CAP1[0] = Entrada Capture para Timer1, canal 0.
CAP1[1] = Entrada Capture para Timer1, canal 1.
CAP2[0] = Entrada Capture para Timer2, canal 0.
CAP2[1] = Entrada Capture para Timer2, canal 1.
CAP3[0] = Entrada Capture para Timer3, canal 0.
CAP3[1] = Entrada Capture para Timer3, canal 1.

O PWM1 possui também dois canais Capture de 32 bits exclusivo para o PWM.
PCAP1[0] = Entrada Capture para PWM1, canal 0
PCAP1[1] = Entrada Capture para PWM1, canal 1


Em ambos o evento de captura carrega o valor do timer para o registrador de captura.
O incremento do contador tanto para os Timers quanto para o PWM pode originar do Prescale ou das entradas de Capture, isso pode causar confusão.


Nos Timers o registrador:
T[0/1/2/3]CCR define a borda de captura para os canais
T[0/1/2/3]CR0|1 contém o valor do contador carregado na captura
T[0/1/2/3]CTCR define a origem do incremento do contador, Prescale ou entradas Capture.

No PWM o registrador:
PWM1CCR define a borda de captura.
PWM1CR0|1 contém o valor do contador carregado na captura
PWM1CTCR define a origem do incremento do contador, Prescale ou entradas Capture.

Interrupções podem ser habilitadas para os eventos de captura por canal específico.
Vale apena lembrar dos Registradores PINSEL que habilitam os pinos para Captura.

MensagemEnviado: 10 Jul 2012 15:17
por fabim
Bom, ai quer dizer que.
Ao que acontece o capture, por bordas de descida por exemplo.
O valor atual do TIMERx, será transferido para o CR0 ou CR1, neste momento irá ocorrer uma interrupção certo ?
O tempo entre as bordas é, valor atual, menos o valor que fiz cache da captura anterior ?
Ou se for entre bordas, na primeira borda ocorre o disparo de incremento do CRx, e na segunda borda ele breka o incremento e gera a interrupção ?
Estou completamente confuso!!!

MensagemEnviado: 11 Jul 2012 18:33
por tronico
É importante compreender o registrador CCR, ele é usado para controlar a captura.
Cada canal possui 3 bits:
o primeiro define a captura por borda de subida
o segundo define a captura por borda de descida
o terceiro define que ocorrerá interrupção no evento de captura

Apenas os registradores Match podem parar o contador ou resetá-lo.
Esse registrador Match "MCR" possui 3 bits para cada Match register.
o primeiro define que ocorrerá uma interrupção quando os valores do Match e do contador corresponderem "forem iguais"
o segundo define que o contador será resetado quando os valores do Match e do contador corresponderem
o terceiro define que o contador irá parar quando os valores do Match e do contador corresponderem, será necessário habilitar novamente o contador para continuar a contar

Realizar duas capturas e fazer a subtração entre elas é sim uma das técnicas, mas não se esqueça que o contador estoura em algum momento se não houver nenhuma restrição com Match register. Será preciso levar em conta no momento de realizar a subtração.

É possível também usar os dois canais de captura, configurar um para borda de subida, o outro para descida com interrupção, assim já terás o valor das duas capturas, mas ainda assim o contador pode estourar.

MensagemEnviado: 12 Jul 2012 08:05
por fabim
muito obrigado bioTRÔNICO !!! hehehe.

Realmente, eu agora consegui entender o que esta explicando no UM !!!
Estava havendo uma salada de informações, acerca de MR,CR, etc. Mais agora eu consegui entender como utilizar o timer, com capture e os MR!!!
Eu precisava de um canal pwm a parte para gerar 950hz para buzzer, para um item da norma.
E o meu pwm já estava sendo utilizado para frequência de 500hz, e ontem a noite lendo sobre o timer, eu posso utilizar o MR para gerar um clock de 500hz, e ainda utilizar o CP para capturar a um evento de clock.
Em outro timer, posso utiliza-lo como pwm autonomo, e ainda utilizar o CR para capturar a rotação da ventoinha !!

Em resumo.

O timer do ARM, é um TCCP do pic, para quem só conhece pic.
Timer, Capture, Compare, Pwm !!!

Abraços