Forum: Mikrocontroller und Digitale Elektronik Startproblem µC


von Christian H. (jhetfield)


Angehängte Dateien:

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

von svf35tgg (Gast)


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.

von svf35tgg (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

Christian H. schrieb in Beitrag "Einschaltverhalten von SRAM IC's"
> Das Einzige was mir auffällt ist, dass VCC relativ langsam
> ansteigt (ca. 100ms von 0 auf 5V). Kann das ein Problem sein?

Lässt sich herausfinden: Eine Spannungsquelle testweise nicht so 
gemächlich einschalten, sondern fix.

von Christian H. (jhetfield)


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.

von Reset (Gast)


Lesenswert?

Christian H. schrieb:
> Der Controller kommt ca. 180ms nach Anlegen der Versorungsspannung aus
> dem Reset.

Wie ist das gelöst? Gibt es einen Supervisor Chip? Wenn nicht wird der 
langsame Anstieg der Versorgungsspannung für undefinierte Verhältnisse 
sorgen.

von Christian H. (jhetfield)


Lesenswert?

Ich benutze einen Max6843 mit 4.38V threshold. Der hält sowohl 
Controller als auch Flash für diese Zeit im Reset.

Der SRAM hat leider keine Reset, aber ein Chip Enable (low active), der 
hängt über einen pull up an VCC und wird mit Chip Select runtergezogen


http://www.datasheetcatalog.org/datasheet/maxim/MAX6342-MAX6345.pdf

von Wilhelm F. (Gast)


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.

von Christian H. (jhetfield)


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

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.