C8051F020 P1 als Ein- und Ausgang

OP (Firma: Leica-Geosystems) #1873757
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.
Gast #1873798
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...
#1874028
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
Gast #1874045
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!
#1874092
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
Gast #1874114
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.
Gast #1874473
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.
Gast #1874498
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren