www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR startet nicht richtig wenn Portpin zuerst strom krigt


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich möchte mit einem I/O Pin am AVR testen ob an einer bestimmten stelle 
eine Spannung anliegt. Leider krigt der AVR auch über eine Diode von 
dieser stelle seine Spannung und startet nicht richtig. Erst wenn ich 
den strom anlege während der Portpin von dieser stelle getrennt ist und 
ihn dann wieder verbinde funktioniert alles. Ich nehme an die Diode 
braucht eine gewisse Zeit zum schalten und der Strom fließt nun zuerst 
durch den Port in den AVR.

Zumindest ergab der Test in dem ich die Versorgungsspannung über eine 
Diode laufen lies und den portpin vor die diode schaltete in etwa das 
gleiche versuchsergebnis. Gibt es eine möglichkeit zu gewährleisten dass 
der portpin erst dann durchschaltet wenn die stromversorgung am AVR 
sicher anliegt?

ist das überhaupt die ursache des problems?

mfg PoWl

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit externen Massnahmen wie hinreichend grossem Serienwiderstand oder 
aktiver Trennung des Portpins von seinem Signal (FET, Optokoppler) lässt 
sich das lösen.

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist denn ein serienwiderstand? du meinst ein widerstand zwischen 
portpin und AVR?

hm ich weiß nich, irgendwie mag das alles nich so richtig funktionieren 
:-( Gibt es so ne art anschaltverzögerungsschaltung die das ganze vll ne 
Millisekunde oder so verzögert? ich würde das ja gerne mit dem AVR 
steuern aber hab leider keinen portpin mehr frei.

mfg PoWl

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, wieso nimmt der AVR über die portpins überhaupt strom auf :-/

Ich habe mal versucht einen schlauen trick anzuwenden in dem ich den 
portpin über zwei dioden verbinde so dass es noch einen tick länger 
dauert bis der kapazitive widerstand der Diode überwunden ist (um den 
geht es doch, oder?). Leider hat das zu keinem Erfolg geführt.

Ich müsste einen Portpin opfern um einen FET nach initialisierung des 
µCs anzusteuertn. Leider sind die rar und ich möchte nicht auf den 
nächstgrößeren controller umsteigen.

Eine art Einschaltverzögerung wäre gut die den FET nach einer oder ein 
paar Millisekunden einschaltet. Wie baut und berechnet man sowas?

mfg PoWl

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hm, wieso nimmt der AVR über die portpins überhaupt strom auf :-/

Liest Du gelegentlich Datenblätter? Mach mal, das bildet!

Es ist eine unter Elektronikbegeisterten bekannte, alte Regel, daß man 
nie Spannung an Ein-/Ausgänge von Schaltkreisen legt, bevor diese selbst 
mit Spannung versorgt werden. Muß man das aus irgendwelchen Gründen doch 
tun, so muß der Strom auf ungefährliche Werte begrenz werden. Dies 
bewerkstelligt man mit einem Serienwiderstand.

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke! Ja ich lese sogar viel in Datenblättern und bilde mich 
dementsprechend fort, leider habe ich entsprechende Abschnitte noch 
nicht behandelt.

Den Serienwiederstand somit zwischen Spannungsquelle und Portpin. Wie 
hoch sollte der dimensioniert werden? 10kOhm? 100? 1mOhm? Das Problem 
ist ja auch der Pullup bzw. Pulldown damit das ganze nicht auf einem 
undefinierten Pegel hin und her pendelt.

Aber hätte noch eine finale idee, ich könnte das ganze mit einem FET 
ansteuern den ich an einen ausgangsport für eine beliebige LED hänge und 
den FET so verschalten dass er sich selbst hält wenn er ersteinmal 
aktiviert wurde, was aber erst durch kurzes einschalten sieses ports 
passiert.

mfg PoWl

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest einfach mal schreiben, was du eigentlich willst. 
Serienwiderstand ist doch gut, nimm halt einen Wert, der dir gefällt. 
10kR klingt jedenfalls schonmal gut. Kommt halt drauf an, wie's mit EMV 
in der Umgebung aussieht.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens: AVRs haben interne Pullups, also mach Dir darüber mal keine 
Gedanken. Diese kann man ein- und ausschalten.

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ein 10kohm Serienwiderstand scheint schon verbesserung zu bringen, 
allerdings kollidiere ich da wie schon gesagt mit dem PullUp, der muss 
auf jedenfall größer werden.

ich habs grad eben mal ohne pullup mit nem zusammengebastelten 150k 
serienwiderstand probiert, allerdings scheint der geringe strom der 
hierdurch fließt schon einen ordentlichen start zu verhindern, d.h. ich 
brauche wohl wirklich eine aktive unterdrückung :-/

dass der AVR interne pullups hat weiß ich, leider brauche ich einen 
Pull-Down, sry hatte mich falsch ausgedrückt, da von der schaltstelle 
positive spannung kommt. und der pull-down/up sollte ja nur einen 
kleinen teil des widerstands betragen über den der portpin gekoppelt ist 
sonst zieht er den eigentlich gewollten pegel wieder weg.

mfg PoWl

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte fast meinen, Du doktorst an der falschen Stelle (an den 
Sympthomen), die Ursache liegt vermutlich ganz woanders.

Der AVR hat Clamp-Dioden. Diese bewirken (in gewissen Grenzen), dass 
eine an einem Port anliegende Spannung zum Versorgungspin abgeleitet 
wird, wodurch der AVR schonmal Betriebsspannung (wenn auch "von hinten") 
bekommt. Wenn Du nun noch den Strom in den I/O-Pin mit einem (Serien-) 
Widerstand begrenzt, dann hält der AVR das auch mal aus, ohne gleich 
Schaden zu nehmen. Und wenn Du dann noch (per Fuse) BOD einschaltest, 
kann sich der AVR auch bei langsamem Hochfahren der Versorgungsspannung 
nicht festfahren, da sein Reset verzögert wird, bis die 
Versorgungsspannung einen (per Fuse einstellbaren) Level (BOD-Level) 
überschritten hat.

Deine Probleme können aber auch durch fehlende (oder falsche) 
Abblock-Kondensatoren oder einfach durch schlechtes Platinendesign 
verursacht werden. Falls Dein AVR mit Quarz läuft, könnte die CKOPT-Fuse 
Abhilfe bringen. Falls Deine Platine einen Spannungsregler hat, solltest 
Du überprüfen, dass dieser nicht schwingt. Es sollte auch kein größerer 
Elko hinter dem Spannungsregler sein.

...

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke für den Hinweis. Tatsächlich lag die Ursache in einem simplen 
programmierfehler, das Programm ist einfach an die falsche stelle 
gesprungen, hab ich bei Copy&Paste wohl übersehen :-/ Auf jedenfall 
funktioniert es jetzt ganz einwandfrei ohne serienwiderstand oder 
sonstiges.

Die Schaltung ist übrigens auf einem Testboard aufgebaut :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.