Forum: Mikrocontroller und Digitale Elektronik [atmega8] Biphase-Mark Signal / Rise/Fall Times


von Danski (Gast)


Lesenswert?

Hallo Mikrocontroller Gemeinde,

nachdem ich mich in der Vergangenheit überwiegend mit 
Softwareentwicklung beschäftigt habe, versuche ich mich nun auch mal an 
der Hardware und arbeite Schritt für Schritt in die AVR Welt ein.

Die meisten Probleme erledigen sich ja beim genauen Lesen der 
Datenblätter, aber heute machen sich meine fehlenden E-Technik 
Kenntnisse bemerkbar.

Vielleicht kann mir jemand weiterhelfen.

Auf einem atmega8 erzeuge ich ein biphase mark signal mit einer Frequenz 
von 1-2 kHz. Wenn ich das mit dem Oszilloskop messe, dann stelle ich 
fest, dass insbesondere die Fall-Time des Portpins, also der Übergang 
von 1 nach 0 ziemlich lange dauert (ca. 300uSec) und bei einem 2kHz 
signal sogar nichtmal ganz auf 0 runter geht, bevor schon die nächste 
eins geschrieben wird.

Die rise-Time hingegen liegt bei 10uSec.

Derzeit messe ich ohne irgendeine Beschaltung direkt am Port.

Gibt es eine Möglichkeit, die Übergänge schneller zu machen?
Fehlt vielleicht nur die richtige Beschaltung des Ports?

Gespannte Grüße,

Dan

von Bernd K. (prof7bit)


Lesenswert?

Danski schrieb:
> dass insbesondere die Fall-Time des Portpins, also der Übergang
> von 1 nach 0 ziemlich lange dauert (ca. 300uSec) und bei einem 2kHz
> signal sogar nichtmal ganz auf 0 runter geht, bevor schon die nächste
> eins geschrieben wird.

Vergessen den betreffenden Pin zuvor auf Ausgang zu konfigurieren? Denn 
dann würdest Du nur in schneller Folge den Pullup ein und ausschalten 
(der wird nämlich zufällig auch über das PORT-Register gesteuert) an 
einem Pin der ansonsten hochohmig ist (weil Eingang), das kann zu einem 
solchen Symptom führen.

Wenn er korrekt auf Ausgang steht solltest Du richtig knackige 
Schaltflanken sehen, weit weniger als 1µs.

: Bearbeitet durch User
von Danski (Gast)


Lesenswert?

Aha,

tatsächlich - ich dachte, der Port wäre per default ein Ausgang und 
müsste nur bei Bedarf als Eingang definiert werden.

Nun habe ich das entsprechende Bit im DDRD gesetzt
1
DDRD |= (1 << PD7)

... und siehe da, beide Zeiten liegen im Nanosekunden Bereich.

Super - vielen Dank für den Tip!!!

Dann muss ich nachher nicht schlecht gelaunt ins Bett gehen ;)

von Danski (Gast)


Lesenswert?

DDRB meinte ich...

von Karl M. (Gast)


Lesenswert?

Danski, nicht denken, im Datenblatt nachlesen !

von Joe F. (easylife)


Lesenswert?

es gibt einen ganz einfachen grund, warum IOs per default inputs sind: 
du kannst mit extern anliegenden signalen weniger kaputt machen, bis der 
uc gebootet hat...

von Danski (Gast)


Lesenswert?

Hi, Danke für die Erklärung. Das leuchtet ein.

In dem Zusammenhang vielleicht auch noch eine Frage, die mich immer 
schon interessiert hat. Welchen Zustand haben die Ports eines atmega 
Controllers beim Einschalten/booten?

Nehmen wir mal an, ich habe eine Lackiermaschine deren Ventile per MC 
gesteuert werden. Es gäbe ja eine ziemliche Sauerei, wenn beim 
Einschalten zufällig Ventile öffnen.

Wie schützt man sich vor undefinierten Zuständen?

heißen Dank,

Dan

von Helmut L. (helmi1)


Lesenswert?

Danski schrieb:
> Wie schützt man sich vor undefinierten Zuständen?

In dem die Treiberschaltung fuer die Ventile das verhindert, das ist 
sache des Schaltungsentwicklers auf sowas zu achten.

von Danski (Gast)


Lesenswert?

Verstehe. Kannst Du mir einen groben Hinweis geben, wie sowas elektrisch 
funktioniert?

Meine Vorstellung war, dass am Prozessorpin quasi nur ein Mosfet hängt, 
der dann z.B. ein Magnetventil schaltet.

Wäre die Vorgehensweise nun, dass man die Schaltspannung erst nach einer 
bestimmten Zeit freigibt, so dass ein Durchschalten des Mosfets einfach 
keine Auswirkung hat?

Oder funktioniert sowas noch ganz anders?

von Helmut L. (helmi1)


Lesenswert?

Danski schrieb:
> Meine Vorstellung war, dass am Prozessorpin quasi nur ein Mosfet hängt,
> der dann z.B. ein Magnetventil schaltet.

Im simpelsten Fall reicht ein Widerstand vom Gate zu GND. Im extremfall 
wird da noch ein Hardwarewatchdog in Form eines Monoflops eingebaut das 
staendig getriggert werden muss.

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.