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
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.
@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.
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.
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.
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.
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 :)
"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.
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.
> Wer verwendet denn schon einen Reset-Baustein.
Wir alle :-) Seit so etwa 20 Jahren ist dieser Mechanismus direkt im
Controller eingebaut.
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.
? :-D Heißt das jetzt ichc kann Vcc direkt anschließen oder ist die Schaltung so O.K. ? :-)
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.