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
Mit externen Massnahmen wie hinreichend grossem Serienwiderstand oder aktiver Trennung des Portpins von seinem Signal (FET, Optokoppler) lässt sich das lösen.
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
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
>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.
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
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.
Übrigens: AVRs haben interne Pullups, also mach Dir darüber mal keine Gedanken. Diese kann man ein- und ausschalten.
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
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. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.