Guten Tag Ich hab nun schon einige Schaltungen mit AVRs aufgebaut und habe da ein immer wiederkehrendes Problem: Die Dinger "stürzen ab". Bzw springen sie an eine undefinierte Stelle im Programm. Ein Beispiel: Mein ASURO (kleiner Kaufroboter) wird mit einem Selbsttestprogramm ausgeliefert. Nachdem alles aufgebaut und getestet war, flashte ich ihn mit meiner eigenen Software. Er läuft auch, bis man eines seiner Räder wie wild dreht :) Denn dann springt das Programm irgendwo hin und ist wieder bei Teilen des Selbsttests die nicht überschrieben wurden. Auch in KFZ-Anwendungen hatte ich oft dieses Phänomen. Da dimmt dann eben die Innenraumbeleuchtung nicht mehr sondern bleibt einfach stehen. Die Interupts laufen ordnungsgemäß weiter. Denn die PWM funzt dann noch. Derzeit habe ich eine I2C/TWI-Anwendnug mit viel zu langem Kabel, über welches auch die Stromversorgung kommt. Ich vermute, dass sich immer wieder irgendwelche Störungen auf die Versorgungsspannung überlagern, die dann den ARV ausrasten lassen. Den Entkopplungskondensator hab ich natürlich drin. Auch nach bestem Wissen in Sachen Layout-Design. Und die Brown-out detection habe ich auch schon bei 4V aktiviert. Denn ein Reset bei schlechter Versorgung wäre mir lieber als ein Stillstand. Und dennoch hängt sich der Mega16 immer wieder (manchmal erst nach Stunden) auf. Also was bitte ist das Problem und was kann ich dagegen tun?
Aktiviere mal den Watchdog und lösche dessen Timer zyklisch in Deinem Programm. Springt der Controller an nicht definierte Stellen oder hängt sich auf, sorgt der Watchdog für einen definierten Reset. >Denn dann springt das Programm >irgendwo hin und ist wieder bei Teilen des Selbsttests die nicht >überschrieben wurden. Vor dem Flashen eigener Programme sollte eigentlich immer ein Chip-Erase ausgeführt werden. Sollte der ASURO mit Bootloader arbeiten, gilt dies natürlich nicht ;-)
Ok, das ist ne brauchbare Notlösung. Aber was ist der Grund für dieses Verhalten? Es ware ja auch nicht schön wenn man sich die Mühe macht eine Dimmer ins Auto zu basteln, der dann immer schlagartig aus geht. Der ASURO arbeitet mit Bootloader.
Ach kommt. Das kann doch nicht sein, dass das so ein seltenes Problem ist, dass niemand von Euch eine Antwort hat. Ich hatte mir erhofft dass es da ne einfache Filterschaltung gibt oder dass es reicht wenn man den AVR in ein Metallgehäse packt. Also bitte, nicht so zaghaft!
Das wahrscheinlichste ist, dass dein Versorgungsspannung mies ist. Meine AVR stürzen nämlich nicht ab. Allerdings betreibe ich sie auch nicht im Auto. Im Auto bzw. mit Motoren an der Versorgungsspannung braucht es schon wesentlich mehr Aufwand um die Versorgungsspannung sauber zu kriegen.
Mit dem "L200", einem einstellbarem Festspannungsregler. (Davon hab ich hier noch ein paar rum liegen) Oder mit "78L05 SMD" wenn ich nicht so viel Strom brauche.
hm ok und wie glättest du die spannung? hast du ein 100nF kondensator am AVR? dann solltest du vor und hinterm Spannungsregler noch Kondensatoren hinhängen. Wenn du ein Oszi hast kannst du ja mal den genauen Spannungsverlauf ankucken und was für störfrequenzen du hast! Wenn das nix bringt dann kannst du noch ein tiefpass filter zwischen AVR und Spannungsregler hängen. (Dazu findest du im Internet einiges) Allgemein wenn du solche "empfindlichen" Schaltungen in der Nähe von störungen betreibst wäre ein Abgeschirmtes Gehäuse bestimmt nicht falsch! In deim Auto könnte es sein das dein Handy das verursacht. mfg Karl
Die 100nF am AVR sind übrigens nicht dafür da, den AVR vor externen Störungen zu schützen, deren Hauptaufgabe ist, ihn vor Störungen zu schützen, die er selbst erzeugt, z.B. bei internen Schaltvorgängen, Port-Änderungen, etc. Versuch mal die Betriebsspannung durch ein LC-Glied zu glätten, und halte die Leistungsteile weit weg vom µC. Motor-Masse und µC Masse nur an einem Punkt verbinden, etc...
Hast Du schon mal an den Brown-Out-Reset gedacht bzw. damit probiert? Mir riechen speziell die Jumps "ins Nirwana" ganz heftig nach Irrtümern infolge zwischenzeitlich zu niedriger VCC. Gruß Johannes
Sorry, ich hatte nicht weit genug zurückgelesen - daran gedacht hattest Du schon. Trotzdem bleibt meine Frage, ob Du damit auch schon probiert hast. Ich meine, Du kannst im MCUSR ja auslesen, ob ein und wenn ja welcher Reset abgelegen hat... Gruß Johannes
es liegt definitiv nicht am AVR selbst. Ich setze die in Autos und auch in Industrieumgebungen ein, beides nicht gerade Kuschelwiesen für empfindliche Elektronik. Da gibts keine Probleme. Es immer wieder dasselbe: richtige Schaltung, richtiges Layout, tolerante Software. Problematisch waren früher die classic-AVR (und aus der Zeit stammt wohl auch das Vorurteil, dass PICs damit besser fertig werden), mit den Megas sieht es viel besser aus. Hatte mal eine Messachaltung an einer 400kw elektrischen Bremse, das war mit dem 90S8535 eine einzige Katastrophe, ist nie richtig gelaufen :-) Hauptprobleme sind die Stromversorgung (wobei 1N4007, 100µ, 78L05, 4µ7, 100n selbst im Auto schon ziemlich gut funktioniert), Drosseln und TVS-Dioden bewirken fast Wunder.
Ein Oszy hab ich leider nicht. Die Brown-out-detektion hab ich per fuse-Bits auf 4V eingestellt und aktiviert. Nur wird der Reset ja gar nicht ausgelöst. Die Kondensatoren sind natürlich auch drin. Nur derzeit ist, wie gesagt, noch ein langes Kabel dazwischen. Könntet ihr mir die Vorschläge Tiefpass, Drossel und TVS-Diode noch etwas näher erläutern? Die Drosseln kommen doch mit 47µH in Reihe vor und nach dem AVR. (Richtig?) Würden die da nicht Hochohmig werden und mir meine Spannung weiter senken? Zum Tiefpass findet man zwar viel im Internet, aber nicht als Entstörung für die Spannungsversorgung. Wie wird der denn dimensioniert und wie viel Verluste bleiben an ihm hängen? Die TVS-Diode wird als Blitzschutz (???) beworben. Trägt die denn zur Stabilität bei?
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23 so sollte das zumindest im auto kein problem sein... kannst du dir die versorgungsspannung vlt. mit nem oszi anschaun? du wirst bestimmt erschrecken!!! hatte noch nie solche probleme mit den AVR's (obwohl... doch: ein AT90S1200 an nem netzteil mit sehr hoher restwelligkeit hat absolut nicht getan was er sollte. mit entsprechender beshaltung liefs dann doch einigermasen stabil. Inzwischen mach ein Tiny2313 seinen dienst in der schaltung, keine probleme!)
> kannst du dir die versorgungsspannung vlt. mit nem oszi anschaun? du > wirst bestimmt erschrecken!!! Oh, StraBa-Netz ist noch viel spannender :-)
Ach wie peinlich: > Würden die Drosseln da nicht Hochohmig werden und mir meine Spannung > weiter senken? Nein, es ist ja genau anders rum. Mit sinkender Frequenz werden die immer niederohmiger. (Man merkt es ist Feiertag :) ) Ich hab jetzt auf jeden Fall mal ein paar antike Drosseln aus der Ramschkiste eingelötet und bin jetzt sehr gespannt wie sich die Sache weiter verhält. Auf der Suche bei Reichelt nach geeigneter Neuware bin ich schon wieder voll überfordert :) 6 Kategorien! Woher soll ich denn wissen was ich da brauche? Da ich SMD bevorzugen würde, würde ich die hier nehmen: http://www.reichelt.de/?SID=27lRASvKwQARsAAEh-LsQ2abd306274dba699bda6f11c52646308;ACTION=3;LA=2;GROUPID=3178;ARTICLE=10562 Sind die dafür gut oder muss es eine "Funkentstördrossel" sein? @ Johannes A. Wenn ich dann doch irgendwann mal ein Oszy hab, werde ich sofort einen Staßenbahn-Mast rauf klettern und mal gucken was du meinst.
Och, es reicht schon, mal in nem "Dienstwagen" mitzufahren und das Oszi einfach auf die 24V-Bordversorgung zu hängen :-o
Geh mal in die nehe von einem Amerteurefunkeantenne wenn der mit 750W Senderleistung und Morse arbeite. Da kannst dan die Led's im Morsecode blinken sehn
Marco, das ist zwar auch "witzig", aber halt noch kalkulierbare HF und damit immer noch harmlos gegen die Spikes, die auf dem internen 24V-Netz von Bahnen herumvagabundieren. Ich mein, da wirst Du schon mal mit 10-15kV Peaks von unter 100ns Dauer konfrontiert - da lacht die Qualle, oder so ;-)
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.