mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Mega32 unkontroliertes verhalten


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu kleinen Stack eingerichtet?

MW

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vllt ist der Ram voll?

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

Autor: Dirk (Gast)
Datum:

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

Hatte ich aber auch schon geprüft.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du den Code posten? so kann man nur raten

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Google Nutzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vom schlechten Code ...

Autor: Michael H* (Gast)
Datum:

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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Moi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Moi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Freizeitbastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vllt kann die automotive Version des Mega mehr ab?

Autor: Volker (Gast)
Datum:

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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ^^

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Müller (stefan-mueller)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Unk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.