Forum: Mikrocontroller und Digitale Elektronik MSP430 2013 XOUT/XIN ansteuern


von Omsig H. (Firma: Keine) (ledomsig)


Angehängte Dateien:

Lesenswert?

Triviales Problem;
Ich versuche einen MSP430 2013 Microkontroller zu programmieren, ich 
benötige hierbei alle 10 PIN's als Outpins.

Die ersten 8 waren einfach durch P1DIR |= 0xff; auf Outpin zu setzen und 
mit
P1OUT |= BIT0 (als Beispiel) anzusteuern.

Jedoch funktioniert das bei XIN und XOUT nicht.
Laut Datenblatt sind dies auf P2.6 & P2.7 zu erreichen. Mit den befehlen
P2DIR |= 0xff; //(um BIT0 bis BIT7 als Ausgang zu setzen)
P2OUT |= BIT6; //(oder BIT7)
zeigten die PIN's keine Reaktion.
Hier eine Zeichnung der PIN Verteilung:
http://www.assembla.com/spaces/msp430/documents/bslClu058r3zFJab7jnrAJ/download?filename=F20x3_device_pinout.JPG

Mit welchem Befehl kann ich das erreichen?

Weiters hätte ich noch die Frage wie ich einen Delay einbauen kann,
ich hatte bereits folgende Methode die jedoch sehr umständlich ist:
    i = 50000;
    do (i--);
    while (i != 0);
Geht das auch einfacher?

Vielen Dank, LEDOmsig

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Omsig Hollow schrieb:
> Jedoch funktioniert das bei XIN und XOUT nicht.
> Laut Datenblatt sind dies auf P2.6 & P2.7 zu erreichen.

Das sind sie aber nur, wenn die Funktionalität als Anschluss für einen 
externen Quarz deaktiviert ist.

Besorg Dir dringend den "Family User's Guide" (slau144h), die für Dich 
relevanten Seitennummern erwähne ich im folgenden:

Interessant ist das Kapitel 8 "Digital I/O Operation", genauer der Punkt 
8.2.5 "Function Select Registers PxSEL and PxSEL2"

Für jeden der 8-Bit I/O-Ports gibt es dieses Registerpaar, beim 'F2013 
also P1SEL/P1SEL2 und P2SEL/P2SEL2. Für Dich hier von Bedeutung ist also 
P2SEL/P2SEL2.

Für jeden der Portpins (P2.0 bis P2.7) ist in jedem dieser Register 
jeweils ein Bit vorgesehen, die Bedeutung ist in der Tabelle auf S. 331 
aufgelistet.
Damit der betreffende Pin als I/O genutzt werden kann, muss das 
korrespondierende Bit sowohl in P2SEL als auch P2SEL2 auf 0 gesetzt 
werden.

Die auf S. 335 beschriebene Reset-Initialisierung (PUC) aber tut genau 
das nicht, da wird P2SEL mit 0xC0 initialisiert - und damit ist die 
"Primary peripheral module function" für P2.6 und P2.7 aktiviert.

Also: Initialisere P2SEL mit 0, und Du kannst P2.6 und P2.7 wie die 
anderen Bits des Ports ansteuern.

von Omsig H. (Firma: Keine) (ledomsig)


Lesenswert?

Vielen vielen dank Rufus!
Läuft perfekt!
Du bist jetzt mein ganz persönlicher Held! =D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.