Hi! Also ich fange gerade mit dem MSP430F449 an. Das mit der Port definition ist mir ein bisschen schleierhaft. Wollte an Port 6.0 ein Rechteck mit Softwareschleife erzeugen. Hat soweit geklappt aber bin mir nicht sicher ob das mit dem direction Register richtig verstanden habe. P6DIR |= 0x01; // Set P6.0 to output direction was bedeutet der senkrechte strich vor dem =, wie wird dieser erzeugt? Müsste ich nicht schreiben P6.0DIR = 0x01; //Set P6.0 to output direction P6.0DIR = 0x00; //Set P6.0 to input direction Ich möchte nur einen Portpin als I/O definieren und nicht den ganzen Port 6!
Wenn Du nur einen Portpin definieren möchtest ist P6DIR |= 0x01; das Richtige ;o) Das | zeichen nennt sich Pipe und geht bei mir mit AltGR+7 Das heisst P6DIR OR 0x01; Wenn Du x OR 0 machst, hat das keine Auswirkungen. Dort wo in x eine 0 stand steht immer noch eine 0, da wo eine 1 stand steht immer noch ne 1. Wenn Du x OR 1 machst, passiert nix wenn das Bit bereits 1 ist, wenn es aber 0 ist, wird es zu 1, denn 0 OR 1 = 1 (Wahrheitstabelle) Der Befehl setzt also unabhängig vom Zustand von P6.1-6.7 den Port 6.0 auf DIR = 1 Gruss
Du sprichst doch damit die Portpin einzeln an. Des Weiteren must du den Portpin auf ausgang schalten, wie du es schon getan hast und nur den Pegel von High auf low schalten. Wenn du den Pin auf input schaltest arbeitet er ja nicht mehr als Ausgang.
Der Sinn von: |= (oder gleich) und: &= (und gleich) ist folgender: Man kann ein Register (z.B P6DIR) an einzelnen Stellen verändern, die anderen Bits bleiben unangetastet. Wenn man am Anfang eines Programms genau weiß, dass z.B nur 4 Bits als Ausgang genutzt werden sollen, reicht folgende Zuweisung P6DIR = 0x0F; // 00001111 wenn du jetzt aber weiter im Programm zusätzlich das Bit 4 auf 1 setzen willst, ohne dass du die anderen einsen wegmachst, dann: P6DIR |= (1<<4); genauer heißt das: 0000 1111 | 0001 0000 = 0001 1111 *Zusammenfassend :* Bit setzen: REGISTERNAME |= (1<<bit); Bit löschen: REGISTERNAME &=~ (1<<bit);
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.