Forum: Mikrocontroller und Digitale Elektronik Input Thresholds beim Raspberry Pi Pico


von Martin O. (ossi-2)


Lesenswert?

Kennt jemand die Schaltschwellen (Input Threshold) der GPIO Eingänge 
beim Raspberry Pi Pico (CPU RP2040 oder RP2350)? Wo findet man sie? Die 
pauschale Angabe VDD/2 für CMOS Logik reicht mir nicht.

von Obelix X. (obelix)


Lesenswert?

Google -> RP2040 oder RP2350 Datasheet

von Norbert (der_norbert)


Lesenswert?

Martin O. schrieb:
> Die
> pauschale Angabe VDD/2 für CMOS Logik reicht mir nicht.

Da mag durchaus sein. Wenn du sie jedoch mal misst, wirst du feststellen 
dass es eben genau so ist.

Wenn man den per default eingeschalteten Schmitt-Trigger nutzt:
* Unterhalb Vdd/2 - 100mV Hysterese ──▶ LOW
* Oberhalb Vdd/2 + 100mV Hysterese ──▶ HIGH

Wenn nicht, dann ist es extrem empfindlich bei ziemlich genau Vdd/2.

von Günter N. (turtle64)


Lesenswert?

Beachte das Erratum E9:

https://github.com/raspberrypi/pico-feedback/issues/401

Wenn ein Input einmal auf High gezogen wurde, kriegt man ihn nur wieder 
auf Low, wenn man ihn mit einem ziemlich niedrigen Widerstand, z.B. 1 
kOhm, nach Masse zieht. Der interne Pulldown reicht dafür nicht aus.

Das betrifft das Hardware Stepping A2 (Aufschrift des Prozessors 
"RP2350xxA2". Dieser Fehler ist mit dem Stepping A3 und A4 behoben.

von Norbert (der_norbert)


Lesenswert?

Günter N. schrieb:
> 1 kOhm, nach Masse zieht.

Der Hersteller selbst meint 8.2kΩ.
oder für einen Zyklus IE aus und einschalten.
oder für einen Zyklus auf Output und wieder auf Input schalten.

von Rainer W. (rawi)


Lesenswert?

Martin O. schrieb:
> Wo findet man sie? Die
> pauschale Angabe VDD/2 für CMOS Logik reicht mir nicht.

An einer (digitalen) GPIO Eingangsstufe ohne Schmitt-Trigger (bzw. 
Komparator) haben irgendwelche halbgaren Zwischenpegel nichts zu suchen.

Wenn dir die genaue Schaltschwellen so wichtig erscheint, solltest du 
dein Schaltungsdesign noch einmal überdenken.

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Rainer W. schrieb:
> An einer (digitalen) GPIO Eingangsstufe ohne Schmitt-Trigger (bzw.
> Komparator) haben irgendwelche halbgaren Zwischenpegel nichts zu suchen.

Zeig doch mal einen aktuellen µC, der keine Schmitttrigger bei digitalen 
Eingängen hat. Es muß ja nicht explizit im Datenblatt stehen, auch wenn 
sich dadurch einige Personen wieder aufpusten können.

Günter N. schrieb:
> Das betrifft das Hardware Stepping A2 (Aufschrift des Prozessors
> "RP2350xxA2". Dieser Fehler ist mit dem Stepping A3 und A4 behoben.

... und beim RP2040 nicht vorhanden.

von Rainer W. (rawi)


Lesenswert?

Mi N. schrieb:
> Zeig doch mal einen aktuellen µC, der keine Schmitttrigger bei digitalen
> Eingängen hat.

Für mich sind alle µCs aktuell, die aktuell gefertigt werden.

Bei denen, die Schmitt-Trigger Eingänge besitzen, sind die 
Schaltschwellen entweder im Datenblatt spezifiziert oder die 
Schwellwerte stellen keine zugesicherte Eigenschaft dar und dienen nur 
der Unterdrückung von Störungen auf langsamen Signalflanken. Oft ist 
dann die Hysterese angegeben.

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Rainer W. schrieb:
> Für mich sind alle µCs aktuell, die aktuell gefertigt werden.

Gut, Du kannst keinen benennen. Dann hattest Du nur heiße Luft 
abgelassen.

von Soul E. (soul_eye)


Lesenswert?

Martin O. schrieb:
> Kennt jemand die Schaltschwellen (Input Threshold) der GPIO Eingänge
> beim Raspberry Pi Pico (CPU RP2040 oder RP2350)? Wo findet man sie? Die
> pauschale Angabe VDD/2 für CMOS Logik reicht mir nicht.

Genauer wird es aber nicht möglich sein. Die Schaltschwellen hängen ab 
von Betriebsspannung, Prozesstreuung, Temperatur und von dem 
Schaltzustand der auf dem Chip benachbarten Transistoren.

Der Hersteller spezifiziert Dir im Datenblatt, wie low High und wie high 
Low maximal sein darf, und außerhalb dieser Grenzen kann alles 
passieren.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rainer W. schrieb:
> Wenn dir die genaue Schaltschwellen so wichtig erscheint, solltest du
> dein Schaltungsdesign noch einmal überdenken.

Na, na....
So ein Schmitt Trigger hat schon seine Berechtigung.
Und man kann die  Schaltschwellen durchaus nutzen, wie sie sind.

Wobei es allerdings Überraschungen geben kann.

Beispiel:
ATMega328P Schalschwelle ca. VCC/2, also 2,5V bei VCC=5V mit recht 
großer
Hysterese.

Beim übertragen des Programms auf einem Leonardo, also mit ATMega32U4, 
kam dann die Überraschung/Fehlfunktion. An VCC=5V liegt die 
Schaltschwelle bei ca 1,7V. Mit sehr viel kleinerer Hysterese.

Es lohnt sich die Datenblätter aufmerksam zu lesen.

Selbst wenn man dem Datenblatt nicht vertrauen möchte, warum auch immer, 
kann man das recht einfach ausmessen.

von Rainer W. (rawi)


Lesenswert?

Arduino F. schrieb:
> Na, na....
> So ein Schmitt Trigger hat schon seine Berechtigung.
> Und man kann die  Schaltschwellen durchaus nutzen, wie sie sind.

Nur wenn sie im Datenblatt nicht spezifiziert sind, können sie sich 
schon mit der nächsten Maskenversion ändern. Es steht einem natürlich 
immer frei, die Schaltschwellen über den Temperatur- und 
Versorgungsspannungsbereich auszumessen.

Arduino F. schrieb:
> Beispiel:
> ATMega328P Schalschwelle ca. VCC/2, also 2,5V bei VCC=5V mit recht
> großer Hysterese.

Verwechselt du da etwas mit garantiertem Schwellwertbereich (0.3 ... 0.7 
VCC) für einen GPIO? Das sind nicht die Schaltschwellen des 
Schmitt-Triggers.

Für die Hysterese beim ATmega328P ist nur der Minimalwert mit 0.05*VCC 
angegeben, keine Aussage über den Maximalwert. Das meinte ich mit 
Rauschunterdrückung, in digitalen Anwendungen meist eher 
Klingelunterdrückung.

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Rainer W. schrieb:
> Arduino F. schrieb:
>> Beispiel:
>> ATMega328P Schalschwelle ca. VCC/2, also 2,5V bei VCC=5V mit recht
>> großer Hysterese.
>
> Verwechselt du da etwas mit garantiertem Schwellwertbereich (0.3 ... 0.7
> VCC) für einen GPIO?

Nein, das verwechselt er nicht!

> Für die Hysterese beim ATmega328P ist nur der Minimalwert mit 0.05*VCC
> angegeben, keine Aussage über den Maximalwert. Das meinte ich mit
> Rauschunterdrückung, in digitalen Anwendungen meist eher
> Klingelunterdrückung.

Du hast wohl nie bei einem ATmega328 die Hysterese der Eingänge benutzt 
und sonnst Dich daher in Schwarzmalerei.

Im Datenblatt stehen recht genaue Werte unter "typische Parameter" und 
bei hunderten von diesen Controllern über > 20 Jahre konnte ich mich 
darauf verlassen.

Martin O. schrieb:
> Kennt jemand die Schaltschwellen (Input Threshold) der GPIO Eingänge
> beim Raspberry Pi Pico (CPU RP2040 oder RP2350)?

Du kannst einen Oszillator aufbauen wie mit einem 74xy14. Ein C gegen 
GND und an den Eingang eines GPIO-Pins als Eingang und von einem 
GPIO-Ausgang das invertierte Eingangssignal über einen Widerstand zum 
Eingang an den Kondensator zurück.
Je nach Deiner Anwendung kannst Du Temperatur und 
Versorgungsspannungseinflüsse testen und entscheiden, ob es Dir 
hinreichend stabil ist.
Das hatte ich bei diversen Controllern getestet, wobei die mittlere 
Schaltschwelle immer leicht unter VCC/2 lag. Gleiche Schaltschwelle hat 
auch z.B. ein 74AUP1G14 und selbst ein 74AUP1G04 hat eine kleine 
Hysterese.
So sieht die Praxis aus - ohne die übliche Schwafelei.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rainer W. schrieb:
> Verwechselt du da etwas mit garantiertem Schwellwertbereich

Nein, ich spreche über Messungen, die ich gemacht habe, nach dem das 
Problem ans Tageslicht kam.

Aufbau:
Funktionsgenerator an einen Pin, den als Eingang konfiguriert und dessen 
Digitalwert an einem anderen Pin wieder ausgegeben.
An beide Pins je einen Oszikanal angeschlossen.

Die Unterschiede zwischen gleichen µC sind minimal.
Zwischen 328p und 32U4 beträchtlich
Wie auch laut Datenblatt erwartbar.

Ein 16U2 verhält sich übrigens wie ein 32U4 in der Sache.

von Martin O. (ossi-2)


Lesenswert?

Vielen Dank für die zahlreichen Hinweise. Ich weiss jetzt genau genug 
wie es um die Schaltschwelle bestellt ist. Erratum 9 war mir noch gar 
nicht aufgefallen weil ich den Input niederohmig genug ansteuere. Ich 
nehme jetzt den RP2040 (Pico 1) statt des RP2350 (Pico 2), da habe ich 
das Problem nicht. Vielen Dank nochmal speziell für diesen Hinweis.

von Mi N. (msx)


Lesenswert?

Martin O. schrieb:
> Ich
> nehme jetzt den RP2040 (Pico 1) statt des RP2350 (Pico 2), da habe ich
> das Problem nicht.

Das ist auch für mich noch ein Grund, auf die neuere Version des RP2350 
zu warten. Die Diskussionen um den Schaltrgeler beim RP2350 sind auch 
keine 'Einladung'.
Nebenbei: Für den RP2040 gibt es auch sehr kostengünstige Boards mit 
LDO-Regler, 16 MB Flash und Anschlüssen für alle GPIOs.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Mi N. schrieb:
> Nebenbei: Für den RP2040 gibt es auch sehr kostengünstige Boards mit
> LDO-Regler, 16 MB Flash und Anschlüssen für alle GPIOs.

Aber dabei bedenken: Eine einzel-LiPo Versorgung kann damit evtl. gerade 
noch funktionieren, muss aber nicht. Bei USB Versorgung natürlich kein 
Thema.

Edit: Hab' welche mit ME6215C33M5G
Dropout voltage: 0.16V @ 100mA / 0.32V @ 200mA

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Norbert schrieb:
> Edit: Hab' welche mit ME6215C33M5G
> Dropout voltage: 0.16V @ 100mA / 0.32V @ 200mA

Wenn es hart auf hart kommen sollte, habe ich zur Anpassung 
ME6216A27M3G, die dann auch bei Batteriebetrieb die Versorgungsspannung 
stabil halten.
Dropout voltage: 0.11V @ 100mA / 0.24V @ 200mA
;-)

von Norbert (der_norbert)


Lesenswert?

Mi N. schrieb:
> Wenn es hart auf hart kommen sollte, habe ich zur Anpassung
> ME6216A27M3G

Bei 2.7V ist allerdings kein ADC-Gebrauch gemäß Datenblatt/Spezifikation 
möglich.
Aber rein Digital, Y¬

von Mi N. (msx)


Lesenswert?

Norbert schrieb:
> Bei 2.7V ist allerdings kein ADC-Gebrauch gemäß Datenblatt/Spezifikation
> möglich

In meinem Datenblatt ist ADC_AVDD mit min. 1,62 V angegeben.
Wenn es richtig gut werden soll, ist sowieso ein STM32Gxyz angesagt.

von Norbert (der_norbert)


Lesenswert?

Mi N. schrieb:
> In meinem Datenblatt ist ADC_AVDD mit min. 1,62 V angegeben.

Und nur wenige Zeilen darunter:
ADC performance will be compromised at voltages below 2.97V

von Martin O. (ossi-2)


Lesenswert?

Was besagt denn die Diskussion um den RP2350 Schaltregler? Wo gibt es 
preiswerte Boards mit allen GPIOs?

von Norbert (der_norbert)


Lesenswert?

Martin O. schrieb:
> Was besagt denn die Diskussion um den RP2350 Schaltregler? Wo gibt es
> preiswerte Boards mit allen GPIOs?

Da geht es eher um den direkt im RP2350 befindlichen (zweiten)Regler für 
die Kernspannung (WIMRE). Bei fertigen Boards kein Problem. Bei selbst 
gebauten lohnt es sich die Designvorgaben zu berücksichtigen.

Der ›normale‹ Schaltregler stellt soweit mir bekannt ist auch kein 
Problem dar. Man kann ihn sogar in zwei verschiedenen Modi (Energie 
sparend, PWM kontinuierlich) betreiben.

Edit:Tippfeuler

AD1: Regler im Chip, extern L2,C19,C20

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

>Wo gibt es preiswerte Boards mit allen GPIOs?

Pimoroni hat zumindest Boards mit mehr Pins:
https://shop.pimoroni.com/products/pimoroni-pico-lipo-2-xl-w?variant=55447911006587

von Norbert (der_norbert)


Lesenswert?

Um mal in Europa zu bleiben,
Olimex bietet sogar die größeren RP2350B mit 48 GPIOs an.
Für einen richtig guten Preis.

von Mi N. (msx)


Lesenswert?

Norbert schrieb:
> Mi N. schrieb:
>> In meinem Datenblatt ist ADC_AVDD mit min. 1,62 V angegeben.
>
> Und nur wenige Zeilen darunter:
> ADC performance will be compromised at voltages below 2.97V

Nicht Genaues weiß man nicht. Sinkt dann die eh schon geringe ENOB von 
8,7 auf 8,5?

Martin O. schrieb:
> Wo gibt es preiswerte Boards mit allen GPIOs?

Eine kleine Auswahl diverser Ausführungen: 
https://de.aliexpress.com/item/1005003371056277.html

Norbert schrieb:
> Der ›normale‹ Schaltregler stellt soweit mir bekannt ist auch kein
> Problem dar.

Beim RP2040 mußte ich teilweise LDOs nachrüsten, weil der Regler gestört 
hat. Aber gut, das alles wegen analoger Eingangsstufen und etwas 
speziell.

Da wir hier eh schon abgeschweift sind: Hast Du mal auf minimale 
standby-Stromaufnahme geachtet und einen Realen Zahlenwert dazu? Ich 
denke, ein LDO wird da auch besser abschneiden als der vorhandene 
Schaltregler.

von Norbert (der_norbert)


Lesenswert?

Mi N. schrieb:
> Da wir hier eh schon abgeschweift sind: Hast Du mal auf minimale
> standby-Stromaufnahme geachtet und einen Realen Zahlenwert dazu?

Nee, habe nur gelegentlich überprüft ob sich die mittlere Stromaufnahme 
ungefähr im beworbenen Bereich bewegt. (›Raspberry Pi Pico Datasheet‹, 
das für das Board, nicht den Controller)
Man muss aber gerechterweise sagen, das Board ist nicht auf Sparsamkeit 
ausgelegt.
Nix tun: ~10mA
Viel tun: Eine Potenz höher
extreme Taktquälerei: ⮭⮭⮭

> Ich denke, ein LDO wird da auch besser abschneiden als
> der vorhandene Schaltregler.

Weiß nicht, wenn man den Linearregler knapp über Vdrop betreibt, 
vielleicht.
Aber etwas höher und die Effizienz des Schaltreglers wird wohl gewinnen.

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.