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!)
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.
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 ;-)