P1REN não aciona os resistores de Pull-up

198 views
Skip to first unread message

Francisco Fambrini

unread,
Sep 28, 2014, 7:15:05 AM9/28/14
to texa...@googlegroups.com
Senhores,

Ao testar o código abaixo na Launchpad modelo antigo (que usava o chip MSP430G 2231  e MSP430G2211)  tudo funcionava perfeitamente

Porém, ontem, ao testar o mesmo código numa Launchpad mais moderna (equipada com MSP430G2452)  verifiquei que este código não aciona os deivdos resistores de pull-up internos no MSP430  (ou seja, o registrador P1REN não faz o efeito desejado)

Alguém já passou por este problema ?

#include <msp430.h>

void main(void)
{
  //Configura o hardware
  WDTCTL = WDTPW+WDTHOLD;  // Desativa o WDT

  P1DIR = 0x41;            // P1.3 como entrada e P1.0 como saída
  P1REN = 0x00;            // Ativa o pull up interno em todos os pinos que
                           // estão sendo usado como entrada (o pull up é
                           // ativado com o valor "0")

  //Realiza o trabalho
  while(1)
  {
    if (P1IN & 0x08)       // P1.3 = "1" indica que S2 está SOLTO
      P1OUT = 0x00;        // P1.0 = "1" liga o LED VERDE
      
    else
      P1OUT = 0xff;        // P1.0 = "0" desliga o LED VERDE
  }
}

agaelema .

unread,
Sep 28, 2014, 9:23:56 AM9/28/14
to Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
Bom dia Francisco, estranho este código ter funcionado pois vai contra os outros modelos. Nunca usei o G2231. Tente o seguinte no G2452.

Não testei aqui, mas deve funcionar.

#include <msp430.h>

void main(void)
{
  //Configura o hardware
  WDTCTL = WDTPW+WDTHOLD;  // Desativa o WDT

  P1DIR = 0x41;            // P1.3 como entrada e P1.0 como saída
  P1REN = 0xFF;            // Ativa o resistor interno em todos os pinos que - ativa em nível alto
                           // estão sendo usado como entrada (o pull up é
                           // ativado com o valor "0")
  P1OUT = 0x41;            // Ativa o pull up interno nas saídas dos leds

  //Realiza o trabalho
  while(1)
  {
    if (P1IN & 0x08)       // P1.3 = "1" indica que S2 está SOLTO
      P1OUT = 0x00;        // P1.0 = "1" liga o LED VERDE
      
    else
      P1OUT = 0xff;        // P1.0 = "0" desliga o LED VERDE
  }
}

Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

--
--
Você recebeu esta mensagem porque está inscrito no Grupo Google "Texas Instruments Info para Designers e Projetistas".
Para postar uma mensagem neste grupo, mande um email para texa...@googlegroups.com
Para deixar o grupo, mande um email para texas-sc+u...@googlegroups.com
Para mais opções, visite este grupo no endereço:
http://groups.google.com/group/texas-sc?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "Texas Instruments Info para Designers e Projetistas" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para texas-sc+u...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Francisco Fambrini

unread,
Sep 28, 2014, 9:27:40 AM9/28/14
to Matos, Raul, texa...@googlegroups.com
Obrigado Raul,

Vou testar sua dica.

Seria assim então ?

 P1DIR = 0x41;            // P1.3 como entrada e P1.0 como saída
  P1REN = 0xFF;            // Ativa o pull up interno em todos os pinos que
                           // estão sendo usado como entrada (o pull up é
                           // ativado com o valor "1")





Em 28 de setembro de 2014 10:26, Matos, Raul <ra...@ti.com> escreveu:
Bom dia, Fambrini! Tudo bom?

O p1ren eh ativo em 1, não em zero como você mencionou.
Nas launchpads havia resistores físicos externos ao mcu, por isso funcionava mesmo com o p1ren =0

Espero que isso ajude

Abraço,
Raul Matos


Enviado por Samsung Mobile.


-------- Mensagem original --------
De : Francisco Fambrini
Data:28/09/2014 8:15 AM (GMT-03:00)
Assunto: [Texas Instruments] P1REN não aciona os resistores de Pull-up

Francisco Fambrini

unread,
Sep 28, 2014, 9:40:36 AM9/28/14
to Matos, Raul, texa...@googlegroups.com
Muito agradecido Grande Raul !  

Abração

Em 28 de setembro de 2014 10:32, Matos, Raul <ra...@ti.com> escreveu:
Fambrini, tem mais coisa que você precisa verificar...

O p1ren somente habilita os resistores, porém não define se eh pullup ou down.

Para estar a direção, você deve alterar o p1out. Parece estranho mas eh assim que funciona.

P1ren =0; sem pull up nem down

P1ren =1;
P1out =0; pull down ativo

P1ren =1;
P1out =1; pull up ativo

Abraço
Raul


Enviado por Samsung Mobile.


-------- Mensagem original --------
De : Francisco Fambrini
Data:28/09/2014 10:27 AM (GMT-03:00)
Para: "Matos, Raul" ,texa...@googlegroups.com
Assunto: Re: [Texas Instruments] P1REN não aciona os resistores de Pull-up

agaelema .

unread,
Sep 28, 2014, 11:00:57 AM9/28/14
to Francisco Fambrini, Matos, Raul, Texas Instruments Info para Designers e Projetistas
A explicação do Raul resumiu bem a configuração. Depois diga se deu certo Francisco.

Eu pessoalmente gosto de utilizar os "defines" do CCS que deixam a programação mais amigável, mas acho que não tem no IAR você pode fazer:

#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80

Ai dentro do código uso esses defines no lugar dos valores em hexa para ficar mais simples de entender.

P1DIR &= ~BIT3; // configura como entrada, por padrão já inicia como entrada
P1REN = BIT3; // habilita resistor interno
P1OUT = BIT3; // configura como pullup

while(1)
{
if(P1IN & BIT3)
P1OUT |= BIT0; // liga o led - altera somente o bit0

else
P1OUT &= ~BIT0; // desliga o led - altera somente o bit0
}



Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

Luiz

unread,
Sep 28, 2014, 2:57:40 PM9/28/14
to agae...@gmail.com, Francisco Fambrini, Matos, Raul, Texas Instruments Info para Designers e Projetistas
Boa tarde a todos!

Só para complementar o tópico, as declarações e atribuições dos "defines" não são exclusividade de um compilador específico ou capricho do programador.

No IAR, elas são geradas automaticamente quando um modelo de microcontrolador é definido no projeto do código.
Project, Options, General Options, Target, Device.

Imagem inline 2

Att,

agaelema .

unread,
Sep 28, 2014, 3:17:36 PM9/28/14
to Luiz, Francisco Fambrini, Matos, Raul, Texas Instruments Info para Designers e Projetistas
Então fica mais simples ainda. Bom saber. Obrigado pela dica Luiz.

Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

Francisco Fambrini

unread,
Sep 28, 2014, 3:23:54 PM9/28/14
to agaelema ., texa...@googlegroups.com
Aproveitando este tópico (excelentes as respostas, obrigado !):

Como eu faço para implementar um PWM na Launchpad  MSP430 ?

Os MSP430G2xxx tem algum módulo PWM  "hardcoded"  ou eu tenho que fazer unsando a interrupção  do TIMER  ( " na unha" ?)

Luiz

unread,
Sep 28, 2014, 3:24:24 PM9/28/14
to agaelema ., Francisco Fambrini, Matos, Raul, Texas Instruments Info para Designers e Projetistas
...Faltou o operador para deixar o código anterior corretíssimo:

P1REN |= BIT3; // habilita resistor interno
P1OUT |= BIT3; // configura como pullup

Att,

Em 28 de setembro de 2014 16:17, agaelema . <agae...@gmail.com> escreveu:

Luiz

unread,
Sep 28, 2014, 3:45:19 PM9/28/14
to Francisco Fambrini, agaelema ., Texas Instruments Info para Designers e Projetistas
Francisco, nos exemplos da Texas (slac463c) existem 4 códigos prontos que externam saídas PWM usando TA1.

msp430g2xx1_ta_16.c              Timer_A, PWM TA1-2, Up Mode, DCO SMCLK
msp430g2xx1_ta_17.c              Timer_A, PWM TA1, Up Mode, 32kHz ACLK
msp430g2xx1_ta_19.c              Timer_A, PWM TA1, Up/Down Mode, DCO SMCLK
msp430g2xx1_ta_20.c              Timer_A, PWM TA1, Up/Down Mode, 32kHz ACLK

Veja que 2 deles necessitam de um cristal de 32.768kHz soldado na placa.

Não pesquisei toda a linha G2, apenas o 2231.

Imagem inline 1

Att,

agaelema .

unread,
Sep 28, 2014, 4:02:37 PM9/28/14
to Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
PWM na launchpad é baseado no timer.

Veja se este código ajuda, adaptei ele a bastante tempo com base em um da série F, mas funciona bem.



Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

Em 28 de setembro de 2014 16:23, Francisco Fambrini <ffam...@gmail.com> escreveu:

Francisco Fambrini

unread,
Sep 28, 2014, 4:18:34 PM9/28/14
to agaelema ., texa...@googlegroups.com
Muito agradecido pelos códigos e pelas dicas !

Luiz

unread,
Sep 28, 2014, 4:39:25 PM9/28/14
to Francisco Fambrini, agaelema ., Texas Instruments Info para Designers e Projetistas

Luiz

unread,
Sep 28, 2014, 4:58:46 PM9/28/14
to Francisco Fambrini, agaelema ., Texas Instruments Info para Designers e Projetistas
Os ARM Cortex M4 (TIVA C Series) disponibilizam um módulo PWM:

Imagem inline 1

Att,

Francisco Fambrini

unread,
Sep 28, 2014, 4:59:57 PM9/28/14
to Luiz, texa...@googlegroups.com
Haroldo, Luiz e demais colegas:

Voces tem usado aquela placa TIVA  que funciona a 120 MHz  de clock (com ethernet ) ?


agaelema .

unread,
Sep 28, 2014, 5:02:14 PM9/28/14
to Francisco Fambrini, Luiz, Texas Instruments Info para Designers e Projetistas
Ainda não tive contato com ela Francisco, mas tenho vontade de conhecer para implementar nos projetos.

Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

Luiz

unread,
Sep 28, 2014, 8:39:38 PM9/28/14
to agaelema ., Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
...Atordoando um pouco mais esse tópico, considerei a questão dos resistores "pull up" e "pull down" "parcialmente" esclarecida devido a declaração do Raul Matos:

"...Nas launchpads havia resistores físicos externos ao mcu, por isso funcionava mesmo com o p1ren =0

Espero que isso ajude

Abraço,
Raul Matos"

Ele parece afirmar que o hardware das LaunchPads do G2231 e G2553 é diferente devido à existência de resistores externos.

Anteriormente (G2231), o P1REN habilitava em "1" ou "0" sem a necessidade de um comando P1OUT, pela existência de resistores externos ao microcontrolador?

O diagrama de blocos do 2231 mostra somente resistores internos à CPU:

Imagem inline 1

Assim como o Diagrama Esquemático da versão antiga (rev. 1.3), na pág. 15 do guia do usuário, não mostra resistores externos nos pinos da placa: http://www.bu.edu/eng/courses/ek307/documents/TIMSP430-LaunchpadManual.pdf.


Analisando o Esquemático do 2231 abaixo é possível identificar o acionamento direto da chave de alimentação do resistor interno, através do sinal presente em PxREN.y, mas não sabemos que tipo de chave é esta, ou, qual é a lógica funcional
O sinal PxOUT.y é a variãvel de seleção do MUX que escolhe no resistor interno o valor de VSS ou VCC. 

Imagem inline 2
Na pág. 328 do guia http://www.ti.com/lit/ug/slau144j/slau144j.pdf encontramos as configurações:

8.2.2 Output Registers PxOUT

Each bit in each PxOUT register is the value to be output on the corresponding I/O pin when the pin is configured as I/O function, output direction, and the pullup/down resistor is disabled.

Bit = 0: The output is low
Bit = 1: The output is high

If the pin's pullup/pulldown resistor is enabled, the corresponding bit in the PxOUT register selects pullup or pulldown.
Bit = 0: The pin is pulled down
Bit = 1: The pin is pulled up

8.2.4 Pullup/Pulldown Resistor Enable Registers PxREN

Each bit in each PxREN register enables or disables the pullup/pulldown resistor of the corresponding I/O pin. The corresponding bit in the PxOUT register selects if the pin is pulled up or pulled down.

Bit = 0: Pullup/pulldown resistor disabled
Bit = 1: Pullup/pulldown resistor enabled

8.2.8 Configuring Unused Port Pins

Unused I/O pins should be configured as I/O function, output direction, and left unconnected on the PC board, to prevent a floating input and reduce power consumption. The value of the PxOUT bit is irrelevant, since the pin is unconnected. Alternatively, the integrated pullup/pulldown resistor can be enabled by setting the PxREN bit of the unused pin to prevent the floating input. See the System Resets, Interrupts, and Operating Modes chapter for termination of unused pins.


No MSP430G2553, foram adicionados mais 2 MUX entre PxREN.y e PxOUT.y, um buffer inversor, entre outros elementos que influenciam na habilitação/definição do resistor interno.

Imagem inline 1

Então, que resistores externos a CPU seriam esses citados pelo Raul?

A chave de alimentação continua sendo ativada diretamente pelo sinal de PxREN.y, mas a seleção do MUX do resistor interno depende do sinal presente no pino do microcontrolador ou PxOUT.y.

Att,

Matos, Raul

unread,
Sep 28, 2014, 8:52:15 PM9/28/14
to lu...@liberato.com.br, agaelema ., Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
Luiz,

Não falei em nenhum momento que o p1ren era ativo em zero.
O que acontece eh que havia um resistor externo, ou seja, habilitar ou não o p1ren não faria a menor diferença. 

Segue trecho do user guide sobre a diferença nas revisões:

1.4Revisions ThefirstproductionrevisionoftheLaunchPadin2010was1.3.In2012theLaunchPadboardrevision changedfrom1.4to1.5toalignwiththenewreleaseofValueLinedevices.Thedifferencesinthe schematicandthekitcontentsare: •LayoutandSchematic:–Voltagefeedbackintheemulatorchangedtoincreasestartupstability(Rev1.3toRev1.4)–RearrangedjumperJ3tosupporttwoUARTconfigurations:vertical(SWUART),horizontal(HW UART)–VCContheconnectorJ4cannowbedisconnectedfromtheemulatorVCCbyJ3–PullupresistorR34andcapacitorC24onP1.3removedtoreducethecurrentconsumption–PresolderedmaleheadersJ1andJ2

Não estou conseguindo colar direito do celular então lhe convido a verificar você mesmo no documento slau318

Bom fim de domingo a todos.




Enviado por Samsung Mobile.


-------- Mensagem original --------
De : Luiz
Data:28/09/2014 9:39 PM (GMT-03:00)
Para: "agaelema ."
Cc: Francisco Fambrini ,Texas Instruments Info para Designers e Projetistas

Luiz

unread,
Sep 28, 2014, 9:09:28 PM9/28/14
to Matos, Raul, agaelema ., Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
Obrigado pela resposta Raul!

Na verdade, o funcionamento da configuração dependia do pino escolhido, do código e das variáveis da aplicação.

Podia funcionar, ou, não...

Pode ser que o comando PxREN.y tenha sido mais utilizado na condição de uso do pino como entrada, então o "0" do P1OUT.y não influenciava na definição de "pull up" ou "pull down". Não sei, quem sabe...?

Dependendo do bit da porta P1, muda o circuito interno:

Imagem inline 1

Att,

Luiz

unread,
Sep 29, 2014, 2:04:46 PM9/29/14
to Matos, Raul, agaelema ., Francisco Fambrini, Texas Instruments Info para Designers e Projetistas
Boa Tarde a Todos!

O guia do usuário mais atual da LaunchPad G2 http://www.ti.com/lit/ug/slau318e/slau318e.pdf esclarece a questão do resistor externo na pág. 25:

LaunchPad revisions 1.3 and 1.4 come with R34 populated. The 47-kΩ resistor is used as a pullup for the button S2. If the port P1.3 is driven to ground, as suggested to keep the power consumption down, the pullup resistor generates an additional current of approximately 77 µA. To reduce the power consumption, the port should stay in input mode or the resistor should be removed if button S2 is not used. The internal pullup of the MSP430G2xx can be used instead.

O resistor R34 de 47kohm estava montado externamente na LaunchPad como "pull up" definitivo no pino 5 (P1.3) do microcontrolador até a versão Rev. 1.4, justamente, o pino utilizado como entrada no teste inicial do Francisco.

Com a mudança interna do microcontrolador (2231 para 2553) percebem-se diferenças funcionais e, o resistor R34 e o capacitor C24 foram retirados da placa na Rev. 1.5.

Mas, permanecem no diagrama esquemático da slau318 Rev. E, de 6 de março de 2014, que é a documentação disponível atualmente na página da Texas.

Imagem inline 1

Att,
Reply all
Reply to author
Forward
0 new messages