Datum:
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.
P1SEL &= ~BIT6; P1DIR |= BIT6; 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
Datum:
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
Datum:
Gut, ich habe den Fehler gefunden: Ich muss noch den Port 6 von USICTL0 auf Low schalten: USICTL0 &= ~USIPE6;
Datum:
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...