Forum: Mikrocontroller und Digitale Elektronik Latenz/Slew-Rate


von Phillip (Gast)


Lesenswert?

Hi

Ich war der Meinung, daß ATmegas (8er?) es nicht schaffen, einen I/O-Pin 
mit maximaler Geschwindigkeit zu toggeln. Also wenn man in C
1
while (1)
2
 PORTA ^= (1 << PA1);

schreibt, schafft es der Ausgang nicht, saubere Flanken und Pegel zu 
generieren. Ist das (noch immer) so, war das nur "früher" oder liege ich 
völlig falsch?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Phillip schrieb:
> Ist das (noch immer) so, war das nur "früher" oder liege ich völlig
> falsch?

Du liegst da nur dann nicht völlig falsch, wenn Du versuchen würdest, 
einen OpenCollector-/OpenDrain-Ausgang zu emulieren. Aber die 
"totem-pole"-Treiber sind schneller als der Controller an den Bits 
wackeln kann.

von Achim S. (Gast)


Lesenswert?

du liegst falsch (heute und auch früher schon). Seinen Pin alleine kann 
der µC schnell genug umschalten (von Ausnahmen wie Open-Kollektor-Pins 
abgesehen).

Die Sache wird anders, wenn du eine (kapazitive) Last an den µC-Ausgang 
hängst. Je nachdem, wie stark diese Last den Ausgang fordert, kann das 
von dir beschriebene Verhalten auftreten. Dabei kann ggf. auch schon der 
Eingang eines Oszis samt der Kapazität der Messleitungen schon eine zu 
große Lasstkapazität darstellen.

von Einer K. (Gast)


Lesenswert?

Phillip schrieb:
> PORTA ^= (1 << PA1);

Bei modernen AVR kannst du die Frequenz noch deutlich steigern wenn du
PINA = (1 << PA1);
verwendest.
Und die "Kurve" ist am Ausgang immer noch schön rechteckig. Auch bei 
20MHz Prozessortakt.

von (prx) A. K. (prx)


Lesenswert?

Und wenn man Typen mit 64MHz Timer verwendet, dann kommt man mit dem 
Timer-Ausgang bis 32MHz Pinfrequenz. Wenn man da schlechte Kurven 
kriegt, dann liegt das nicht am µC, sondern an Layout, Anschluss oder 
Messquipment. So sollte man nicht erwarten, mit einem normalen Tastkopf 
mit Masseclip ein blitzsauberes Rechteck zu bekommen.

von W.A. (Gast)


Lesenswert?

Phillip schrieb:
> Ich war der Meinung, daß ATmegas (8er?) es nicht schaffen, einen I/O-Pin
> mit maximaler Geschwindigkeit zu toggeln.

Das kommt drauf an, was du als Last dran hast.

von (prx) A. K. (prx)


Lesenswert?

Ich hatte mal einen Tiny gebaut, dessen Timer-Ausgang per Poti auf 
~35MHz durchstimmbar war. Und um dem noch etwas mehr Pfeffer zu geben 
war noch ein 74AC00 dahinter - in DIL-Gehäuse auf Lötpunktraster, also 
"leicht" suboptimal.

Mit einem normalen Billigtastkopf, mit dem üblichen Masseclip-Anschluss, 
kam sowas bei 20MHz heraus:
https://www.mikrocontroller.net/attachment/27258/74AC-Ausgang.PNG

Mit anderen Tastköpfen und direktem Masseanschluss am Tastkopfschirm, 
statt Masseclip, sah das dann schon deutlich besser aus. Wobei das 
Messequipment immer noch nicht optimal war (100MHz Oszi bei 20MHz 
Rechteck hat eben Grenzen, meine Fähigkeiten als Tastkopfbauer auch):
https://www.mikrocontroller.net/attachment/27312/Nebeneinander.png
https://www.mikrocontroller.net/attachment/27319/Nebeneinander2.png

Das Signal direkt am Ausgang des AVR sah zwar deutlich besser aus, weil 
es etwas dezentere Flanken als der 74AC00 hatte. Aber es bleibt das 
Problem, dass man in solchen Bereichen einige Gedanken in das 
Messequipment investieren sollte. Wer misst misst Mist.

: Bearbeitet durch User
von Öh? (Gast)


Lesenswert?

@ Rufus @ Achim

Mag einer von Euch bitte mit einigen Worten erklären, warum 
Open-Kollektor-Ausgänge grundsätzlich langsamer als Totem-Pole-Ausgänge 
sind? Oder einen Link auf eine Erklärung posten?
Leider finde ich da auf die Schnelle nichts im Internet.

Das wäre nett.

von Einer K. (Gast)


Lesenswert?

Wegen dem Widerstand.

von (prx) A. K. (prx)


Lesenswert?

Öh? schrieb:
> Mag einer von Euch bitte mit einigen Worten erklären, warum
> Open-Kollektor-Ausgänge grundsätzlich langsamer als Totem-Pole-Ausgänge
> sind?

Ein aktiver Pullup liefert mehr Strom als ein passiver. Mit passivem 
Pullup gibts bei nennenswerter kapazitiver Last bei der ansteigenden 
Flanke die übliche R/C-Ladekurve.

Der obere Transistor des Ausgangs eines AVR hat bei 5V Versorgung einen 
Innenwiderstand von um die 30 Ohm. Extern einen 30 Ohm Pullup an einen 
Open Drain Ausgang zu hängen ist nicht ratsam, jedenfalls nicht bei 
low-Pegel.

: Bearbeitet durch User
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.