Forum: Mikrocontroller und Digitale Elektronik XC167 Reset-Problem


von Helmut (Gast)


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 !

von uCler (Gast)


Lesenswert?

laeuft der Oscillator durch (hat der 167 sowas wie einen clkout)?

von B. J. (bjue)


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?

von Helmut (Gast)


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.

von Helmut (Gast)


Lesenswert?

Noch was!

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

Schaltbild folgt etwas später !

von uCler (Gast)


Lesenswert?

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

von Helmut (Gast)


Angehängte Dateien:

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.

von Max Murks (Gast)


Lesenswert?

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

von Helmut (Gast)


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.

von Max Murks (Gast)


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.

von B. J. (bjue)


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....

von Jens R. (tmaniac)


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.

von Jens R. (tmaniac)


Lesenswert?

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

von Pattyman (Gast)


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?

von maestro (Gast)


Lesenswert?

Hallo,
_TMRST = 100k Pull-down
NMI    = 1K Pull-Up

von B. J. (bjue)


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/xc164cm-cs_delta.pdf

von Stefan D. (sd123)


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?

von ridiho44 (Gast)


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.

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.