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


von Paul H. (powl)


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

von Andreas K. (a-k)


Lesenswert?

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

von Paul H. (powl)


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

von Paul H. (powl)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Paul H. (powl)


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

von Philipp B. (philipp_burch)


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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

von Paul H. (powl)


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

von Hannes L. (hannes)


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.

...

von Paul H. (powl)


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 :-)

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.