C8051F020 P1 als Ein- und Ausgang

OP (Firma: Leica-Geosystems) #1873757
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
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...
OP (Firma: Leica-Geosystems) #1873932
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.
#1874028
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
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!
Gast #1874114
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
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
> 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
#1874579
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.