www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32: PortPin als Input


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

möchte gern am STM32F103 einen Pin als Ausgang (Floating) konfigurieren:

PE15:
RCC->APB2ENR |= (1<<6);               // enable peripheral clock for GPIOC
GPIOE->CRH &= ~0xF0000000;                /* clear port PE15 */
GPIOE->CRH |= 0x40000000;                /* PE15 input floating */
GPIOE->CRH |=  0x00000000;                /* input mode */

Wenn nichts am Pin hängt, ist dieser low; was ja auch stimmt.

Wenn ich einen Pullup 10k sowie einen externen Open-Drain Output 
anschließe (vom AD7843 PIRQ) ist die Line auch dann high, wenn der 
Open-Drain Output versucht, dass Potential auf low zu ziehen...

Der Open-Drain Output vom AD7843 schafft es allerdings problemlos die 
Line auf low zu ziehen (mit dem Pullup 10k), wenn der STM32 nicht 
angeschlossen ist...

Hab ich software-technisch was vergessen zu konfigurieren, oder könnte 
es ein Hardware-Problem (Port-Pin) sein?

Den Pin vom STM32 selbst kann ich als Output konfigurieren, auf high und 
auf low ziehen; Wenn ich ihn als Input mit Pullup konfiguriere, dann ist 
dieser ohne Last auch auf high (mit Last kann ich ihn ebenfalls nicht 
auf low ziehen mit dem AD7843)

Gruß
Bernd

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Etwas verwirrend. Du schreibst von Output und programmierst laut 
Kommentar einen Input.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>möchte gern am STM32F103 einen Pin als Ausgang (Floating) konfigurieren:

stimmt, hier muss Input Floating stehen, nicht Output!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du einen Input ohne internem Pullup extern nicht runterziehen 
kannst, dann hat das wenig mit dem STM32 zu tun und viel mit dem 
externen Signal.

Ich habe allerdings deine Bits nicht kontrolliert, also ob die Werte 
auch dem entsprechen, was im Kommentar steht.

> auf low ziehen; Wenn ich ihn als Input mit Pullup konfiguriere, dann ist
> dieser ohne Last auch auf high (mit Last kann ich ihn ebenfalls nicht
> auf low ziehen mit dem AD7843)

Weitere Verwirrung: Was ist eine Last an einem Input?

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab an einem Pin vom STM32 (PE15) den PIRQ Interrupt vom AD7843 
hängen. PE15 stellt einen floating Input dar (STM32) und PIRQ ist ein 
Open-Drain Output. Zusätzlich hab ich einen 10k Pullup installiert, 
Open-Drain Ausgang.

Wenn ich jetzt versuche, die Line auf low zu ziehen (mit dem STM32), 
misslingt dieses Vorhaben. Über einen Jumper kann ich den STM32 vom 
AD7843 trennen; ist dieser Jumper offen, zieht der AD7843 die Line 
entsprechend auf low (sprich der AD7843 funktioniert auf jeden Fall).

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd Schuster schrieb:

> Wenn ich jetzt versuche, die Line auf low zu ziehen (mit dem STM32),

Du willst also einen auf Input konfigurierten Pin mit dem STM32 selbst 
runter ziehen? Da wird sich natürlich nichts rühren, deswegen ist es ja 
ein Input.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein der PIRQ generiert einen Interrupt, der die Line auf Low zieht;

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiere ihn als Output auf "low", ohne PIRQ dran. Wenn's dann 
blitzt und donnert, dann hast du einen Kurzschluss am Pin ;-).

Im Ernst: Wenn du den Pin mit seinem 10K Pullup um einen 10K Pulldown 
anreicherst, und keine gemessene VCC/2 rauskommen, dann solltest du die 
Verschaltung und ggf. die Leiterbahnen mal unter die Lupe nehmen.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
haben die Pins vom STM32 intern nur einen 10k Pullup/Pulldown 
Widerstand? Kann diese Angabe grad im Datenblatt nicht finden.


Habs grad ausprobiert, mit einem externen Pullup von 10k landet die 
Spannung ungefähr bei 2.5V (nominal 3.3V).

Gruß
Bernd

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ein Input mit Pullup ohne weitere bekannte Beschaltung kein Vcc 
messen lässt, dann solltest du mal danach suchen, was ausser dem Pin 
noch an der Leitung hängt. Ob beabsichtigt oder auch nicht. Und wenn da 
wirklich nichts ist, dann den Controller tauschen.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Wenn ein Input mit Pullup ohne weitere bekannte Beschaltung kein Vcc
>
> messen lässt, dann solltest du mal danach suchen, was ausser dem Pin
>
> noch an der Leitung hängt. Ob beabsichtigt oder auch nicht. Und wenn da
>
> wirklich nichts ist, dann den Controller tauschen.

Nein ich hab extern einen Pullup 10k hängen und den internen Pulldown 
vom STM32 aktiviert; dachte du meintest, dass dieser interne Pullup/down 
jeweils 10k misst.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.