Forum: Mikrocontroller und Digitale Elektronik AVR Mega32 unkontroliertes verhalten


von Dirk (Gast)


Lesenswert?

Hallo,
ich sitzt nun seit Stunden dran und komme nicht hinter das Problem.

Ich benutzt einen AVR Mega 32 und lasse damit einen Motor laufen.
Was der Motor machen soll kommt über die Serialschnittstelle.

So weit so gut das Programm ( C - Code )läuft auch mal 2 Sekunden mal 5 
Minuten ohne aussetzer.

Im ICE sehe ich:
- das mir der Y Pointer weg läuft.
- der Interrupt sich selbstständig ausschaltet.
- Speicher beschrieben wird der nicht benutzt wird.
- der Stack wird manchmal falsch ausgelesen (main wird verlassen).

Das ist alles eigentlich vollkommen unmöglich und es liegt auch kein 
Compiler Fehler vor.

Ich arbeite seit Jahren mit diesem Prozessor ( & Compiler) aber sowas 
ist mir noch nicht untergekommen.

Die Spannung ist stabil bei 5 Volt.
2., 3. und 4. Prozessor haben das gleiche verhalten.

Hat jemand eine Idee was das sein kann?

Viele Grüße, Dirk

von Michael Wilhelm (Gast)


Lesenswert?

Zu kleinen Stack eingerichtet?

MW

von J. K. (rooot)


Lesenswert?

Vllt ist der Ram voll?

somit wird der Stack überschrieben und das Programm spielt verrückt

von Dirk (Gast)


Lesenswert?

128 Byte sollten reichen für ein Programm was nur 2 Unterfunktionen hat 
und einen Interrupt.

Hatte ich aber auch schon geprüft.

von Dirk (Gast)


Lesenswert?

Ich habe nur 100 Byte RAM benutzt und dann noch die 128 für den Stack.

Da liegt nicht der Fehler, das ist schon alles überprüft.

von J. K. (rooot)


Lesenswert?

kannst du den Code posten? so kann man nur raten

von fubu1000 (Gast)


Lesenswert?

Hallo,
zu kleinen Stack eingerichtet glaub ich nit, der wächst von RAM Ende 
nach oben. Da kann nix zu klein sein.
Es könnte natürlich der Stack in reservierten Ram Bereich von deinem 
Programm reinlaufen.
Aber ohne deinen Code kann man nur raten, poste ihn doch einfach mal.

GRUSS

von Dirk (Gast)


Lesenswert?

Ich glaube das Hier keiner was mit dem Source Code anfangen kann.
Darf ich auch nicht veröffentlichen nicht mal auszugsweise.

Ist ganz simple, Main mit Schleife und einer Auswertung der empfangenen 
Daten.
Interrupt (40us) mit SIO abfrage und Motor Treiber (PWM auf 8 Port 
Pins).
Der Interrupt ist auch nicht zulang!

von fubu1000 (Gast)


Lesenswert?

Dirk wrote: Ich glaube das Hier keiner was mit dem Source Code anfangen 
kann.

HUST.

Dirk wrote: Darf ich auch nicht veröffentlichen nicht mal auszugsweise.

Wer soll dir dann helfen können ?

Gruss

von Dirk (Gast)


Lesenswert?

Tja eine gute Frage.
Am Code liegt es nur nicht!

Ich wollte doch nur wissen, ob jemand so ein verhalten kennt und woher 
es bei Ihm herkam.

von Google Nutzer (Gast)


Lesenswert?

vom schlechten Code ...

von Michael H* (Gast)


Lesenswert?

oder hast du vielleicht hardware-probleme durch die pwm am motor? 
freilaufdiode? vielleicht mal galvanisch getrennt treiben, oder 
sonstigen kram anstellen?

von Dirk (Gast)


Lesenswert?

Ha Ha Ha! Erfahrung damit gemacht?

So ich habe das Problem gefunden, ist natürlich nicht im Code.
Das hatte ich ja schon mehrfach ausgeschlossen.

Ist EMV der Prozessor ist der letzt Müll für DIESE Anwendung.
Schade ich setzt ihn nun schon seit Jahren ein (ca. 30 Tausend Stück bei 
ca. 25 Projekten).

Und nun so was, OK Dumm gelaufen kommt ein Anderer rein.
Mehr abblocken geht nicht und noch weiter abschirmen ist auch nicht 
drin.

von Moi (Gast)


Lesenswert?

Ich würde den Motor mal abklemmen und stattdessen eine Lampe 
anschließen. Dann mal schauen, ob das gleiche Verhalten zu beobachten 
ist. (Evtl. auch mal ganz ohne Last)

von Moi (Gast)


Lesenswert?

Ah, zeitgleich gepostet...

Also das halte ich für ein Gerücht, dass man den uP nicht genügend 
schützen kann. Spätestens ein Optokoppler zwischen Ausgang und Motor 
sollten abhilfe schaffen.

von Michael H* (Gast)


Lesenswert?

so isses. oder treibst du etwa 10kW motoren?
vielleicht geht wirklich nicht mehr blocken, aber zum beispiel 
supressordioden, oder dioden in reihe und dazwischen den eingang. und 
mit dem optokoppler dürfte dann auch der rest vom spaß vorbei sein.
wenn du die selbe versorgungsspannung für motor und atmel benutzt, 
solltest du vllt für den atmel einen extra linearregler mit schön dick 
tiefpass und puffer spendieren.

von Dirk (Gast)


Lesenswert?

Bauart bedingt kann ich da nicht viel machen.
Ich sollte einen alten 8052 ersetzen und gleichzeitig die Firmware auf C 
portieren. Nun der 8052 hatte in der Umgebung keine Probleme.

Ich bin gerade dran das ganze noch besser einzukreisen, vielleicht habe 
ich doch noch Glück und finde eine Akzeptable Lösung.

Danke für die Ratschläge.

von Freizeitbastler (Gast)


Lesenswert?

Vllt kann die automotive Version des Mega mehr ab?

von Volker (Gast)


Lesenswert?

Oder betreibst du den AVR mit einem ext. Quarz > 8MHz und hast CKOPT 
nicht gesetzt?

von Dirk (Gast)


Lesenswert?

Kann das nicht jemand mal früher sagen / fragen.

Ich hatte meine Standard Einstellung drin. Benutze sonnst nur maximal 4 
MHz.

Jetzt läuft es schon viel viel besser. Bin nur noch nicht überzeugt das 
das alles ist.

DANKE, Ihr habt meinen Tag gerettet.

von Michael H* (Gast)


Lesenswert?

Dirk wrote:
> Kann das nicht jemand mal früher sagen / fragen.
=)
> Ich hatte meine Standard Einstellung drin. Benutze sonnst nur maximal 4
> MHz.
>
> Jetzt läuft es schon viel viel besser. Bin nur noch nicht überzeugt das
> das alles ist.
bestimmt nicht, denn die emv-störlinge sind ja trotzdem da. du kannst 
sie jetzt nur schlechter "detektieren" =)

> DANKE, Ihr habt meinen Tag gerettet.
einmal volltanken, bitte ^^

von Dirk (Gast)


Lesenswert?

Da die Störungen sich aber nicht mehr so bemerkbar machen, kann ich aber 
auch den großen abschirm und abblock Kram verzichten (zum Glück).

Ich setzte zur Sicherheit noch ein paar Kondensatoren und wenn das Ding 
bis Montag durch läuft, gibt es am Montag den großen EMV Hammer von 
außen.
Mal sehen vielleicht gönne ich mir auch morgen schon mal den Spaß.

Ist doch immer wieder verwunderlich, über was man bei einem Projekt so 
stolpern kann.

von Stefan M. (stefan-mueller)


Lesenswert?

Wenn es wirklich an den Störungen liegt nimm einen PIC, die sind 
teilweise auch in Frequenzumformern verbaut und wenns da nicht 
Störverseucht ist weiß ich auch nicht. :)
Die PICs sind sehr robust die bekommt man so schnell nicht zum Absturz 
durch Störungsprobleme. Entkopple deine Last eventuell auch noch mit 
einem Optokoppler und Verbinde die Massen von Steuer und Lastkreis an 
genau EINER Stelle dann solltest du Ruhe haben.

Die üblichen 100nF-Abblockkondensatoren am uC hast du dran oder? 
Eventuell die Betriebsspannung mit einem LC-Filter von Störungen 
befreien.

Brown-Out auch anstellen (!) verhindert zumindest daß der uC mit Mist 
weiterrechnet.

Stefan

von Dirk (Gast)


Lesenswert?

So habe heute mal ein paar Tests gemacht.

Die Steuerung kann eine Heimzulassung bekommen. Hatte schon gedacht das 
ich nicht mal eine Industrie Zulassung schaffen würde.

Weder ein Burst auf der Versorgungsspannung noch ein ESD Test bringt den 
AVR oder den Rest zum erliegen. Die anderen Test sind auch alle im 
Normbereich.

War nur die Dummheit mit den Fuses, ein AVR ist auch in dieser Anwendung 
OK.


In einem Anderen Projekt hatte ich aber mit dem AD Wandler Probleme bei 
der HF Einstrahlung. Ist also doch manchmal nicht die beste Wahl, haben 
dann einen Mitsubishi genommen.

von Unk (Gast)


Lesenswert?

>Schade ich setzt ihn nun schon seit Jahren ein (ca. 30 Tausend Stück bei
>ca. 25 Projekten).

>Ist also doch manchmal nicht die beste Wahl, haben
>dann einen Mitsubishi genommen.


Masse ist eben nicht Klasse. Damit meine ich nicht den Prozessor.

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.