MSP430 Multiplexing GPIO und SPI

Gast #2654659
Lesenswert?

Hallo,

ich verwende den MSP430F2013 und habe dort folgendes Problem:

Am Port P1.6 hängt einerseits der SPI (MOSI) und zusätzlich soll es als 
GPIO verwendet werden (HIGH-> ADC auslesen -> Low).

Nur leider funktioniert das mit dem High nicht.
1
P1SEL &= ~BIT6;
2
P1DIR |= BIT6;
3
P1OUT |= BIT6;

Damit versuche ich das "Beinchen zu heben". Laut Debugger sind die 
Register auch richtig gesetzt. Nur sehe ich am Ausgang kein HIGH.

Muss ich noch etwas anderes einstellen?

Schönen Gruß,
Johannes
#2654744
Lesenswert?

P1SEL ist hier mal nicht ausschlaggebend für die Funktion des Pins. Die 
USI-Register sind dominant. Ist der Pin hier als MOSI gesetzt, ist P1SEL 
don't care.

Du musst also im USICTL0 USIPE6 aus dem Register nehmen (USICTL0 &= 
~USIPE6), dann ist der Pin wieder frei. Hierfür solltest du zusätzlich 
den USI in den Reset-State setzen, da keine Änderungen am Register 
vorgenommen werden sollten (außer USICNT und USISR natürlich), solange 
der USI aktiv ist.

Gruß, LuXXuS
#2654759
Lesenswert?

Johannes schrieb:
> Port 6

Pin ;-)

Nur falls du auch noch Port 2 benutzen willst: Hier ist es ähnlich - 
wenn du z.B. den Timer benutzen möchtest, dann geht das über P2SEL 
erstmal nicht, da Port 2 für den Quarz reserviert ist. Hier muss im 
Register der Quarz deaktiviert werden. Als GPIO kannst du ihn jedoch 
verwenden.

Weiß nicht, wieso das so gelöst ist, aber naja...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren