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.
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...
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
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.
Wenn du mir sagst was ein Print ist, und welche Pins du genau meinst, sag ich dir vielleicht wie man die Ports konfiguriert. AKKS
Wer keinen Print kennt, wird vermutlich auch nur Sauce zum eigentlichen Thema abgeben können...
@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
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
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!
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?
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
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.
AKKS du hast dich vermutlich verschrieben müsste es nicht P0MDOUT = 0x0D sein? Bist du dir sicher das ich bei SPI push pull brauche?
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.
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.