www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XC167 Reset-Problem


Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Experten !
Wir haben ein Problem beim Manuellen-Reset des XC 167CI-32F40F BB :
Lösen wir einen Reset manuell aus, kommt es gelegentlich vor, daß der 
Prozessor nicht wieder anläuft.
RSTIN ist <LOW> für mehr als 100 ms und geht auch richtung wieder auf 
<HIGH>.
Falls der Chip nicht anläuft, ist auch der RSTOUT auf <LOW>, was 
bedeutet, daß er sich weiterhin im RESET befindet, obwohl RSTIN nicht 
mehr aktiv ist.
Auch erneuetes Reseten bringt nichts mehr; es muß die Spannung 
ausgeschaltet werden.
Wir wissen keinen Rat mehr !

Autor: uCler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
laeuft der Oscillator durch (hat der 167 sowas wie einen clkout)?

Autor: B. Jue (bjue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte die Lage besser beurteilen, wenn man ein Schaltbild vom 
Prozessor und seiner Peripherie hätte (Resetbeschaltung , Oszillator, 
Starten aus dem internen oder externen Flash....)!
Ist es wirklich sicher, daß er nicht anläuft oder kann es sein, daß er 
sich irgendwo umherteibt? JTAG-Debugger oder Logic Analyzer verfügbar?

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Oszillator läuft (8MHz,XTAL1/XTAL2)  aber am CLKOUT ist im 
Fehlerfall
kein Signal mehr.
Vor dem Reset sind dort die 40 MHz der PLL zu sehen.

Zusatzinfo:
Die Anwendung besteht eigentlich aus 2 Teilen:
Einen Loader im internen Flash und die
eigentliche Aplikation im externen Flash.
Es wird beim Reset immer der Loader gestartet, der prüft im ext. Flash 
ob die Aplikation vorhanden ist und startet diese.
Starten wir die Aplikation nicht, verbleiben also im Loader,
tritt der Fehler nie auf.

Übrigens : Der Fehler tritt nur beim Hardwarereset(Warmstart) auf, eine 
Reset verursacht durch den Watchdog, Trap0 oder Kaltstart funktioniert 
immer.

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was!

Im Fehlerfall funktioniert auch der angeschlossene JTAG-Debugger nicht 
mehr!

Schaltbild folgt etwas später !

Autor: uCler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist denn der Stand der Entwicklung? Hat das vorher schonmal 
funktioniert und jetzt nicht mehr? Hört sich irgendwie nach Iniproblemen 
an.

Autor: Helmut (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier das Schaltbild.

Die frühere Version bestand aus dem C165-Prozessor.
Die funktionierte prima.

Die neue Version mit dem XC167 hat sich noch die anders verhalten.
Wurde aber auf den ULINK-Debugger von Keil geschoben, wir dachten, daß
der Debugger den Abflug macht.
Das Problem ist aber unabhängig vom Debugger.

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Teilen des RAMs stehen noch Daten (Erkennungsstring Loader <--> 
Applikation?).

Autor: Helmut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das RAM ist dabei unwichtig, die Kennung, daß eine Aplikation 
vorhanden ist, steht im Flash.
Noch mal zur Erinnerung:
Der Prozessor sthet tatsächlich noch im Reset. (RSTOUT = LOW)
Mir ist es ein Rätsel, woher der Prozessor bei einem Reset weiß, daß 
vorher die Aplikation im ext. Flash gestartet war.

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Prozessor sthet tatsächlich noch im Reset. (RSTOUT = LOW)

Es erfolgte noch kein EINIT Befehl, der Loader macht das für Dich. Dein 
Flash Startup Code wohl nicht.

Autor: B. Jue (bjue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Übrigens : Der Fehler tritt nur beim Hardwarereset(Warmstart) auf, eine
>Reset verursacht durch den Watchdog, Trap0 oder Kaltstart funktioniert
>immer.

Wie wird denn der Hardwarereset ausgelöst? Dabei befindet sich der XC167 
im externen Flash, wenn ich das richtig verstanden habe.
Wo steht die Interrupttabelle zu diesem Zeitpunkt? Es ist darauf zu 
achten, daß der Vector Segment Pointer (VECSEG) richtig steht!
Den gab es beim C165 ja noch nicht.

Würde mich interessieren, was nun die Ursache war....

Autor: Jens Räthe (tmaniac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wo kommen deine 2,5V her? Das finde ich in deinem Schaltbild nicht. Da 
hängt ein Kondensator zwischen 2,5V und GND, damit verletzt du beim 
Drück auf einen Resettaster die Bedingung das VDDI mindestens 1V größer 
als VDDP sein muss. Schaffe die Möglichkeit das sich dieser Kondensator 
beim HW-Reset entläd.

Sollte der RSTOUT beim EINIT umschalten oder schon beim Internen 
Resetzyklus, je nach dem wie es die Konfiguration will.

Autor: Jens Räthe (tmaniac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh da ist ein Fehler in meinem Post:
Es muss heißen "das VDDP mindestens 1V größer als VDDI sein muss"

Autor: Pattyman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leidensgenossen,

ja, auch ich kenne dieses Reset-Problem und habe auch schon viel Zeit 
mit der Ursachensuche verbracht. Das Problem ist sehr hartnäckig:
So habe ich gedacht, daß es mit dem internen PLL-Oszillator 
zusammenhängt und habe den externe Beschaltung des Quarz verfeinert.
Dann habe ich das Einschalten der Core-Spannung zur Peripherie-Spannung 
verzögert.
Dann habe ich die StartUp-Konfiguration (div. Widerstände) niederohmiger 
gemacht. - Alles ohne nennenswerten Erfolg. Irgendwann geht einem auch 
die Phantasie aus.
Schließlich habe ich eine Support-Anfrage an Infineon gerichtet und 
warte bis heute auf eine Antwort.

Was mich weitergebracht hat, war der Versuch die Zustände verschiedener 
Leitungen beim Einschalten zu messen. Als ich mit einer Meßspitze im 
JTAG-Stecker herumfingerte, war das Problem plötzlich weg!
Also, kurzum, der _TMRST ist im "Insider's Guide" nicht beschaltet. Ich 
meinte klüger zu sein und habe ein Pull-up verbaut. - Das hat auch die 
meiste Zeit gut funktioniert, aber eben nicht bei allen Platinen.
Dann habe ich den Pull-up entfernt, aber unbeschaltet ist der Ärger 
immernoch da.
Dann habe ich, entgegen jeder Logik, den _TMRST mit einem Pull-Down 
versehen und ... ja, das war's.

... bis heute. Jetzt tritt das Problem plötzlich wieder auf. Weniger 
stark, aber in einer Weise die nicht auslieferbar ist.

Das sind meine Erfahrungen, wer weiß mehr?

Autor: maestro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
_TMRST = 100k Pull-down
NMI    = 1K Pull-Up

Autor: B. Jue (bjue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann maestro nur Recht geben!
Auf einigen Infineon Boards hat der _TMRST Pulldown 10k.
Pullup am NMI ist natürlich auch ganz wichtig!
siehe Kapitel 1.3 in
http://www.keil.com/dd/docs/datashts/infineon/xc16...

Autor: Stefan Ditze (sd123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Der Thread ist zwar schon älter, aber wir beobachten dasselbe Verhalten 
momentan mit einem XC2287 Controller.
Nach einem Reset startet der µC nicht mehr korrekt, das geflashte 
Programm wird nicht geladen. Es wurden schon große Anstrengungen 
unternommen um das Problem einzugrenzen und zu beheben, jedoch 
erfolgreich.

Deswegen: Gibts es irgendwelche Erkenntnisse aus dieser Diskussion? Hat 
jemand die Reset-Probleme bei den Xc164/XC167 erfolgreich gelöst und 
könnte mir sagen auf welche Art und Weise?

Autor: ridiho44 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde noch folgende Lösungsmöglichkeiten in die Runde werfen:

-> Ist die PLL-Konfiguration richtig? Hier wird im Datenblatt auch 
zwischen
Quarz und Oszillator unterschiedlich konfiguriert.
Auf jeden Fall die gesamte PLL-Konfigurationskette durchprüfen, ob alles 
stimmt (alle MUL/DIVs/Ranges und was noch so alles zu konfigurieren 
ist).

-> Benutzt Ihr alle Quarze zur Takterzeugung? Die Anschwingreserve 
könnte nicht ausreichend sein. Mag sein, dass der Quarz nicht schnell 
genug anschwingt. Quarze vermessen lassen kann man beim Quarzhersteller, 
wenn man hier eine gute "Beziehung" hat.
Abhilfe: Mit einem Oszillator probieren. Ich betreibe einen XC167CI mit 
einem 16MHz-Oszillator, ohne diesen Fehler jemals gehabt zu haben.

-> Wie schon beschrieben, den NMI mit 10k gegen 5V ziehen.

-> Den Pin für die Auswahl Start internes/externes Flash mittels 
PullUp(10k)-/PullDown(0R?)-Widerstand festlegen. Pin 20.5 mit 10k gegen 
5V, wenn Du aus dem internen Flash starten möchtest.

-> Ist der MAX707 in der genutzen Variante geeignet? Spannungspegel der 
Überwachung? Reset-Länge? Ich nutze eine STM1811-Variante.

Im Allgemeinen ist der XC167 ein sehr "anwenderfreundlicher" µC.
Es können aber zahlreiche Fehler sein, die zu dem beschriebenen Fehler 
führen. Wir müssen aber erst mal die Basics klären.

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.