Forum: Mikrocontroller und Digitale Elektronik MC 167 IO Eingang


von Sebastian K. (sebik)


Lesenswert?

Ich hab folgendes Problem, zwar ist es echt simple aber ich kann es
nicht im griff bekommen.Ich hab ein Borad MC 167 CR von Phytec und
programiere in Keil.

Ich kann einfach an die Reihe krigen einen IO Eingang zu konfigurieren
oder zu realisiern.
Ich will das wenn auf dem Port 8.3 ein Signal kommt das sich die LED's
von Port 2 aufleuchten
bzw. ausgehen wenn kein Signal da ist.
Der Port scheint irrgendwie das Signal nicht war zu nehem ich hab schon
mit anderen Ports probiert,
aber das Problem ist das gleiche. Er erkennt nicht das da ein Signal
anligt.
Hab schon mit eine wait funktion versucht damit er bischien Zeit hat
nach der if Anweisung, aber klappt
auch nicht. Die Spannung kommt Direkt von Board also dürfte keine
Probleme mit Masse sein.

Ich hiff ihr könnt mir weiter helfen hab schon vieles probiert aber
momentan stehe ich auf den Schlauch.
Hier ist der C Code:

#include <mc167.h>

sbit DP83 = DP8^3;
sbit P83 = P8^3;

void main()
{
  int x=0;
  DP2=0xffff; // POrt 2 als Ausgabe
  P2=0x0000;  // Led´s leuchten
  DP83=0;    // Port 8.3 als Eingabe (Eingang)
  do{
      x=P83; // x ist der wert von P83
      if(x == 0)
      {
      P2=0xffff;
      }else
         {
         P2=0x0000;
         }
  }while(1)
}

Danke für jegliche Hilfe!

von johnny.m (Gast)


Lesenswert?

Was für ein Signal ist das an P8.3?

von Sebastian K. (sebik)


Lesenswert?

Ich nim die 5V von Board (VCC) und hab ein Schalter dazwischen.
Die 5V kommen auch an, am den Pin 8.3 aber passiert nix.

von Mark de Jong (Gast)


Lesenswert?

Hallo Sebastian,

Hast auch einen pull-down an denn pin, oder nur denn 5volt über denn
schalter?

Wenn nicht hast du immer einen high level am pin!

Grüße Mark,

von Sebastian K. (sebik)


Lesenswert?

Ich hab nix auf dem Pin außer dem Anschluss von Schalter.
Aber wenn ich aich dem die Leitung aus dem Pin wegziehe passier auch
nix.

von Sebastian K. (sebik)


Lesenswert?

Es gibt ja auch das ODP83 Register aber ich weiss net was da genau
eingestellt wird. Aber steht nür über dem Output da.

von Joe (Gast)


Lesenswert?

Ist doch nen 8x51 derivat, wenn der als Eingang funktionieren soll dann
setze den Eingang nicht auf 0 und verdrahte den Schalter nach Masse,
dann läufts.

von Sebastian K. (sebik)


Lesenswert?

Also soll ich nicht das VCC nehem sondern von den PIN auf dem Schalter
und von den Schalter auf Masse wenn ich des richtig verstehe??

von Joe (Gast)


Lesenswert?

Ja, und diese Zeile ändern:

  DP83=1;    // Port 8.3 als Eingabe (Eingang)

von johnny.m (Gast)


Lesenswert?

Afaik ist DP das Port Direction Register. Wenn man eine '1'
hineinschreibt, ist der entsprechende Pin ein Ausgang. (Sorry, ist ne
Weile her, dass ich mit nem C167 gearbeitet hab...)

von Mark de Jong (Gast)


Lesenswert?

@Joe,

Es geht hier um denn SAB C167, das ist kein 8x51 derivat.

und mit DP83 = 1 => wird der pin als ausgamg geschaltet.

Grüße Mark,

von rainer (Gast)


Lesenswert?

Hallo Sebastian,

wie schaltest du am dem port 8.3. über einen pull-up-widerstand? so
würde ich das machen, das der schalter dann auf masse durchverbindet.

der port sollte so inizialisiert werden: variablennamen sind natürlich
beliebig.

sbit Ex_In =  P8^3;
sbit Ex_In_Dir = DP8^3;
sbit Ex_In_Open_Drain = ODP8^3;

und dann
Ex_In_Dir = 0; //pin is an input
Ex_In_Open_Drain = 1 //driver in open drain mode

von Joe (Gast)


Lesenswert?

sorry folks, habs begriffen.

von rainer (Gast)


Lesenswert?

Kannst du was mit open drain mode anfangen?

       Vcc
        |
        |
       | | Rp - pull-up-Widerstand. z.b. 5kOhm.
       | |
        |
        |
Pin-----|
        |
        \ Schalter
        |
        -
        Ground

von Sebastian K. (sebik)


Lesenswert?

Ja klar ich kenn open drain. Alos wenn ich es so schalte dann
funktioniert es ?? Jetzt kann ich net prüfen aber Morgen früh werde ich
es wissen. HAb gedach mann kann direkt auf dem Pin gehen, aber da hab
ich mich wohl geirrt.
Danke Leutz

von Marks Murks (Gast)


Lesenswert?

Achtung:

Der C167 Portausgang kann nicht direkt eine LED ansteuern, da der
Ausgangsstrom nicht ausreicht!

von Sebastian K. (sebik)


Lesenswert?

Danke allen es hat geklappt es läuft alles !!

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.