MSP430 accesibilidad de pines individuales

Estoy trabajando en una aplicación de potencia ultrabaja y quiero habilitar y acceder solo a un pin como salida y un pin como entrada. Estoy usando el microcontrolador MSP430 y CCS para programar. Tengo dos preguntas.

  • El MSP430 permite la accesibilidad de un puerto completo. ¿Es posible acceder solo a los dos pines requeridos como entrada y salida (lo cual es posible en PIC)?

  • ¿Acceder (y habilitar) todo el puerto (8 pines) no consume más corriente en comparación con acceder (y habilitar) un solo pin?

Respuestas (2)

El MSP430 organiza los bits GPIO en puertos, pero cuando se utilizan instrucciones C que establecen/borran bits individuales, el compilador generará comandos de establecimiento/borrado de bits que afectan solo a bits individuales (BIS/BIC):

if (P1IN & BIT1) {
    P1OUT |= BIT4;
} else {
    P1OUT &= ~BIT4;
}

Esto no consumirá corriente para ningún bit al que no se acceda.

En general, los pines GPIO no consumen corriente, a menos que

  • los pines de salida realmente se hunden o generan corriente (debido a un circuito externo), o
  • los pines de entrada realmente cambian (o están flotando).

La guía del usuario le indica cómo configurar pines no utilizados: como salida o como entrada con un pull-up/-down. (La configuración predeterminada es la entrada sin pull-up/-down, que no ahorra corriente, pero es la configuración más segura mientras el chip aún está reiniciado).

1) Sí, puede seleccionar pines individualmente. Por ejemplo, para configurar el pin 4 del puerto 1 como salida y alto:

P1DIR |= (1 << 4);
P1OUT |= (1 << 4);

Para establecer el mismo pin como entrada, borre el DIRbit:

P1DIR &= ~(1 << 4);

Aunque los registros P1DIRy P1OUTdescriben todo el puerto 1 como un todo, los bits individuales en ese registro controlan pines individuales: el bit de orden más bajo controla el primer pin para ese puerto, y así sucesivamente. Lo mismo se aplica a los otros puertos, cada uno de los cuales tiene ocho pines.

2) Los pines siempre están "habilitados" en algún modo. Hay una bandera para cada pin (que selecciona si el pin está en modo de entrada o salida) y también DIRhay una bandera (selecciona si el pin está en modo de datos o de función). SELEl modo predeterminado (después de reiniciar) para un pin es datos+entrada. El consumo de energía depende de lo que haya conectado al pin; no hay una sola respuesta.

¿Puede explicar la respuesta a la pregunta 1 en detalle?
No configure un pin no conectado a la entrada. Las entradas CMOS, en general, pueden consumir mucha corriente e incluso dañarse si se dejan flotando. Ajústelos a salidas o, si se deja como entrada, átelos a tierra o Vcc (a través de una resistencia si hay un cambio de configuración de salida).
El estado recomendado para los pines no utilizados es salida baja.