Forum: Mikrocontroller und Digitale Elektronik R/C vor RESET-Eingang


von Erik (Gast)


Lesenswert?

Hallo, als Anfänger möchte ich mich gerne mehr mit der Materie 
Mikrocontroller auseinandersetzten.
Ich habe nun eine Schaltung mit Schieberegistern, die ein paar LEDs 
ansteuern. Damit möchte ich ein wenig üben.
Nun meine Frage:
Ich habe bisher gelernt, dass man den Reset-Pin des Controllers mit 
einem Widerstand an die Versorgungsleitung legt. Brauche ich das denn 
auch bei den Schieberegistern. Auch die besitzen einen Reset-Eingang.
Und brauch ich sonst noch zusätzliche Widerstände/Kondensatoren (außer 
die 100nF bei jedem Vcc/Gnd-Pärchen) um unerwünschtes Verhalten zu 
verhindern?
Ich würde mich über ein paar Antworten freuen.

LG Erik

von Kein Name (Gast)


Lesenswert?

Na ja, bei diesen Teilen ist "unerwünschtes Verhalten" nicht wirklich 
kritisch. Da kannst du auch erst mal drauf los experimentieren und erst 
nachfragen, wenn du den Grund für das unerwünschte Verhalten nicht 
heraus findest.

von Conny G. (conny_g)


Lesenswert?

@Kein Name:

Na toll, und dann bekommt er hier wieder Kloppe, weil er keine 
Abblockkondensatoren drin hat :-)

@Erik:

Am besten ist am konkreten Projekt zu lernen, also Schaltplan hier 
einstellen und hier Feedback einsammeln.

Generall sind die Abblockkondensatoren an den Spannungsversorgungen von 
ICs wichtig.
Oder z.B. am RESET-Pin, dazu gibt's aber App Notes von den uC 
Herstellern, die Dir sowas sagen, das muss man nicht einfach so wissen.

Das RESET-Pin legt man über einen Pullup an VCC, damit der Pegel 
definiert ist und nicht schwankt, wenn der Eingang "floatet" (also 
unbeschaltet ist).
Gleichzeitig macht man hier noch einen 100nF gegen GND um Störsignale 
auszufiltern.

Beim Schieberegister oder generell von Logik-ICs dieser Art - ist das 
mit dem RESET etwas anderes (RESET ist hier eine andere Funktion), da 
hängt es davon ab, welchen Pegel so ein Eingang haben soll, wenn der uC 
nicht aktiv ist, also die Schaltung gerade hochfährt oder der uC im 
Sleep oder was auch immer.
Dann würde der RESET des Schieberegister floaten, d.h. sein Status wäre 
nicht definiert (ebenso andere Eingänge des Schieberegisters) und Du 
könntest ein Flackern von LEDs erhalten, die da dran hängen.
Das muss man sich aber in der jeweiligen Schaltung überlegen, was das 
Verhalten sein soll, kann man nicht so pauschal sagen.

Generell: bei den Eingängen von Logik-ICs immer darüber nachdenken, ob 
man das Verhalten ohne Signal festlegen muss oder will.

Bei einem Schieberegister wie dem 74HC(T)595 gibt's:
- /SRCLR (= Reset / Clear)
-  SER (= Serial in)
-  Latch
- /OE (= Output enable)
-  RCLK  (= Latch)
-  SRCLK (= Read & Shift)

Was passiert hier, wenn der uC nicht da ist (in RESET oder Sleep oder 
Power-Up)?
Weiss man nicht.
Also:
- /SRCLR mit Pulldown auf GND
- /OE mit Pull-up auf VCC
Damit bleiben ohne Signal alle Werte auf "0" (/SRCLR auf GND) und die 
Ausgänge sind ausgeschaltet (/OE auf VCC).
Und damit tut in so einem Falle das Register: nichts und das willst du 
haben.

Oder bei der Ansteuerung von MOSFETs: dort hat man meistens einen 
Pulldown-Widerstand zwischen Gate und Source, damit ohne Signal der 
MOSFET garantiert aus ist.
Sonst könnte ein Motor (zum Beispiel) wild losdrehen, wenn der uC grad 
nicht da ist oder sein Ausgang nicht geschaltet ist.
Oder ein Licht daran flackert lustig.

von Kine (Gast)


Lesenswert?

Conny G. schrieb:
> Das RESET-Pin legt man über einen Pullup an VCC, damit der Pegel
> definiert ist und nicht schwankt, wenn der Eingang "floatet" (also
> unbeschaltet ist).
> Gleichzeitig macht man hier noch einen 100nF gegen GND um Störsignale
> auszufiltern.

Bei den meisten AVR wird der RESET-Pin schon mit internem Pullup auf auf 
Vcc gelegt. Steht irgendwo im Datenblatt. Falls die Schaltung trotzdem 
nicht ohne externem Pullup und 100nF gegen GND auskommt, sehe ich das 
so, das der Grund dafür herausgefunden werden muß. Blind diese 
Zusatzbeschaltung überall einzubauen halte ich nicht für empfehlenswert.

von Häsch Define (Gast)


Lesenswert?

Frühere µC wie ein Standard-8051 hatten im einfachen Fall nur ein 
RC-Glied am Reset-Pin. Wenn die Versorgungsspannung ausreichend schnell 
ansteigt, und während des Betriebes keine Mätzchen wie 
Spannungseinbrüche macht, dann geht das mal. Meine Eval-Boards haben 
alle nur das RC-Glied.

Modernere µC haben einen eingebauten Brownout-Detektor, so daß man da 
auch mal auf einen speziellen Reset-Baustein verzichten kann.

Bei Gatterbausteinen muß man halt nach seinen Kenntnissen schauen, ob 
und wie man sie vernünftig resetten kann, was die Bausteine selbst 
bieten und was nicht.

Vor einer Weile hatte ich ein Schieberegister aus einzelnen D-FF, die 
auch asynchrone RS-Eingänge haben, in LTspice. Ein RC-Glied am R-Eingang 
tat es da auch schön.

von Häsch Define (Gast)


Lesenswert?

Nachtrag:

Einmal hatte ich einen 8051, wo die Schaltung bei Stromeinschaltung nur 
noch flatterte, also gar nicht los lief. Das machte mir etwas 
Kopfzerbrechen, und ich machte Strommessungen.

Dieser 8051 brauchte für die Reset-Sequenz den doppelten Strom wie im 
Normalbetrieb. Konkret: Bei Stromeinschaltung wurde zwar durch das 
RC-Glied ein Reset ausgelöst, aber beim Verlassen des Resets arbeitet 
der µC dann intern eine Resetsequenz ab, wofür er mehr Strom braucht. In 
dem Augenblick brach die Versorgung immer wieder kurz ein, sodaß er 
wieder einen Hardwarereset am Pin macht. Das in Endlosschleife. Ein 
größeres C an RC-Glied löste das dann. Da wählte jemand eine um den 
Faktor 10 kleinere Zeitkonstante, als sie sonst in Beispielschaltungen 
üblich war.

Also wenn man nicht gerade ein Eval-Board mit einer Reset-Taste auf dem 
Tisch liegen hat, sondern eine Schaltung in einem Gerät, die zuverlässig 
sein soll, dann nimmt man da besser einen richtigen Reset-Baustein.

von Erik (Gast)


Angehängte Dateien:

Lesenswert?

Danke für eure Antworten! :)
Ich hab mal im Anhang einen Ausschnitt meiner Schaltung gepackt. Ich 
steuere mit dem Controller ein paar Schieberegister an, was haltet ihr 
davon?
Für Tipps bin ich dankbar :)

von HildeK (Gast)


Lesenswert?

"Häsch Define" hat ja sehr schön beschrieben, was einem so alles 
begegnen kann.
Zudem kann es sein, dass einer der Bausteine einen synchronen Reset hat 
und man mit der Resetfreigabe warten muss, bis z.B. der externe oder 
interne Oszillator sauber läuft.
Ein RC-Glied kann zwar in den meisten Fällen ausreichend sein, aber 
macht die Schaltung natürlich abhängig von der Anstiegszeit der 
Versorgungsspannung. Außerdem werden beim RC-Glied nicht zuverlässig 
kleine und kurze Spannungseinbrüche erkannt. Es muss bei RC auch 
gewährleistet sein, dass die spezifizierte Anstiegszeit für den Pin 
eingehalten wird.

Wirklich seriös für den Reset ist daher nur ein externer Resetbaustein, 
der schon weit unterhalb der nominalen Spannung selber funktioniert, 
oberhalb der minimalen Spannung des Prozessors ein Zeitglied startet und 
dann erst nach einer Verzögerung den Reset freigibt.

von Conny G. (conny_g)


Lesenswert?

HildeK schrieb:
> Wirklich seriös für den Reset ist daher nur ein externer Resetbaustein,
> der schon weit unterhalb der nominalen Spannung selber funktioniert,
> oberhalb der minimalen Spannung des Prozessors ein Zeitglied startet und
> dann erst nach einer Verzögerung den Reset freigibt.

Verunsichert mal den armen Erik nicht so. Wer verwendet denn schon einen 
Reset-Baustein.

von Kein Name (Gast)


Lesenswert?

> Wer verwendet denn schon einen Reset-Baustein.

Wir alle :-)  Seit so etwa 20 Jahren ist dieser Mechanismus direkt im 
Controller eingebaut.

von Conny G. (conny_g)


Lesenswert?

Kein Name schrieb:
>> Wer verwendet denn schon einen Reset-Baustein.
>
> Wir alle :-)  Seit so etwa 20 Jahren ist dieser Mechanismus direkt im
> Controller eingebaut.

:-)) Dann ist die Welt ja wieder in Ordnung.

von Erik (Gast)


Lesenswert?

? :-D
Heißt das jetzt ichc kann Vcc direkt anschließen oder ist die Schaltung 
so O.K. ?  :-)

von Conny G. (conny_g)


Lesenswert?

Erik schrieb:
> ? :-D
> Heißt das jetzt ichc kann Vcc direkt anschließen oder ist die Schaltung
> so O.K. ?  :-)

:-) Jetzt haben wir Dich kirre gemacht.

Atmel Application Note 2521:

http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_application-note_avr042.pdf

Seite 5:

"The reset line has an internal pull-up resistor, but if the environment 
is noisy it can be insufficient and reset can
therefore occur sporadically. Refer to datasheet for value of pull-up 
resistor on specific devices.
Connecting the RESET so that it is possible to enter both high-voltage 
programming and ordinary low level reset can be
achieved by applying a pull-up resistor to the RESET line. This pull-up 
resistor makes sure that reset does not go low
unintended. The pull-up resistor can in theory be of any size, but if 
the Atmel AVR should be programmed from e.g.
STK®
500/AVRISP the pull-up should not be so strong that the programmer 
cannot activate RESET by draw the RESET
line low. The recommended pull-up resistor is 4.7kΩ or larger when using 
STK500 for programming. For DebugWIRE to
function properly, the pull-up must not be smaller than 10kΩ.

To protect the RESET line further from noise, it is an advantage to 
connect a capacitor from the RESET pin to ground.
This is not directly required since the AVR internally have a low-pass 
filter to eliminate spikes and noise that could
cause reset. Applying an extra capacitor is thus an additional 
protection. However, note that this capacitor cannot be
present if DebugWIRE or PDI is used.

If not using High Voltage Programming it is recommended to add an ESD 
protecting diode from RESET to Vcc, since
this is not internally provided due to High Voltage Programming. 
Alternatively, or in addition, a Zener diode can be used
to limit the RESET voltage relative to GND. The Zener diode is highly 
recommended in noisy environments. The
components should be located physically close to the RESET pin of the 
AVR. Figure 2-2 shows the recommended
circuit on the RESET line. "

Da werden also 3 Dinge vorgeschlagen:

- ein Pullup von 4,7k oder 10k
- ein Kondensator nach GND
- eine Diode nach VCC

Letzteres - die Diode - habe ich noch nie irgendwo gesehen, aber Pullup 
und Kondensator werden meistens gemacht.
Wobei die Appnote eingangs sagt, dass es intern einen Pullup gibt, "but 
to protect from further noise..." kann man den 10k machen.
Aber müssen tut man nicht unbedingt.

Im Vergleich ist der 100nF Blockkondensator an allen GNC/VCC wohl 
wesentlich wichtiger, der MUSS.

: Bearbeitet durch User
von Kein Name (Gast)


Lesenswert?

Nun macht es doch nicht so kompliziert.

Vcc direkt anschliessen ist selten eine gute Idee. Normalerweise kann 
man einen Pin direkt an Masse oder über einen Widerstand an Vcc 
anschliessen.

Der 100nF am Reset ist beim Mega328 überflüssig, kann aber Programmer 
und DebugWire durcheinander bringen. Schlage vor, du nimmst einfach 10k 
an Reset und arbeitest später irgendwann das Kapitel zu Reset und 
Brown-Out im Datenblatt durch.

Zum Reset der Schieberegister: Zum testen kannst du ja einfach ein 
leeres Programm laden, die Ports auf Input lassen und die Pins der 
Schieberegister mit dem Finger berühren. Dann siehst du ja, ob die LEDs 
flackern.

von Erik (Gast)


Lesenswert?

Okay, danke für eure Antworten :)

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.