Forum: Mikrocontroller und Digitale Elektronik AVR Eingänge ICP und INT0 unterschiedlich?


von Sven (Gast)


Lesenswert?

Hallo,

kann es sein, dass die AVR internen Pullups schwanken?
Wenn ich eine Schaltung an INT0 hänge und einmal an ICP und triggere auf 
eine fallende Flanke, so funktioniert es einmal und einmal nicht.
Ändere ich den Serienwiderstand zum Pin (verringere ihn), funktioniert 
es auf beiden Eingängen. An der Software liegt es also nicht.
Haben die internen Pullups eine solche Streubreite?
Habe schon einen weiteren Atmega8 ausprobiert, bei dem ist es das 
gleiche.
Das INT0 scheint empfindlicher zu sein als der ICP Eingang...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sven schrieb:
> kann es sein, dass die AVR internen Pullups schwanken?

Oh ja. Lies mal das Datenblatt diesbezüglich, da ist beim Mega8 zwischen 
20k und 50k alles drin. Zudem variert die interne Beschaltung der Pins 
ein wenig.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Sven schrieb:
> Ändere ich den Serienwiderstand zum Pin (verringere ihn), funktioniert
> es auf beiden Eingängen.

Über welche Widerstandswerte sprechen wir denn?

> An der Software liegt es also nicht.

Sag das nicht. Womöglich hast du einen der beiden Pins als Ausgang 
gesetzt.

--> Zeig mal deinen Code.

: Bearbeitet durch User
von Sven (Gast)


Lesenswert?

Wir reden über 100k bei denen es nicht funktioniert und 33k in Serie zum 
Pin bei denen es funktioniert.
Eingelesen wird ein Signal von -10V mit internem Pullup getriggert auf 
fallende Flanke.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Sven schrieb:
> Wir reden über 100k bei denen es nicht funktioniert und 33k in
> Serie zum Pin bei denen es funktioniert.

Ganz schön viel...

> Eingelesen wird ein Signal von -10V

[-10V] ist EIN Wert (vermutlich der Negativste).

- Wie groß ist die höchste Spannung?
- Bei wieviel Volt hättest du gerne deine Schaltschwelle?

> mit internem Pullup

Ich gehe im Folgenden von 5V Betriebsspannung aus.

Wie bereits erwähnt beträgt der Widerstand der internen PullUps 
20k..50k. Im Falle eines externen Serienwiderstandes von 100k gegen -10V 
erhältst du am Pin eine Spannung von 0V..2,5V. Eine "0" wird nur bis zu 
einer Spannung von 1V (0,2*5V) sicher erkannt. Eine "1" wird erst ab 
einer Spannung von 3V (0,6*5V) sicher erkannt. Alles dazwischen ist 
offiziell undefiniert.

Bei einem externen Serienwiderstand von 33K erhältst du theoretisch eine 
Spannung zwischen -0,66V und -4,03V, welche allerdings durch die interne 
Schutzdiode auf ca. -0,5V begrenzt wird[*]. Dieser Pegel liefert dir auf 
jeden Fall einen definierten Lowpegel.

[*] Diese negative Spannung ist grob geschätzt und vom Stromfluss
    abhängig!

von Sven (Gast)


Lesenswert?

Magnus M. schrieb:
> Bei einem externen Serienwiderstand von 33K erhältst du theoretisch eine
> Spannung zwischen -0,66V und -4,03V, welche allerdings durch die interne
> Schutzdiode auf ca. -0,5V begrenzt wird[*]. Dieser Pegel liefert dir auf
> jeden Fall einen definierten Lowpegel.

Vielen Dank.
Ja, richtig, -10V ist die maximale negative Spannung, darunter fängt es 
ab ca. -3V an und geht eben bis -10V hoch.
5V Betriebsspannung ist auch korrekt.

Wie "schätzt" man die oben zitierten Spannungen? Also welche Formel 
steckt dahinter?

von Sven (Gast)


Lesenswert?

Dürfte ich das nochmals aufleben lassen, damit mir jemand erläutert, wie 
man so etwas ausrechnet?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Als Anregung zum selbst lernen:  Spannungsteiler

Wenn Du danach noch konkrete Fragen hast kannst Du die gerne stellen.

von Sven (Gast)


Lesenswert?

Die hätte ich noch, da ich nicht auf die Werte komme.
Ich gehe von einem Pullup wie oben und im Datenblatt genannt von min. 
20k und max. 50k aus.

Mein Eingang ist negativer (-10V) als die 5V durch den Pullup. Also eine 
Differenz von 15V.

Wenn ich nun das Verhältnis von Serienwiderstand zu der Reihenschaltung 
von Serienwiderstand und Pullup bildet und mit der Spannung 
multipliziere, komme ich nicht auf die Werte.
(33k/(33k+20k) ~ 0,62
(33k/33k+50k) ~ 0,40

Wo liegt mein Denkfehler?

von spess53 (Gast)


Lesenswert?

Hi

>Die hätte ich noch, da ich nicht auf die Werte komme.
>Ich gehe von einem Pullup wie oben und im Datenblatt genannt von min.
>20k und max. 50k aus.

Wenn du einen externen Pull-Up-Widerstand nimmst wird das ganze 
einfacher.

MfG Spess

von Sven (Gast)


Lesenswert?

Mir fällt noch etwas ein. Ich könnte doch eine Diode nach GND hängen 
(z.B. 1N4148) und so auch die Spannung zumindest auf 0,7V begrenzen. 
Danach noch ein Widerstand in Serie der bei den 0,7V max. 1mA 
durchlässt, also 700Ohm bzw. um da nächste aus E24 zu nehmen 820 Ohm. 
Müsste doch gehen oder?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sven schrieb:
> Ich könnte doch eine Diode nach GND hängen
> (z.B. 1N4148) und so auch die Spannung zumindest auf 0,7V begrenzen.

Diese Diode hat der Eingang des AVR schon. (siehe Fig. 21 im Datenblatt 
05/08) Da aber auch diese einen endlichen Durchlassstrom hat (siehe 
Absolute Maximum Ratings) ist der Serienwiderstand vor dem AVR Eingang 
sowieso nötig bzw. eine sehr gute Idee.

von Rudolph (Gast)


Lesenswert?

Sven schrieb:
> Mir fällt noch etwas ein. Ich könnte doch eine Diode nach GND hängen
> (z.B. 1N4148) und so auch die Spannung zumindest auf 0,7V begrenzen.

Die 0,7V fallen in die Kategorie Lügen für Kinder, die 
Durchlass-Spannung echter Dioden ist vor allem vom Strom und dann von 
der Temperatur abhängig.

von Ulrich (Gast)


Lesenswert?

Die Idee mit der externen Diode um die Spannung schon vor dem IC zu 
begrenzen ist gut - wenn man ganz sicher gehen will nimmt man eine 
Schottky-diode mit kleiner Durchlassspannung. Zum einen kann die interne 
Diode im AVR angeblich nicht viel Strom (1 mA steht in einer Atmel Appl. 
note, die Datenblätter schweigen sich da aus) vertragen und außerdem 
kann der Strom auch andere Funktionen (etwa den AD Wandler) stören. Mit 
dem 2. Widerstand hat man wenigstens eine bessere Kontrolle über den 
Strom.

Die Berechnung des Widerstandswerte passt allerdings nicht: vom internen 
Pullup kommt ein Strom von rund 50-100 µA. Mit dem Strom will man auf 
etwa 0,5 - 1 V kommen, so dass die Spannung am Eingang kaum negativ 
wird, aber auch sicher unter der Schaltschwelle (2,5 V) bleibt. Das 
wären dann etwa 10 K als passender Widerstand. Über die internen 
Schutzdioden fließt dann praktisch kein Strom mehr.

Auch mit 700 Ohm wäre der Strom noch deutlich unter 1 mA, denn auch die 
internen Schutzdioden haben eine Durchlassspannung so um die 0,4 -0,7 V, 
je nach Strom und Temperatur.

von Axel S. (a-za-z0-9)


Lesenswert?

Sven schrieb:

> Mein Eingang ist negativer (-10V) als die 5V durch den Pullup. Also eine
> Differenz von 15V.
>
> Wenn ich nun das Verhältnis von Serienwiderstand zu der Reihenschaltung
> von Serienwiderstand und Pullup bildet und mit der Spannung
> multipliziere, komme ich nicht auf die Werte.
> (33k/(33k+20k) ~ 0,62
> (33k/33k+50k) ~ 0,40
>
> Wo liegt mein Denkfehler?

Ich habe keine Ahnung, was du gerechnet hast. Ich komme für

1
-10V o--[33K]--*--[20-50K]--o +5V

auf eine Spannung zwischen -4V (für 50K) und -0.6V (für 20K) am Punkt * 
gegen GND. Vermutlich kommst du mit den Vorzeichen durcheinander.

Vorschlag: betrachte die Strombilanz am Punkt *. Wenn da eine Spannung 
U_x anliegt, fließt von rechts Strom rein und nach links der gleiche 
Strom raus. Und jetzt schreib die Gleichung auf und stelle sie nach U_x 
um. Alles wird gut!


XL

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.