Forum: Mikrocontroller und Digitale Elektronik ATmega Pin-Pegel beim Starten?


von Andreas H. (heilinger)


Lesenswert?

Hallo,

ich benutze einen ATmega1284P. Unter welchem Kaptiel im Datenblatt finde 
ich denn einen Hinweis, ob die Pins während der Start-up-time high oder 
low sind?

Kann ich dies denn durch z.B. Fuses einstellen, also dass alle high bzw. 
low sind?

von ...---... (Gast)


Lesenswert?

beim Start sind sie als Input, also hochohmig.

von Andreas H. (heilinger)


Lesenswert?

die pull-ups sind also zugeschaltet?

Und ne andere Frage nebenbei, wann benutzt man welche Start-up-Time? 
Also was sind die Gründe eine Start-up-Time zu verlängern?

von Senf (Gast)


Lesenswert?

Im Datenblatt wird man unter Register Descriptions bei I/O Ports initial 
values finden. Die beschreiben nach RESET den Portzustand. Beim 
ATmega1248P hab ich nicht geschaut. Bei anderen AVR sind die in aller 
Regel 0 und Pullups damit nicht aktiv.

von Sesk K. (zeborok)


Lesenswert?

Andreas H. schrieb:
> die pull-ups sind also zugeschaltet?
>
> Und ne andere Frage nebenbei, wann benutzt man welche Start-up-Time?
> Also was sind die Gründe eine Start-up-Time zu verlängern?

z.B. wenn der Quarz/Oszi erst noch einschwingen muss bzw. wenn man da 
exakten/stabilen Betrieb wünscht würde Ich meinen.

von Andreas H. (heilinger)


Lesenswert?

Ich habs im Datenblatt gefunden, da steht, dass initial value für das 
PORTx-Register = 0, also pull-ups ausgeschaltet sind und Pins auf 
Eingang, aber zählt das auch während der Start-up-time?

ich hab mit nem Oszi bei mir die Pegel von 3 Pins nach dem Starten 
gemessen, und die sind alle 3 high während der Start-up-time und da 
hängen extern keine pull-ups dran.
Daher wundert mich das jetzt etwas.

von Peter II (Gast)


Lesenswert?

Andreas H. schrieb:
> ich hab mit nem Oszi bei mir die Pegel von 3 Pins nach dem Starten
> gemessen, und die sind alle 3 high während der Start-up-time und da
> hängen extern keine pull-ups dran.
> Daher wundert mich das jetzt etwas.

man kann einen Input pin überhaupt nicht sinnvoll messen. Du müsstest 
ihn testweise mit pullup und pulldown messen.

von Andreas H. (heilinger)


Lesenswert?

naja sagen wir es so:
Ich habe an einem Pin einen NPN-Transistor dranhängen, der mir ein 
Ventil öffnet.
Während der Start-up-time ist das Ventil kurz geöffnet, was sich durch 
ein zischen bermerkbar macht.

Bedeutet für mich auch, dass der Pin high ist während der Start-up-Time 
oder habe ich da einen Denkfehler?

von Peter II (Gast)


Lesenswert?

Andreas H. schrieb:
> Bedeutet für mich auch, dass der Pin high ist während der Start-up-Time
> oder habe ich da einen Denkfehler?

und was macht dein Ventil wenn gar kein Atmel vorhanden ist? (Pin nicht 
mit Transitor verbunden)

Wie lange braucht denn dein Atmel zum starten, so schnell kann ein 
Ventil doch gar nicht sein.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas H. schrieb:
> Bedeutet für mich auch, dass der Pin high ist während der Start-up-Time
> oder habe ich da einen Denkfehler?

Ja, hast du.  Du wirst da irgendeine andere Einstreuung drin haben,
die nur bei floatendem Pin zuschlägt.  Das solltest du analysieren.

Die einzigen Pins, die an einem ATmega1284P nicht floaten sind die
vom JTAG-Interface.  Die sollte man aber nach Möglichkeit in der
eigenen Applikation nur für "Unwichtiges" (LEDs oder sowas) belegen,
damit man trotzdem noch via JTAG debuggen kann bei Bedarf.

von Andreas H. (heilinger)


Angehängte Dateien:

Lesenswert?

okay, dann formulier ich die Frage anders:

Warum ist mein Ventil, das über einen NPN-Transistor angesteuert wird 
während der Start-up-Time geöffnet?
Im Anhang habt ihr den Ausschnitt der Schaltung:

von Andreas H. (heilinger)


Lesenswert?

Peter II schrieb:
> und was macht dein Ventil wenn gar kein Atmel vorhanden ist? (Pin nicht
> mit Transitor verbunden)
>
> Wie lange braucht denn dein Atmel zum starten, so schnell kann ein
> Ventil doch gar nicht sein.

Also, wenn ich die Start-up-Time auf 16K + 0ms stelle, so schaltet das 
Ventil natürlich nicht. Wenn ich die Start-up-Time auf 16K + 65ms 
stelle, dann schaltet es eben. Es ist ein kleines Ventil, dass eine 
Schaltzeit von ca. 10ms hat.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas H. schrieb:
> Im Anhang habt ihr den Ausschnitt der Schaltung:

Und wie sieht die Firmware aus?  Passiert das auch bei einem Reset,
wenn der Flash komplett gelöscht ist?

von Andreas H. (heilinger)


Lesenswert?

ich werde das jetzt erstmal testen ohne Anschluss an den Atmel und 
versuchen ein paar Screenshots vom Oszi zu posten, evtl. schafft das 
etwas mehr Klarheit. Kann aber nen bissl dauern...

von Andreas H. (heilinger)


Lesenswert?

Also ich muss hier nen Rückzieher machen.

Ich hatte die beiden Widerstände am Pin ausgelötet und nur den 
Ausgangspin gemessen, und dieser blieb low. Dann löte ich die beiden 
Widerstände wieder ein und der Pin bleibt immer noch low.

Mit anderen Worten: das Ventil wird nicht mehr in der Start-up-Time 
angesteuert. Ich krieg hier die Krise!!!
Keine Ahnung was ich da eben gemessen habe oder ob ich ne Lötbrücke oder 
sowas hatte. Das Zischen war aber auf jeden Fall da, was mir auch nen 
Kollege bestätigen kann °_o

Tschuldigung für die Missverständnisse...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas H. schrieb:
> Tschuldigung für die Missverständnisse...

Ist doch gut, wenn du auf diese Weise bei der Fehlersuche in die
richtige Richtung voran gekommen bist.

von tom (Gast)


Lesenswert?

...ich würde einen externen pull-up am uC Ausgang empfehlen (übern 
Daumen 10k), da die uC pins erstmal floaten bis die SW sie definiert 
konfiguriert hat.
Dann lässt Du den uC aus dem Reset mal hochkommen und schaust mit Oszi 
direkt am Portpin, ob da etwas rumzappelt beim Pon bis die Applikation 
vollständig "oben" ist.
Siehst Du nix aber das Ventil zischt - dann stückweise weiter in 
Richtung Ventileingang messen und dann findest Du wer da wann Unsinn 
macht.
Denke daran, der Avr kann nur 3mA treiben, aber 20mA sinken - passt 
Deine Dimensionierung dahingehend ?

gruss, tom.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

tom schrieb:
> ...ich würde einen externen pull-up am uC Ausgang empfehlen (übern
> Daumen 10k), da die uC pins erstmal floaten bis die SW sie definiert
> konfiguriert hat.

Er braucht aber eher einen pulldown.  Ist aber eigentlich egal,
ein floatendes Pin liefert einem npn-Transistor keinen Basisstrom.

> Denke daran, der Avr kann nur 3mA treiben, aber 20mA sinken - passt
> Deine Dimensionierung dahingehend ?

Gaaaanz alte AVRs waren leicht asymmetrisch, aber nie so stark.  Ein
ATmega1284P ist laut typical characteristics ziemlich symmetrisch,
laut Garantiedaten werden bei Vcc = 5 V 10 mA treiben und 20 mA
"versenken" zugesichert.  Dabei werden aber noch die Logikpegel
garantiert, auf die es hier gar nicht ankommt.

von Andreas H. (heilinger)


Lesenswert?

ähm zu euren Hinweisen hab ich jetzt doch nochmal ne Frage. Und zwar 
habe ich auch nen größeres Ventil auf gleiche Weise angeschlossen, nur 
dass nen leistungsstärkerer Transistor eingebaut ist.
Der Widerstand an der Basis beträgt allerdings 220R.
Somit hätte ich einen Basisstrom von ca. 4,3 / 220 =  ca. 20mA.
Jetzt schreibt ihr oben, dass ein Pin nur 10mA treiben kann?!

Wenn ich mir das Datenblatt auf Seite 323 in Electrical Characteristics 
anschaue, steht dort:

"DC Current per I/O Pin = 40.0mA"

Weiter unten steht noch als Zusatz, dass die Summe gewisser Ports nicht 
100mA überschreiten darf.

Woher steht das denn bei euch mit den 10 bzw. 20mA?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas H. schrieb:

> Jetzt schreibt ihr oben, dass ein Pin nur 10mA treiben kann?!

Nein, nicht kann, sondern nur für 10 mA werden die Werte auch
garantiert.  Das ist schon ein Unterschied.

> Woher steht das denn bei euch mit den 10 bzw. 20mA?

Abschnitt 26.1, in der Tabelle die Parameter V[OL] und V[OH].  Hmm,
ist ja sogar genau andersrum: 20 mA werden als Stromquelle
garantiert, aber nur 10 mA als Stromsenke.

Kurz und gut, mit deinen 220 Ω wirst du kein Problem haben.

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.