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