Forum: Mikrocontroller und Digitale Elektronik C8051F020 P1 als Ein- und Ausgang


von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Lesenswert?

Ich habe aus versehen bei einem Print, den ich schon fertigen lies, beim 
Port 1 Ein und Ausgänge deklariert. Ich Dummkopf :(
Ich erinnere mich jedoch schwach, dass es möglich ist, den P0 und 1 als 
ein und Ausgang zu nutzen. Stimmt dass? Wenn Ja wie muss ich das in C 
deklarieren?
Vielen Dank für eine schnelle Hilfe.

von EagleUser (Gast)


Lesenswert?

Ich versteh irgendwie deine Frage nicht ganz...
Wenn du eh nur ein und Ausgänge hast ohne Sonderfunktionen ist das 
mapping doch egal!? Dazu kann ich mich noch an ein nettes Tool von 
Silabs erinnern mit dem man in einem GUI die FUNCTION/PINBELEGUNG 
zuordnen konnte...

von Peter D. (peda)


Lesenswert?

Matthias Leu schrieb:
> Wenn Ja wie muss ich das in C
> deklarieren?

Garnicht, dem Compiler ist das vollkommen wurscht.
Du mußt die Konfigurationsregister entsprechend beschreiben.

Bzw. wenn Du den standard 8051-Mode nimmst, mußt Du garnichts 
umschalten, jeder Pin auf High ist automatisch auch Eingang mit Pullup.


Peter

von AKKS (Gast)


Lesenswert?

Hallo,

was ist ein Print?

AKKS

von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Lesenswert?

habe schon lange nicht mehr mit uPs gearbeitet.
Könnte mir vieleicht jemand bei der Portdeklaration(P1) helfen. Das 
Schema hab ich hochgeladen. Ich verwende den Wizard von Silab, aber mir 
ist nicht klar, ob ich ein push-pull oder Opendrain für die einzelnen 
Bits brauche.

von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Angehängte Dateien:

Lesenswert?

Sorry hier das Schema

von AKKS (Gast)


Lesenswert?

Wenn du mir sagst was ein Print ist, und welche Pins du genau meinst,

sag ich dir vielleicht wie man die Ports konfiguriert.

AKKS

von EagleUser (Gast)


Lesenswert?

Wer keinen Print kennt, wird vermutlich auch nur Sauce zum eigentlichen 
Thema abgeben können...

von tester (Gast)


Lesenswert?

ein größeres Bild wäre fein...

von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Lesenswert?

@tester:Das ist eigentlich kein Bild sondern ein PDF, das heisst du 
kannst unendlich reinzoomen.

@AKKS: Glaube kaum das du mir helfen kannst (Print=PCB)

Brauche die Einstllung für alle Pins von Port1

von R. W. (quakeman)


Lesenswert?

tester schrieb:
> ein größeres Bild wäre fein...

Lad dir das PDF runter da ist es groß genug.

@Matthias Leu
Um einen Pin als Eingang zu benutzen musst du diesen als Open-Drain 
konfigurieren und eine 1 reinschreiben. Anschließend kannst du beim 
Auslesen des Pins den externen Pegel damit abfragen. Dies steht im User 
Manual auf Seite 165 Abschnitt 17.1.3. Du solltest auch, wegen deinem 
externen Pull-Down, den internen Weak-Pullup deaktivieren, was eben 
falls auf dieser Seite steht.

Die drei Ausgangspins P1.2-P1.5 musst du dann als Push-Pull 
konfigurieren für den Schrittmotorbaustein.

Ciao,
     Rainer

von EagleUser (Gast)


Lesenswert?

Also... alles an P1 ist GPIO... (wobei man die LED drehen sollte...)

P0.0 und P0.1 ist Eingang
P0.2 bis P0.5 ist Ausgang
P0.6 und P0.7 setzen wir mal als Ausgang...

lt. AN101

The Crossbar MUST be enabled in order to use
any Port 0, Port 1, or Port 2 port pins as outputs.

The output mode of the port pins (open-drain
or push-pull) must be explicitly set for the out-
put port pins, even those assigned by the Cross-
bar. Exceptions to this are the SDA and SCL
pins on the SMBus and the RX pin on the
UART, which are automatically configured as
open-drain

usw. usw. mit der AN101 sollte alles gesagt sein!

von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Lesenswert?

Danke Rainer deine Tips sind sehr hilfreich
@Eagle User die LED kann ich doch nicht drehen, ohne die Schaltung 
Hardwaremässig zu ändern. Auch komme ich bei deinem restlichen Text 
nicht wikrlich draus. Meinst du mit AN101 AIN1?

von R. W. (quakeman)


Lesenswert?

Matthias Leu schrieb:
> Danke Rainer deine Tips sind sehr hilfreich
> @Eagle User die LED kann ich doch nicht drehen, ohne die Schaltung
> Hardwaremässig zu ändern. Auch komme ich bei deinem restlichen Text
> nicht wikrlich draus. Meinst du mit AN101 AIN1?

AN101 ist die Application Note 101 auf der Silabs Homepage.
http://www.silabs.com/Support%20Documents/TechnicalDocs/an101.pdf

von AKKS (Gast)


Lesenswert?

P0:
P0MDOUT = 0xD0;
weil:
P0.0,P0.2,P0.3 als Ausgang.
P0.1 als Eingang.

P1:
P1MDOUT   = 0x3C;

OpenDrain ist = 0, PushPull = 1

Die LED zu drehen bringt wohl nur was wenn man sie auch gegen VCC 
schaltet.

Mit AN101 meint er eine ApplicationNote von Silabs.

Was das ganze jetzt damit zu tun hat dass die Platinen schon in der 
Produktion ist verstehe ich nicht.

von Matthias L. (Firma: Leica-Geosystems) (radelektroniker)


Lesenswert?

AKKS du hast dich vermutlich verschrieben müsste es nicht P0MDOUT = 0x0D 
sein?

Bist du dir sicher das ich bei SPI push pull brauche?

von AKKS (Gast)


Lesenswert?

Jupp,

P0MDOUT   = 0x0D;

Mein Kollege saß mir im Nacken, wir waren gerade auf dem Sprung zum 
Mitagessen, da hab ich das verwechselt, aber ist doch gut dass du es 
selbst gefunden hast.

Zum PushPull:

Nein, bin mir nicht sicher, dass es definitiv so sein muss. Mit 
in-/externen PullUps sollte es auch gehen. Kann aber nicht schaden und 
wird auf jeden Fall funktionieren. Du musst ja schließlich den Pegel vom 
Master zum Slave geben, außer beim MISO.
Schau dir mal im Silabs Configuration Wizard an was passiert wenn du den 
eingebauten SPI aktivierst, der ja richtiger Weise genau auf deinen Pins 
liegt.

von R. W. (quakeman)


Lesenswert?

Matthias Leu schrieb:
> Bist du dir sicher das ich bei SPI push pull brauche?

Push-Pull bei SPI funktioniert. Eventuell würde auch Open-Drain gehen, 
insofern man dabei den Weak-PullUp aktivieren kann (müsste man im 
Datenblatt nachlesen) oder einen externen PullUp verwendet.

von Ralf (Gast)


Lesenswert?

> Eventuell würde auch Open-Drain gehen, insofern man dabei den Weak-PullUp
> aktivieren kann
Bei einigen meiner DevBoards funktioniert die UART-Tx-Leitung nur dann, 
wenn der Port als Push-Pull geführt ist. Ansonsten gibts nur Müll. Auf 
den Boards ist meistens ein CP2xxx (ebenfalls SiLabs) oder ein kleiner 
F32x drauf, der als USB/UART-Umsetzer und Programmier-/Debuginterface 
fungiert. Ich vermute, dass die Eingänge so hochohmig sind, dass ohne 
Push-Pull-Betrieb der Sendeleitung nix rechteckiges mehr aufm Oszi zu 
sehen sein wird...

Ralf

von R. W. (quakeman)


Lesenswert?

Das stimmt schon.
Ich würde auch eher den Push-Pull Modus benutzen da der Open-Drain Modus 
mit PullUp mit steigender Frequenz immer schlechtere Signalflanken 
produziert. Und es gibt auch keinen Nachteil in dieser Anwendung für den 
Push-Pull Betrieb.

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.