Forum: Mikrocontroller und Digitale Elektronik Ports initialisieren


von Paul (Gast)


Lesenswert?

Wenn die Aufgabenstellung wie folgt lautet, ist dann meine Lösung siehe 
unten richtig?

Aufgabe:
erstellen sie eine main() Funktion welche folgende Spezialfunktionen 
(bereitstellet?)

o WDT deaktivieren

o Port1: P1.0, P1.3, P1.4 = Ausgang, alle anderen Eingang

§ P1.1, P1.2 = interruptfähig

o Port 2: Alle als binäre Eingänge


o Port6: Alle als Eingang mit Spezialfunktion (hier ADC-Eingangssignal) 
dieser ist als binärer Ausgang zu
initiieren





void main (void)
{
WDTCTL = WDTPW + WDTHOLD; //WDT deaktivieren

//PORT1

P1OUT = 0x00;
P1DIR = 0x91; //(=00011001b) macht Pins 0,3,4
P1IE = 0x06; //(=00000110) macht Pins 1,2 interruptfähig

//PORT2

P2SEL = 0x00; // Alle Port_2.Pins als Bin-IO
P2DIR = 0x00; // Alle Port.Pins als Input schalten


//PORT6

P6SEL = 0xFF; // Alle Port_6.Pins als Bin-IO
P6DIR = 0x01; // Pin6.0 als binärer Ausgang alle anderen ADC

_EINT();

While(1)
{
_NOP();
}
}


vielen Dank,
Paul

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Kann man so nicht entscheiden, weil weder µC noch Compiler bekannt sind.

von Paul (Gast)


Lesenswert?

uC ist der MSP430f44x

von Karl H. (kbuchegg)


Lesenswert?

> P1DIR = 0x91; //(=00011001b) macht Pins 0,3,4

Wie kommst du auf 0x91?

Hat dein System keine fertigen Konstanten für die Pinnummern?
Wenn ja, dann schriebs doch so (siehe unten). Wenn nein, dann definiere 
dirc welche und schreibs auch so
1
#define PIN_0   0
2
#define PIN_1   1
3
#define PIN_2   2
4
#define PIN_3   3
5
#define PIN_4   4
6
#define PIN_5   5
7
#define PIN_6   6
8
#define PIN_7   7
9
10
11
...
12
13
  P1DIR = ( 1 << PIN_0 ) | ( 1 << PIN_3 ) | ( 1 << PIN_4 );

da kann dann auch ein Blinder greifen, welche Bits auf 1 gesetzt werden 
und muss nicht mühselig Bits zählen. Ganz abgesehen davon, dass dann 
auch der Kommentar überflüssig wird, was ja grundsätzlich eine gute 
Sache ist. Ein Kommentar, den keiner braucht, weil alles Wissenswerte im 
Code enthalten ist und den man deswegen weglässt, ist ein guter 
Kommentar.

(Die anderen bitmässigen Zuweisungen natürlich dementsprechend auch 
ersetzen)

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.