Página 1 de 1

PWM no LPC1114

MensagemEnviado: 06 Ago 2010 17:59
por styg
Meu deus, tá um trabalho pra engrenar esse LPC1114.

Primeiro foi os rolos das jtags, dai agora comprei um ULINK2, belezinha, funciona perfeito.

Daí teve aquele lance de soldar o CI com pasta best e fuder com tudo, resolvido.

O PWM nao funciona nem a pau, na verdade nem configurando os pinos referentes aos MATs do timer (32b1), como IO consegui fazer piscar um led.

O básico tá funcionando, tem um led piscando em outra porta e um display 16x2 também, só que o pwm não rola.

Tem algum detalhe pra configurar o pwm, IOCON e GPIOs?

config pwm:
Código: Selecionar todos
LPC_SYSCON->SYSAHBCLKCTRL |=    0x400;  // ativa clk timer
LPC_IOCON->JTAG_TDO_PIO1_1 &=    ~0x07; // mascara
LPC_IOCON->JTAG_TDO_PIO1_1 |=    0x03;  // seleciona MAT
LPC_TMR32B1->MR3 = 100;   //
LPC_TMR32B1->MR0 = 10;      //
LPC_TMR32B1->MCR = 0x400;   // faz TC resetar a cada match de MR3
LPC_TMR32B1->EMR = 0x031;   // faz saida MAT0 alternar a cada match
LPC_TMR32B1->PWMC = 0x09;    // ativa modo pwm para MAT0 e 3
LPC_TMR32B1->TCR = 0x01;    // habilita contagem do timer



detalhe, no modo debug com o ulink2, quanda passa a instrução que altera o IOCON, na janela lá do keil os IOCONs ficam inalterados, já no simulador, eles são alterados... eu achava que o Keil alterava essas coisas em tempo real. :evil:

MensagemEnviado: 09 Ago 2010 15:01
por styg
esse pino já ta de sacanagem, configurado como saída pwm e medindo com o osciloscópio ele fica em 2V.. :(

MensagemEnviado: 09 Ago 2010 15:04
por proex
Presta atenção, tá prestando?

Se algum pino da interface PWM for compartilhado com algum pino do JTAG, e se vc estiver usando JTAG nessa hora, o PWM não vai funcionar.


.

MensagemEnviado: 09 Ago 2010 15:57
por styg
proex escreveu:Presta atenção, tá prestando?.


q isso?? eahueahue


proex, o p1.1 nao tem função jtag, isso que assusta.
tu tens pwm funcionando no timer 32b1?
como tu ta configurando teu lpc, na unha mesmo ou usando aquela lib CMSIS?

tá F***, tava testando num lpc1114 agora passei pra placa do LPC-Link com LPC1343 e nada, mesmo problema no pwm, na simulação funciona tudo certo, no debug falha.

Imagem

MensagemEnviado: 10 Ago 2010 13:02
por proex
styg escreveu:esse pino já ta de sacanagem, configurado como saída pwm e medindo com o osciloscópio ele fica em 2V.. :(


Isso é sinal que tem resistor Pull Up habilitado. Quando configurar um pino como Saida, não se deve habilitar o resistor Pull Up ou Pull Down.

MensagemEnviado: 10 Ago 2010 14:04
por styg
proex escreveu:Quando configurar um pino como Saida, não se deve habilitar o resistor Pull Up ou Pull Down.


essa é nova pra mim, sempre uso pull-ups em pinos de saída.


to fazendo uns testes aqui, configurei todos os pinos como saída e fico alternando eles.

a maioria dos pinos está chaveando, só os pinos que compartilham função de AD é que estão dando pau.

MensagemEnviado: 10 Ago 2010 14:08
por xultz
Não faz sentido ligar um pull-*.* numa saída, porque se você configura um pull up e deixa ele em nível baixo, vai ficar consumindo energia sem a menor razão pelo resistor.

MensagemEnviado: 10 Ago 2010 14:10
por styg
putaquipariu, nao acredito...

MensagemEnviado: 10 Ago 2010 14:36
por proex
xultz escreveu:Não faz sentido ligar um pull-*.* numa saída, porque se você configura um pull up e deixa ele em nível baixo, vai ficar consumindo energia sem a menor razão pelo resistor.


Não é só isso. Quando configurado como saida, o pino é um circuito driver como qualquer outro encontrado em portas logicas discretas e não um circuito com coletor aberto que precise de um Pull Up.

MensagemEnviado: 10 Ago 2010 14:37
por proex
styg escreveu:putaquipariu, nao acredito...


Já sei, o pino de saida PWM estava configurado com Entrada !!!!

MensagemEnviado: 10 Ago 2010 14:56
por styg
proex escreveu:
styg escreveu:putaquipariu, nao acredito...


Já sei, o pino de saida PWM estava configurado com Entrada !!!!



nao, isso tava tudo certo,

quando postei falando do AD, na hora pensei que o clock do AD podia ta ligada por default la no SYSAHBCLKCTRL, dai acabei o post e fui ver no user manual, mas nao era isso.

só que um pouco mais abaixo eu vi o bit 16 do SYSAHBCLKCTRL,
"IOCON - Enables clock for IO configuration block" e adivinha ? desabilitado por default,

a ta loco neh a nxp fez isso pra me fude mesmo pqp, como que uma P**** dessa vem desabilitada por padrão??? perdi umas 2 semanas nisso...

a princípio era isso mesmo, porque alterei esse bit e botei pra debugar passo-a-passo e os regs do IOCON começaram a mudar, até que fui alterar um pino usado pra JTAG e o debug parou e agora ta dando falha na conexão.

Como q vo reverter isso agora? Ok, revertido.