MSP430 individuelle Pin-Zugänglichkeit

Ich arbeite an einer Ultra-Low-Power-Anwendung und möchte nur einen Pin als Ausgang und einen Pin als Eingang aktivieren und darauf zugreifen. Ich verwende den MSP430-Mikrocontroller und CCS zum Programmieren. Ich habe zwei Fragen.

  • Das MSP430 ermöglicht den Zugriff auf einen ganzen Port. Ist es möglich, nur auf die erforderlichen zwei Pins als Eingang und Ausgang zuzugreifen (was in PIC möglich ist)?

  • Verbraucht der Zugriff (und die Aktivierung) des gesamten Ports (8 Pins) nicht mehr Strom als der Zugriff (und die Aktivierung) auf einen einzelnen Pin?

Antworten (2)

Der MSP430 organisiert die GPIO-Bits in Ports, aber wenn C-Anweisungen verwendet werden, die einzelne Bits setzen/löschen, generiert der Compiler Befehle zum Setzen/Löschen von Bits, die nur einzelne Bits (BIS/BIC) betreffen:

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

Dies verbraucht keinen Strom für irgendwelche Bits, auf die nicht zugegriffen wird.

Im Allgemeinen verbrauchen GPIO-Pins keinen Strom, es sei denn

  • Ausgangspins ziehen oder liefern tatsächlich Strom (aufgrund externer Schaltungen) oder
  • Eingangspins ändern sich tatsächlich (oder schweben).

In der Bedienungsanleitung erfahren Sie, wie Sie unbenutzte Pins konfigurieren: als Ausgang oder als Eingang mit einem Pull-up/-down. (Die Standardeinstellung ist die Eingabe ohne Pull-up/-down, was keinen Strom spart, aber die sicherste Einstellung ist, während der Chip noch im Reset ist.)

1) Ja, Sie können Pins einzeln auswählen. Um beispielsweise Pin 4 von Port 1 als Ausgang und High zu setzen:

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

Um denselben Pin als Eingang festzulegen, löschen Sie das DIRBit:

P1DIR &= ~(1 << 4);

Obwohl die Register P1DIRund P1OUTden gesamten Port 1 als Ganzes beschreiben, steuern die einzelnen Bits in diesem Register einzelne Pins: Das niedrigstwertige Bit steuert den ersten Pin für diesen Port und so weiter. Gleiches gilt für die anderen Ports, von denen jeder acht Pins hat.

2) Pins sind in einigen Modi immer "aktiviert". Es gibt DIRein Flag für jeden Pin (das auswählt, ob sich der Pin im Eingangs- oder Ausgangsmodus befindet) und es gibt SELauch ein Flag (wählt aus, ob der Pin im Daten- oder Funktionsmodus ist). Der Standardmodus (nach dem Neustart) für einen Pin ist Daten+Eingabe. Der Energieverbrauch hängt davon ab, was Sie an den Pin angeschlossen haben; es gibt keine einzige Antwort.

Können Sie die Antwort auf Frage 1 im Detail erläutern?
Setzen Sie keinen nicht verbundenen Pin auf Eingang. CMOS-Eingänge können im Allgemeinen viel Strom verbrauchen und sogar beschädigt werden, wenn sie erdfrei bleiben. Setzen Sie sie entweder auf Ausgänge oder verbinden Sie sie, wenn sie als Eingang belassen werden, entweder mit Masse oder Vcc (über einen Widerstand, wenn sich die Einstellung auf Ausgang ändert).
Der empfohlene Zustand für unbenutzte Pins ist Ausgang niedrig.