Startproblem µC

OP #2955050
Lesenswert?

Hallo,

ich habe das Problem, dass mein Controller gelegentlich nicht startet.

Normalerweise passiert beim Start Folgendes:

Der Controller kommt ca. 180ms nach Anlegen der Versorungsspannung aus 
dem Reset. Über die externen Pull-Down Widerstände am Datenbus 
(Controller hat intern hochohmige pull up Widerstände die bei fehlendem 
pull down Widerstand die Leitung auf 5V ziehen) werden während der 
Start-up Phase bestimmte Parameter konfiguriert (Clock, Bus Mode, Boot 
Mode etc..). Anschliessend wird das Progamm aus dem Flash geladen usw. . 
Klappt normalerweise auch aber hin und wieder, grob geschätzt 1 mal pro 
100 Einschaltvorgänge, fährt der Controller nicht hoch.

Wenn der Fehler auftritt messe ich auf denjenigen Datenleitungen die 
über 6.8k auf Masse liegen ca. 3.9V was dazu führt, dass sie beim Start 
mit '1' eingelesen werden und meine Startkonfiguration falsch ist.

Die Frage ist jetzt, wo kommen die 3.9V her, d.h. welcher der 
Busteilnehmer treibt den dafür nötigen Strom? Die Chip Select Leitungen 
der beiden Speicherbausteine sind high, also eigentlich sollten deren 
Pins hochohmig sein. Die Pins am Controller sind während der Start-up 
Phase Eingänge, als kann es daher auch nicht kommen.

Mir gehen hier die Ideen aus aber vielleicht hat ja jemand einen Tip.

Gruß
Chris
Angehängte Dateien:
Gast #2955243
Lesenswert?

Christian H. schrieb:
> Hallo,
>
> ich habe das Problem, dass mein Controller gelegentlich nicht startet.
>
> Normalerweise passiert beim Start Folgendes:
>
> Der Controller kommt ca. 180ms nach Anlegen der Versorungsspannung aus
> dem Reset.

Klingt sehr lange. Ist das so gewollt?

> Über die externen Pull-Down Widerstände am Datenbus
> (Controller hat intern hochohmige pull up Widerstände die bei fehlendem
> pull down Widerstand die Leitung auf 5V ziehen) werden

Das ist so nicht richtig. Hier wird von einem "weak pullup current" 
gesprochen. Der ist im Datenblatt auch halbwegs spezifiziert. Ist aber 
nicht dafür da, um einen stabilen Betriebszustand zu garantieren.
Dafür ist der Strom einfach zu klein und die Schmutznebenwiderstände zu 
groß. Sind Deine Konfigurations-Widerstände auch bei PullUp vorgesehen?

> während der
> Start-up Phase bestimmte Parameter konfiguriert (Clock, Bus Mode, Boot
> Mode etc..). Anschliessend wird das Progamm aus dem Flash geladen usw. .
> Klappt normalerweise auch aber hin und wieder, grob geschätzt 1 mal pro
> 100 Einschaltvorgänge, fährt der Controller nicht hoch.

Weißt Du, in welchem Modus er sich dann befindet? Hast Du noch weitere 
Messungen durchgeführt? Betriebsspannungen stabil? Reset und Clocks 
stabil?

> Wenn der Fehler auftritt messe ich auf denjenigen Datenleitungen die
> über 6.8k auf Masse liegen ca. 3.9V was dazu führt, dass sie beim Start
> mit '1' eingelesen werden und meine Startkonfiguration falsch ist.
>
> Die Frage ist jetzt, wo kommen die 3.9V her,

Genau das ist die Frage. Sollte ja kein Problem sein, während der Fehler
gerade auftritt, die entsprechenden Leitungen abzutrennen. Hier scheinen 
zwei PushPull-Ausgänge gegeneinander zu arbeiten. Die 6k8 spielen da 
keine Rolle. Ein Ausgang macht High, der andere Low und der mit High 
scheint mehr
Strom treiben zu können.

An welchen Pins tritt dieser Fehler denn auf? An allen verbundenen? Sind 
dann alle Pegel ~3,9V oder einige auf Masse oder 5V?

Sind die 6k8-Widerstände Einzelwiderstände? SMD?

> d.h. welcher der
> Busteilnehmer treibt den dafür nötigen Strom? Die Chip Select Leitungen
> der beiden Speicherbausteine sind high, also eigentlich sollten deren
> Pins hochohmig sein. Die Pins am Controller sind während der Start-up
> Phase Eingänge, als kann es daher auch nicht kommen.

Ist richtig so.

> Mir gehen hier die Ideen aus aber vielleicht hat ja jemand einen Tip.

Ja, Du kommst leider um weitere Messungen nicht herum.
Ohne Schaltplan wird man auch zusätzlich keine versteckten Fehler im 
Design finden.

Ich habe jahrelange Erfahrung mit dem XC und noch nie Probleme dieser 
Art.
Gast #2955254
Lesenswert?

Die Konfigurations-Widerstände werden ja nur dafür benötigt, dass
Du aus einem externen Flash booten kannst.

Nutzt Du den XC in einer Single-Chip-Konfiguration, brauchst
Du nur Pin P20.5/\EA mittels 10k auf 5V zu ziehen.

Der Rest wäre dann reine Software-Konfiguration während der Init-Phase.
OP #2959262
Lesenswert?

svf35tgg schrieb:
> Christian H. schrieb:
>> Hallo,
>>
>> ich habe das Problem, dass mein Controller gelegentlich nicht startet.
>>
>> Normalerweise passiert beim Start Folgendes:
>>
>> Der Controller kommt ca. 180ms nach Anlegen der Versorungsspannung aus
>> dem Reset.
>
> Klingt sehr lange. Ist das so gewollt?

Ja, ist über einen Reset Baustein gelöst. Maxim ...

Die 180ms sind entsprechen der Zeitkonstante vom Reset IC

>
>> Über die externen Pull-Down Widerstände am Datenbus
>> (Controller hat intern hochohmige pull up Widerstände die bei fehlendem
>> pull down Widerstand die Leitung auf 5V ziehen) werden
>
> Das ist so nicht richtig. Hier wird von einem "weak pullup current"
> gesprochen. Der ist im Datenblatt auch halbwegs spezifiziert. Ist aber
> nicht dafür da, um einen stabilen Betriebszustand zu garantieren.
> Dafür ist der Strom einfach zu klein und die Schmutznebenwiderstände zu
> groß. Sind Deine Konfigurations-Widerstände auch bei PullUp vorgesehen?

Die internen pullup sind m.E. explizit dafür vorgesehen. Es gibt ein 
Application Sheet von Infineon in dem für externe pull downs ein Wert 
zwischen 5.1k und 8.6k empfohlen wird, eben um gegenüber den internen 
pullup Widerständen einen ausrecihend niedrigen low Pegel zu erzeugen. 
Wir benutzen das seit mehrern Jahren in etlichen Designs und es gab nie 
ein Problem.


>> während der
>> Start-up Phase bestimmte Parameter konfiguriert (Clock, Bus Mode, Boot
>> Mode etc..). Anschliessend wird das Progamm aus dem Flash geladen usw. .
>> Klappt normalerweise auch aber hin und wieder, grob geschätzt 1 mal pro
>> 100 Einschaltvorgänge, fährt der Controller nicht hoch.
>
> Weißt Du, in welchem Modus er sich dann befindet? Hast Du noch weitere
> Messungen durchgeführt? Betriebsspannungen stabil? Reset und Clocks
> stabil?
>
>> Wenn der Fehler auftritt messe ich auf denjenigen Datenleitungen die
>> über 6.8k auf Masse liegen ca. 3.9V was dazu führt, dass sie beim Start
>> mit '1' eingelesen werden und meine Startkonfiguration falsch ist.
>>
>> Die Frage ist jetzt, wo kommen die 3.9V her,
>
> Genau das ist die Frage. Sollte ja kein Problem sein, während der Fehler
> gerade auftritt, die entsprechenden Leitungen abzutrennen. Hier scheinen
> zwei PushPull-Ausgänge gegeneinander zu arbeiten. Die 6k8 spielen da
> keine Rolle. Ein Ausgang macht High, der andere Low und der mit High
> scheint mehr
> Strom treiben zu können.
>
> An welchen Pins tritt dieser Fehler denn auf? An allen verbundenen? Sind
> dann alle Pegel ~3,9V oder einige auf Masse oder 5V?
>
> Sind die 6k8-Widerstände Einzelwiderstände? SMD?
>

Alle Datenbusleitungen die einen pulldown haben zeigen (im Fehlerfall) 
dieses Verhalten.
Alle Widerstände sind SMD (0603)

>> d.h. welcher der
>> Busteilnehmer treibt den dafür nötigen Strom? Die Chip Select Leitungen
>> der beiden Speicherbausteine sind high, also eigentlich sollten deren
>> Pins hochohmig sein. Die Pins am Controller sind während der Start-up
>> Phase Eingänge, als kann es daher auch nicht kommen.
>
> Ist richtig so.
>
>> Mir gehen hier die Ideen aus aber vielleicht hat ja jemand einen Tip.
>
> Ja, Du kommst leider um weitere Messungen nicht herum.
> Ohne Schaltplan wird man auch zusätzlich keine versteckten Fehler im
> Design finden.
>
> Ich habe jahrelange Erfahrung mit dem XC und noch nie Probleme dieser
> Art.
Gast #2959355
Lesenswert?

Christian H. schrieb:

> Der hält sowohl
> Controller als auch Flash für diese Zeit im Reset.

Na, dann ist doch alles Paletti.

Was passieren kann, und zwar wenn das Netzteil schwach auf der Brust 
ist: Im Augenblick nach dem Reset beginnt plötzlich eine höhere 
Stromaufnahme, und die Spannung bricht nochmals ein. Auf diese Weise 
hatte ich schon mal µC-Schaltungen, die dann so die ganze Zeit nur noch 
um den Reset herum "blinkten". Da hilft oft nur ein kräftigeres 
Netzteil, oder dessen Ausgangsimpedanz mit einem kräftigeren Ladeelko 
verbessern.

Christian H. schrieb:

> Über die externen Pull-Down Widerstände am Datenbus
> (Controller hat intern hochohmige pull up Widerstände die bei fehlendem
> pull down Widerstand die Leitung auf 5V ziehen) werden während der
> Start-up Phase bestimmte Parameter konfiguriert (Clock, Bus Mode, Boot
> Mode etc..).

Wo hast du das her, daß an den Bus Pulldown-Widerstände müssen? 
Modernere µC brauchen das in der Regel nicht mehr, und wenn, hat man 
dort eher Pullup-Widerstände. Bei älteren NMOS-Controllern und 
NMOS-Speicherbausteinen war das nötig, weil diese Sinkströme besser 
treiben konnten als Sourceströme. Und falls der Bus durch mehrere 
Bausteine parallel belastet ist, nimmt man Busleitungstreiber.
OP #2959503
Lesenswert?

>Wo hast du das her, daß an den Bus Pulldown-Widerstände müssen?

Aus dem Datenblatt :)  Über die Beschaltung lässt sich der Controller 
konfigurieren.

>Was passieren kann, und zwar wenn das Netzteil schwach auf der Brust
>ist: Im Augenblick nach dem Reset beginnt plötzlich eine höhere
>Stromaufnahme, ...


Nein, der Fehler tritt direkt beim Einschalten auf und nicht erst beim 
Reset

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren