Forum: Mikrocontroller und Digitale Elektronik keine Hysterese, ext. Interrupt feuert ständig, Bluepill


von Epi K. (epi_k)


Lesenswert?

Hallo,

mit meinem Bluepill-board mache ich folgendes:

im Setup (Arduino):
1
  pinMode(PB8, INPUT);
2
  attachInterrupt(digitalPinToInterrupt(PAS), isrPas, FALLING);

Interrupt Funktion:
1
void isrPas(){
2
  pasCount++;
3
}

High Level ist doch 0.7 * VDD (2.31v) und Low Level 0.3 * VDD (0.99V).
Meine Interrupt Funktion wird jedoch bei einer anliegenden Spannung von 
ca. 1.3 bis 1.7V ständig ausgelöst... wieso das? Verstehe ich gerade 
nicht...

Gibt es beim Interrupt / Falling Edge keine Hysterese ?
Oder habe ich ein China-Chip erwischt?

Vielen Dank für jeden Hinweis, weil gerade komme ich überhaupt nicht 
weiter, bzw. weiss nicht wo noch suchen...

von Falk B. (falk)


Lesenswert?

Epi K. schrieb:
> High Level ist doch 0.7 * VDD (2.31v) und Low Level 0.3 * VDD (0.99V).
> Meine Interrupt Funktion wird jedoch bei einer anliegenden Spannung von
> ca. 1.3 bis 1.7V ständig ausgelöst... wieso das? Verstehe ich gerade
> nicht...

Warum legt du nicht erst mal zum Testen saubere Logikpegel an?

von Klaus S. (kseege)


Lesenswert?

Epi K. schrieb:
> High Level ist doch 0.7 * VDD (2.31v) und Low Level 0.3 * VDD (0.99V).
> Meine Interrupt Funktion wird jedoch bei einer anliegenden Spannung von
> ca. 1.3 bis 1.7V ständig ausgelöst... wieso das? Verstehe ich gerade
> nicht...

Low ist alles unterhalb der Schwelle von 0.99V und High alles über der 
Schwelle von 2.31V (in diesem Fall). Der Bereich dazwischen ist der 
analoge Bereich und deswegen für Digitalsignale verboten. Da kann eben 
alles Mögliche passieren. Genau genommen gibt es auch noch eine maximale 
Anstiegs- bzw. Abfallzeit zwischen den Schwellen, die nicht 
überschritten werden darf. Auch digitale Elektronik ist nur digital, 
solange sie innerhalb der Spezifikation betrieben wird. Außerhalb wirds 
analog.

Gruß Klaus (der soundsovielte)

von Sebastian W. (wangnick)


Lesenswert?

Epi K. schrieb:
> Meine Interrupt Funktion wird jedoch bei einer anliegenden Spannung von
> ca. 1.3 bis 1.7V ständig ausgelöst... wieso das?

Du meinst, es liegt eine bestimmte feste unveränderliche Spannung ohne 
jedes Rauschen oder Prellen an? Und dennoch werden andauernd Interupts 
ausgelöst?

Das ist seltsam. Die STM32-GPIO-Digitaleingänge haben Schmitt-Trigger 
und sollten also eine Hysterese haben.

LG, Sebastian

von Benedikt S. (benedikt_s)


Lesenswert?

Nimm doch einfach ein timer mit input feature als Eingang, dem kannst du 
einen digitalen Filter konfigurieren wenn dus nicht entprellen willst 
oder kannst.
Der timer muss dafür nicht mal laufen der capture count intressiert dich 
ja nicht.

von Peter D. (peda)


Lesenswert?

Epi K. schrieb:
> High Level ist doch 0.7 * VDD (2.31v) und Low Level 0.3 * VDD (0.99V).
> Meine Interrupt Funktion wird jedoch bei einer anliegenden Spannung von
> ca. 1.3 bis 1.7V ständig ausgelöst... wieso das?

Deshalb nennt man den Bereich zwischen high und low ja den verbotenen 
Bereich. Wie sich der Chip darin verhält, ist weder spezifiziert noch 
garantiert.
Willst Du analoge Spannungen einlesen, mußt Du einen ADC-Eingang nehmen.

Epi K. schrieb:
> Gibt es beim Interrupt / Falling Edge keine Hysterese ?

Schau ins Datenblatt des konkreten Chips. Manchmal muß man den Eingang 
erst so konfigurieren. Die Bus-Keeper Funktion könnte hilfreich sein, 
sie versucht einen offenen Eingang auf einen gültigen Logikpegel zu 
ziehen.

von Εrnst B. (ernst)


Lesenswert?

Peter D. schrieb:
> Schau ins Datenblatt des konkreten Chips.

könnte schwierig sein, beim

Epi K. schrieb:
> Bluepill-board

kriegt man m.W. sowieso keine mehr mit originalem STM32, also:

Epi K. schrieb:
> Oder habe ich ein China-Chip erwischt?

ziemlich sicher, ja. Verhält sich normalerweise hinreichend kompatibel, 
aber im Grenzbereich, wie bei dir im "verbotenen Bereich" zwischen 0.3 
und 0.7*VDD, würde ich mich nicht darauf verlassen.

von Epi K. (epi_k)


Lesenswert?

Sebastian W. schrieb:
> Du meinst, es liegt eine bestimmte feste unveränderliche Spannung ohne
> jedes Rauschen oder Prellen an? Und dennoch werden andauernd Interupts
> ausgelöst?

Genau, ich habe das Signal mit dem Oszilloskop angeschaut, es ist sauber 
und stabil ...

Ich werde wohl als nächstes ein anderes Board ausprobieren müssen...

bin auch der Meinung dass eine Hysterese / Schmitt Trigger integriert 
sein müsste...


>Epi K. schrieb:
>Oder habe ich ein China-Chip erwischt

Εrnst B. schrieb:
> ziemlich sicher, ja

und wenn schon, Hysterese / Schmitt-Trigger muss doch da auch integriert 
sein, das sind doch Basics, und andere Sachen (kompliziertere) wie CAN 
Bus funktionieren tiptop...

alles zwischen 1V und 2.1V sollte doch gar nicht als Zustand ausgewertet 
werden?


Benedikt S. schrieb:
> Nimm doch einfach ein timer mit input feature als Eingang, dem kannst du
> einen digitalen Filter konfigurieren wenn dus nicht entprellen willst
> oder kannst.
> Der timer muss dafür nicht mal laufen der capture count intressiert dich
> ja nicht.

Ich habe ein Potentiometer am Interrupt Eingang

: Bearbeitet durch User
Beitrag #7365495 wurde vom Autor gelöscht.
Beitrag #7365497 wurde vom Autor gelöscht.
von Sebastian W. (wangnick)


Lesenswert?

Epi K. schrieb:
> alles zwischen 1V und 2.1V sollte doch gar nicht als Zustand ausgewertet
> werden?

Das ist ein Missverständnis. Alles zwischen VIL und VIH wird sehr wohl 
als Zustand ausgewertet (es gibt keinen dritten Zustand "kein Zustand"), 
aber es ist nicht garantiert als welcher.

Spannungen zwischen VIL und VIH sind bei Digitaleingängen  nur kurz 
während Schaltflanken vorgesehen, und der Schmitt-Trigger ist für eine 
gewisse Flankensteilheit ausgelegt.

Was versuchst du denn zu erreichen?

In meinem STM32F103C8T6-Datenblatt stehen übrigens andere Werte für VIL 
(0.35VDD) und VIH (0.65VDD) als von dir genannt.

Dort ist auch die Hysterese des Schmitt-Triggers als 200mV (TT-Pin) bzw. 
0.05VDD (FT-Pin) angegeben.

LG, Sebastian

von Epi K. (epi_k)


Lesenswert?

Sebastian W. schrieb:
> Das ist ein Missverständnis. Alles zwischen VIL und VIH wird sehr wohl
> als Zustand ausgewertet (es gibt keinen dritten Zustand "kein Zustand"),
> aber es ist nicht garantiert als welcher.

ich setze den Interrupt auf fallende Flanke, wie ist eine fallende 
Flanke definiert?
Wenn doch ein Zustandswechsel von VIH zu VIL stattfindet, oder nicht?
Somit darf kein Interrupt ausgelöst werden, wenn der Spannungspegel 
zwischen VIH und VIL liegt - oder nicht?

Sebastian W. schrieb:
> Was versuchst du denn zu erreichen?

Ich habe ein analoges Hallsignal (Fahrrad, Sensor am Tretlager) und ich 
versuche die Anzahl Flanken auszuwerten, ist quasi ein Dreiecksignal im 
Frequenzbereich bis ca. 100Hz.

Sebastian W. schrieb:
> In meinem STM32F103C8T6-Datenblatt stehen übrigens andere Werte für VIL
> (0.35VDD) und VIH (0.65VDD) als von dir genannt.

Ja, +/- das gleiche, ich habe die Werte von GWD genommen.

Sebastian W. schrieb:
> Dort ist auch die Hysterese des Schmitt-Triggers als 200mV (TT-Pin) bzw.
> 0.05VDD (FT-Pin) angegeben.

Wie ist das zu verstehen? Nur 0.2V? Bei welchem Pegel setzt die 
Hysterese an und hört sie auf?

Sebastian W. schrieb:
> Spannungen zwischen VIL und VIH sind bei Digitaleingängen  nur kurz
> während Schaltflanken vorgesehen

Wie/wo ist "kurz" definiert? Bei meinem Dreiecksignal ist die fallende 
Flanke sehr steil, die steigende nicht... und es kann eben vorkommen 
dass das Signal bei einer bestimmten Spannung zwischen High und Low 
stehen bleibt (also nicht nur fix LOW und HIGH)

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> Gibt es beim Interrupt / Falling Edge keine Hysterese ?

Die Eingänge haben keine hart definierten Schaltsschwellen. Die pegel 
die du genannt hast bedeuten, dass darunter garantiert LOW ist und 
darüber garantiert HIGH. Der Bereich dazwischen ist undefiniert.

AVR Mikrcontroller haben eine ausgeprägte Hysterese an ihren Eingängen. 
Bei deinem  Bluepill Board kann die Hysterese viel kleiner sein. 
Erfahrungen mit originalen STM32F1 nützen dir auch wenig, weil auf 
deinem Board mit 99% Wahrscheinlichkeit ein gefälschter Chip sitzt.

: Bearbeitet durch User
Beitrag #7365521 wurde vom Autor gelöscht.
von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> alles zwischen 1V und 2.1V sollte doch gar nicht als Zustand ausgewertet
> werden?

Das hast du missverstanden.

Epi K. schrieb:
>> Dort ist auch die Hysterese des Schmitt-Triggers als 200mV (TT-Pin) bzw.
>> 0.05VDD (FT-Pin) angegeben.
> Wie ist das zu verstehen? Nur 0.2V? Bei welchem Pegel setzt die
> Hysterese an und hört sie auf?

Bei einigen Pins sogar nur 0,05 Volt. Dass heißt, die obere 
Schaltschwelle ist etwa 0,05 Volt höher als die untere. Wo genau "oben" 
und "unten" ist, ist nicht spezifiziert.

> 1.3 bis 1.7V

Du hast 0,4 Volt Differenz, was weit über der Schwelle des Schmitt 
Trigger ist.

Du kannst dich nur auf die Eigenschaften verlassen, die das Datenblatt 
dir zusichert. Alles Andere wäre Hoffen auf Glück, kann ich nicht 
empfehlen. Und denke dran, dass das Datenblatt von ST sehr 
wahrscheinlich nicht den Chip beschreibt, der vor dir liegt.

Auf jeden Fall solltest du nicht einfach davon ausgehen, dass die alle 
Eingänge aller Mikrocontroller immer einen Schmitt Trigger enthalten. 
Das ist inzwischen oft so, aber nicht selbstverständlich.

: Bearbeitet durch User
von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> deinem Board mit 99% Wahrscheinlichkeit ein gefälschter Chip sitzt.

na und, eine Hysterese sollte doch Basic sein? Meine Spannung bleibt 
z.B. fix bei 1.6V und trotzdem feuert der Interrupt voll drauflos... das 
ist doch nicht normal (ich habe keine Schwankungen von 0.2V oder 
so...also absolut stabil)?

Wie ist eine fallende Flanke definiert? Wenn doch ein Zustandswechsel 
von VIH zu VIL stattfindet und alles andere darf doch kein Interrupt 
auslösen, egal ob China Chip oder nicht....

von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> na und, eine Hysterese sollte doch Basic sein?

Nein ist es nicht. Das ist nur ein nettes Extrabonbon, das manche 
Hersteller einbauen. Es hat auch nicht jeder PKW einen Turbolader.

> A Meine Spannung bleibt z.B. fix bei 1.6V und trotzdem feuert der
> Interrupt voll drauflos

Das glaube ich dir nicht. In realen Aufbauten hast du immer Rauschen. 
Auch in der Stromversorgung, die hier mit eine Rolle spielt.

: Bearbeitet durch User
von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> Nein ist es nicht. Das ist nur ein nettes Extrabonbon, das manche
> Hersteller einbauen.
>
> Es hat auch nicht jeder PKW einen Turbolader.

naja, wie gesagt Hysterese ist egal, weil die Spannung ist absolut 
stabil bei 1.6V ohne Schwankungen und trotzdem feuert der Interrupt voll 
drauf los...

ist das auch normal??

von Steve van de Grens (roehrmond)


Lesenswert?

> Wie ist eine fallende Flanke definiert?

Ein Wechseln von garantiertem HIGH Pegel zu garantiertem LOW Pegel 
mindestens so schnell wie erforderlich. Die drei zahlen stehen im 
Datenblatt. Deine Schaltung erfüllt keins der drei Kriterien.

Epi K. schrieb:
> naja, wie gesagt Hysterese ist egal,

Ich denke, du hast dir da ein paar Wunsch-Eigenschaften zusammen 
phantasiert und beharrst nun darauf, dass sie tatsächlich vorhanden 
sind. So wird das nichts. Wie gesagt kann man sich nur auf die 
Eigenschaften verlassen, die im Datenblatt zugewiesen sind.

von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> Das glaube ich dir nicht. In realen Aufbauten hast du immer Rauschen.
> Auch in der Stromversorgung, die hier mit eine Rolle spielt.

ehm ja, ich messe mit dem Oszilloskop, ich sehe keine Schwankungen, kann 
am Abend gerne ein Bild schicken...

Aber ja, wenn die Hysterese bei 0.01V liegt... ja dann vielleicht wäre 
es ne Erklärung...

von Steve van de Grens (roehrmond)


Lesenswert?

Du kannst das drehen und wenden, wie du willst. Es ist und bleibt 
falsch, ein Poti an einen digitalen Eingang anzuschließen.

von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> Ich denke, du hast dir da ein paar Wunsch-Eigenschaften zusammen
> phantasiert und beharrst nun darauf, dass sie tatsächlich vorhanden
> sind. So wird das nichts. Wie gesagt kann man sich nur auf die
> Eigenschaften verlassen, die im Datenblatt zugewiesen sind.

Hast du schon mal ein MCU Datenblatt gesehen mit GPIO Eingang für 
externen Interrupt ausgelegt (Falling / Rising Edge) und ohne Hysterese?

Ich nicht, deshalb fällt es mir gerade schwer dies als Erklärung zu 
nehmen... aber vielleicht hast du recht - nur muss ich das zuerst 
ausprobieren, IC wechseln etc. :-/

von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> Hast du schon mal ein MCU Datenblatt gesehen mit GPIO Eingang für
> externen Interrupt ausgelegt (Falling / Rising Edge) und ohne Hysterese?

Habe ich, aber ich habe hier und jetzt keine Lust auf eine 
Nebendiskussion über andere Mikrocontroller aus meiner Jugendzeit.

von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> Du kannst das drehen und wenden, wie du willst. Es ist und bleibt
> falsch, ein Poti an einen digitalen Eingang anzuschließen.

jedes digitale Signal ist im weitesten Sinn auch analog... die Frage ist 
immer was man unter einer "steilen Flanke" versteht?
Ab wieviel steil ist es digital oder noch analog :-D?

von Peter D. (peda)


Lesenswert?

Epi K. schrieb:
> Wie ist das zu verstehen? Nur 0.2V? Bei welchem Pegel setzt die
> Hysterese an und hört sie auf?

Das ist eben nicht definiert. Es kann bei jeder Charge und jeder Fab 
unterschiedlich sein. Es kann sich auch mit der Temperatur und sonstigen 
Parametern ändern.

Epi K. schrieb:
> es kann eben vorkommen
> dass das Signal bei einer bestimmten Spannung zwischen High und Low
> stehen bleibt (also nicht nur fix LOW und HIGH)

Dafür bist Du verantwortlich, daß das Signal garantiert immer <0.35VDD 
bzw. >0.65VDD je Zählpuls erreicht.

Du mußt das Signal entsprechend aufbereiten, einen anderen Sensor nehmen 
oder es per ADC einlesen.
Manche MCs haben Schwellwertregister, mit denen der ADC-Wert ständig 
verglichen wird und die einen Interrupt auslösen können.

von Peter D. (peda)


Lesenswert?

Epi K. schrieb:
> naja, wie gesagt Hysterese ist egal, weil die Spannung ist absolut
> stabil bei 1.6V ohne Schwankungen und trotzdem feuert der Interrupt voll
> drauf los...
>
> ist das auch normal??

Ja.
Jeder IC hat eine Induktivität zwischen dem GND-Pin und seinem internen 
GND-Potential. Wenn ein MC rechnet, entstehen Stromschwankungen, die in 
dieser Induktivität eine Spannung induzieren. Diese addiert sich zu 
allen Eingangsspannungen. Daher ist jedes Digitalsignal störbehaftet und 
die Abblockkondensatoren sind sehr wichtig.
Bei analogen Eingängen kann man die Störungen unterdrücken, indem man 
differentiell mißt.

Ist der Schmitt-Trigger Eingang immer aktiv oder muß man ihn erst 
einschalten?

von Epi K. (epi_k)


Lesenswert?

Peter D. schrieb:
> Dafür bist Du verantwortlich, daß das Signal garantiert immer <0.35VDD
> bzw. >0.65VDD je Zählpuls erreicht.
>
> Du mußt das Signal entsprechend aufbereiten, einen anderen Sensor nehmen
> oder es per ADC einlesen.
> Manche MCs haben Schwellwertregister, mit denen der ADC-Wert ständig
> verglichen wird und die einen Interrupt auslösen können.

Ok gut, dann ist das wohl so, danke, wusste ich nicht und somit wieder 
was gelernt.

Vielen Dank an Alle.

von Epi K. (epi_k)


Lesenswert?

Peter D. schrieb:
> Ist der Schmitt-Trigger Eingang immer aktiv oder muß man ihn erst
> einschalten?

Arduino Code , bzw. stm32duino, keine Ahnung ob dies implementiert ist 
und eingeschalten wird.
Wüsste auch nicht in welchem und ob es überhaupt so ein Schmitt-Trigger 
Register gibt für den STM32F103... glaube eher nicht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Epi K. schrieb:
> Oder habe ich ein China-Chip erwischt?
Was steht denn da wie drauf?

Epi K. schrieb:
> Ich habe ein Potentiometer am Interrupt Eingang
Ich halte das für eine Idee, die nicht im Sinne der Erfinder ist. Nicht 
umsonst gibt es in anderen µC für solche analogen Aufgaben einen 
dedizierten Komparator. Oder eben die vielen ADC-Eingänge.

Abgesehen davon: was willst du mit diesem Ansatz generell erreichen? 
Eine definierte und zuverlässig stabile Schaltschwelle gibt es an einem 
Digitaleingang doch sowieso nicht.

Epi K. schrieb:
> Aber ja, wenn die Hysterese bei 0.01V liegt...
Die entsprechende Spec müsste man im Datenblatt des tatsächlich 
verbauten µC nachschlagen.

von Ron-Hardy G. (ron-hardy)


Lesenswert?

wo wird eigentlich das Pending bit im Pending register (EXTI_PR) 
rückgesetzt ?

von Epi K. (epi_k)


Lesenswert?

Ron-Hardy G. schrieb:
> wo wird eigentlich das Pending bit im Pending register (EXTI_PR)
> rückgesetzt ?

das macht arduino :-D - hoffentlich...

Lothar M. schrieb:
> Eine definierte und zuverlässig stabile Schaltschwelle gibt es an einem
> Digitaleingang doch sowieso nicht.

wusste ich nicht, ich dachte eine Falling Edge ist definiert mit einem 
Zustandswechsel von VIH zu VIL und alles andere wird nicht 
berücksichtigt.
Aber da lag ich wohl falsch...

von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> Arduino Code , bzw. stm32duino, keine Ahnung ob dies implementiert ist
> und eingeschalten wird.
> Wüsste auch nicht in welchem und ob es überhaupt so ein Schmitt-Trigger
> Register gibt für den STM32F103... glaube eher nicht.

Das steht im Reference Manual. Lass dich durch die scheinbar einfachen 
Frameworks nicht dazu verleiten, auf das Lesen dieses enorm wichtigen 
Dokumentes zu verzichten!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Epi K. schrieb:
> ich dachte ... Aber da lag ich wohl falsch...
Ja, ich habe mir auch schon manchmal ein Verhalten eines Chips erwartet, 
das ich dann aber nicht mit den Daten aus dem Datenblatt bestätigen 
konnte. Oder andersrum: wenn da nicht ausdrücklich steht, dass es 
tatsächlich Schmitttriggereingänge sind und diese auch noch mit 
entsprechenden Angaben bis hin zur Hysterese spezifiziert sind, dann 
darfst du ein solches Verhalten auch nicht erwarten.

Oder andersrum (und schlimmer noch): es kann sein, dass dein µC heute 
ein solches "schmitttriggerähnliches" Verhalten hat. Aber nach dem 
nächsten Stepping hat der Pin ein völlig anders Verhalten, das trotzdem 
noch mitten innerhalb der im Datenblatt angegebenen Spezifikationen 
liegt.

Epi K. schrieb:
> Aber ja, wenn die Hysterese bei 0.01V liegt...
Dazu noch das hier:
- 
https://community.st.com/s/question/0D53W00000sr3R5SAI/stm32f373-io-characteristics-schmitt-trigger-hysteresis-details

Im Datenblatt steht also, dass die Hysterese des Pins "typisch 100mV" 
ist. Es ist dort aber kein Minimal- oder Maximalwert angegeben. In der 
Praxis bedeutet das: ja, es ist eine Hysterese vorhanden. Diese 
Hysterese hat irgendeinen Wert, der im Durchschnitt bei 100mV liegt.
- 
https://community.st.com/s/question/0D53W00000GYA6TSAX/missing-hysteresis-voltage-between-schmitt-trigger-switching-levels-in-datasheet

Der Mittelwert der Messungen dort liegt mit 92mV ziemlich gut an den 
angegebenen typischen 100mV.

Beachte im Besonderen den Kommentar des ST Mitarbeiters in diesem Link:
"do not stick to the use of these simple Schmitt triggers for analog 
measurement functions"

: Bearbeitet durch Moderator
von Epi K. (epi_k)


Lesenswert?

Lothar M. schrieb:
> Oder andersrum (und schlimmer noch): es kann sein, dass dein µC heute
> ein solches "schmitttriggerähnliches" Verhalten hat. Aber nach dem
> nächsten Stepping hat der Pin ein völlig anders Verhalten, das trotzdem
> noch mitten innerhalb der im Datenblatt angegebenen Spezifikationen
> liegt.

ok ja, aber wäre eine "Falling Edge" nicht definiert? Oder ab wann 
interpretiert eine MCU eine Falling Edge als Falling Edge, wo finde ich 
diese Bedingungen definiert?

von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> ab wann interpretiert eine MCU eine Falling Edge als Falling Edge,
> wo finde ich diese Bedingungen definiert?

Nirgendwo, das ist ja der Knackpunkt. Es sind nur die HIGH und LOW Pegel 
definiert. Also ist eine "Falling Edge" wie üblich der Wechsel von HIGH 
nach LOW.

Eine definierte Schaltschwelle gibt es da nicht.

von Epi K. (epi_k)


Lesenswert?

Steve van de Grens schrieb:
> Nirgendwo, das ist ja der Knackpunkt. Es sind nur die HIGH und LOW Pegel
> definiert. Also ist eine "Falling Edge" wie üblich der Wechsel von HIGH
> nach LOW.
>
> Eine definierte Schaltschwelle gibt es da nicht.

Ist die definierte Schaltschwelle nicht der HIGH und LOW Pegel? Sorry... 
irgendwie geht mir dies nicht in den Kopf

von Steve van de Grens (roehrmond)


Lesenswert?

Epi K. schrieb:
> Ist die definierte Schaltschwelle nicht der HIGH und LOW Pegel?

Nein, das sind nur Pegel, die garantiert als HIGH bzw. LOW interpretiert 
werden. Es gibt keine definierte Schaltschwelle.

Siehe https://de.wikipedia.org/wiki/Logikpegel (das Bild rechts oben)

: Bearbeitet durch User
von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Epi K. schrieb:
> Ist die definierte Schaltschwelle nicht der HIGH und LOW Pegel

Nein.

Schau dir vielleicht mal Appnote 4899 an...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Epi K. schrieb:
> Ist die definierte Schaltschwelle nicht der HIGH und LOW Pegel? Sorry...
> irgendwie geht mir dies nicht in den Kopf
Du stellst dir das falsch herum vor. Dort werden keine 
Umschaltspannungen garantiert, sonden voneinander völlig unabhängige 
Grenzschaltschwellen für LOW und HIGH.

Epi K. schrieb:
> High Level ist doch 0.7 * VDD (2.31v)
Da steht: bei einer Versorgung mit genau 3,3V wird eine Spannung mit 
2,31V und höher sicher als HIGH erkannt. Aber auch: eine Spannung mit 
2,30V kann bereits als LOW erkannt werden.

> und Low Level 0.3 * VDD (0.99V)
Und da steht: eine Spannung mit 0,99V und weniger wird sicher als LOW 
erkannt, aber eine Spannung mit 1,00V kann bereits als HIGH erkannt 
werden.

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

Ron-Hardy G. schrieb:
> wo wird eigentlich das Pending bit im Pending register (EXTI_PR)
> rückgesetzt ?

Das kann es gut gewesen sein.

Ein Eingang kann mal prellen, aber nicht ständig schwingen.
Oder er ist wirklich offen, z.B. wenn man versehentlich den Nachbarpin 
angelötet hat.

von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

Epi K. schrieb:
> Ist die definierte Schaltschwelle nicht der HIGH und LOW Pegel? Sorry...
> irgendwie geht mir dies nicht in den Kopf

Ja, wenn du (nicht zu langsam) vom HIGH Pegel zum LOW Pegel wechselst 
dann hast du definitiv eine FALLING Edge.

Aber: Wenn du von irgendwo unterhalb des HIGH Pegels zu irgendwo 
oberhalb des LOW Pegels wechselst dann hast du nicht definiert keine 
FALLING Edge.

Verstanden?

Lothar M. schrieb:
> Im Datenblatt steht also, dass die Hysterese des Pins "typisch 100mV"
> ist. Es ist dort aber kein Minimal- oder Maximalwert angegeben.

In meinem https://www.st.com/resource/en/datasheet/stm32f103c8.pdf ist 
ein Minimalwert für die Schmitt-Trigger-Hysterese angegeben.

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

Ron-Hardy G. schrieb:
> wo wird eigentlich das Pending bit im Pending register (EXTI_PR)
> rückgesetzt ?

In __HAL_GPIO_EXTI_CLEAR_IT innerhalb von HAL_GPIO_EXTI_IRQHandler aus 
AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.4.0 
\system\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c,  gerufen 
aus den installierten Interrupt-Handlern in 
AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.4.0 
\libraries\SrcWrapper\src\stm32\interrupt.cpp,  denke ich. Aber ganz 
sicher bin ich da nicht ...

LG, Sebastian

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.