mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89C2051: Power-up und Reset vertragen einander nicht!?


Autor: Christian Niederreiter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Zum Entwickeln von Mikrocontroller-Programmen (für Atmel 89C2051)
verwende ich eine kleine Versuchsplatine, auf der sich unter anderem
eine primitive Reset-Schaltung befindet. Die Reset-Schaltung besteht
aus einem Kondensator auf +5 V (für einen Power-up Reset) und einem
Pulldown Resistor (6,8 kOhm). Der Kondensator kann mit einem Taster
überbrückt werden.
Und jetzt kommt's: [b]Wenn ich während des Betriebs den Reset-Taster
drücke, läuft das Programm fehlerfrei los. Nach dem Einschalten der
Betriebsspannung allerdings wird eine Variable innerhalb des Prozesses
nicht so initialisiert, wie es im Programm steht.[/b] Um
auszuschließen, dass das Problem mit dem RC-Glied zusammenhängt, habe
ich während des Power-ups den Reset-Taster gedrückt gehalten und erst
ein paar Sekunden später losgelassen. Aber dennoch macht der µC nicht,
was er sollte.

Im Anhang der Schaltplan der Versuchsplatine.

Ich habe keine Ahnung, warum sich der Mikrocontroller so seltsam
verhält und freue mich über hilfreiche Tipps.

mfg
Christian

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auf einen Softwarefehler tippen.

Dem 7805 solltest Du noch eingangsseitig einen 100nF spendieren.

In Reihe zu RT sollte noch ein 100 Ohm, um die Funkenbildung zu
vermeiden.

Eventuell kann dieses ganze S1-3...S1-6 Geraffel den Quarz zu stark
bedämpfen und er kommt schlecht auf die Hufe.


Peter

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

ich hatte mit dem Reset bei den 89cxxxx-Controllern auch schon jede
Menge Probleme. Wenn Du das Problem wirklich lösen willst, mißt Du am
besten mal mit einem Digiscope das Verhalten der gesamten Schaltung
beim Einschalten. Da treten nette Effeke auf, wenn der Oszillator noch
nicht eingeschwungen ist und der µC schon seinen Reset hinter sich hat.
Schau mal ins Datenblatt, wie lange der Takt vor dem Ende des Resets
anliegen muß. Hast Du kein Digiscope zur Hand, hilft auf jedenfall ein
Resetcontroller (ich habe oft den MAX811 oder 812 (weiß gerade nicht,
welcher welche Reset-Polarität hatte) eingesetzt.) Problem ist, daß der
Preis eines Resetcontrollers den des 89C2051 übersteigt. Na, aber Muster
gibt es bei MAXIM ja für lau....

Gruß,
Markus_8051

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommen hier immer wieder irgenwelche Gerüchte über einen schlecht
funktionierenden Reset beim 89C2051. Ich hatte diese Probleme noch nie,
obwohl ich immer nur einen 100nF Kondensator zwischen Vcc und Reset
hänge.
Falls es doch mal Probleme gab, dann lag es eigentlich immer an einem
Fehler im Aufbau oder an einem Softwarefehler.

Mit jeder normalen Stromversorgung sollte man es eigentlich
hinbekommen, die Spannung schnell genug einzuschalten, damit der Quarz
läuft.

Wenn ich mal ganz faul bin, dann stecke ich den AT89C2051 in ein
Steckbrett, einen 22,1184MHz Quarz daneben und den nächstbesten
Kondensator (im Moment 330pF) zwischen Pin 1 und 20. Und es läuft
(zumindest nachdem ich den Fehler in der Software behoben hatte...)

Das einzige was man nicht machen darf, ist die Spannung in 10s von 0
auf 5V hochzudrehen.

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt: Das sind leider keine Gerüchte! Meine Mustergeräte und
Prototypen liefen am Labornetzteil auch immer hervorragend. Von der
Serienproduktion hatten wir jedoch etliche Rückläufer, da die Geräte
"draußen" mit einem Steckernetzteil betrieben wurden.

Zu den Steckbrettern: hier ist es so, daß man auf den Steckboards die
Kondensatoren am Quarz oft weglassen kann, da die Kontaktschienen schon
eine ausreichende Kapazität gegeneinander aufweisen.

Na, soweit zu Theorie und Praxis...

Markus_8051

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus_8051

Das mit dem Steckbrett war nur ein Beispiel.
Ich habe mindestens 10 AT89C8051 im ganzen Haus im Einsatz, und hatte
noch nie Probleme mit dem Reset. Und alle AT89C2051 laufen auch mit
billigen Steckernetzteilen.

Aber bei Seriengeräten ist das natürlich was anderes.
Da werden dann meistens TL7705 und Co verwendet.

Was ich damit sagen will: Der einfache Reset beim AT89C2051 kann sicher
nicht mit der Brown out detection von ATtinys und ATmegas mithalten,
aber so schlecht ist er auch wieder nicht, wie einige behaupten.

PS: Den Pulldown/Up Widerstand am Reset braucht man nicht, alle neueren
8051er und AVRs haben Widerstände eingebaut.

Autor: Christian Niederreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter dannegger: Softwarefehler ist (kann ich zu 100 % sagen) keiner
drin. Ich hatte nur ein kleines Versuchsprogramm geschrieben und wenn
man den Controller mit einem C-Compiler programmiert, ist das Programm
so übersichtlich, dass man einen Fehler auf den ersten Blick erkennt.
Der 7805 ist nicht unbedingt optimal beschaltet, da stimme ich dir zu.
Widerstand und Kondensator habe ich jetzt auf 68 kOhm / 100 nF
abgeändert, da laut Datenblatt der Pulldown-Widerstand mindestens 50
kOhm haben muss (es leuchtet mir allerdings nicht ein, warum. Aber man
kann sich ja trotzdem daran halten.). Die Lösung des Problems war
schließlich die Einstellung der Schalter. Danke Peter, du hast mich
darauf aufmerksam gemacht! Nach dem Kauf des Sets waren alle Schalter
auf ON, und das ist natürlich fatal, denn EP1-5 und EP3-5 wirken bei
angeschlossenem Flachbandkabel wie Antennen. Über die Einstellung der
Schalter hatte ich mir bis jetzt keine großen Gedanken gemacht, das war
natürlich ein Fehler :) .

@Markus_8051, Benedikt: Für eine Anwendung, bei der die
Betriebsspannung zwangsläufig nur langsam ansteigt (an die 2 Sekunden),
habe ich mir eine 1A-Resetschaltung mit dem günstigen NE555 aufgebaut,
und die Schaltung hat super funktioniert. Aber bei der Versuchsplatine
eine solche Schaltung dazuzubauen, ist mir zu viel Aufwand (einerseits
bestünde die Platine dann aus zwei Platinen und andererseits war die
Reset-Schaltung zum Glück nicht das ursächliche Problem). Der Reset
muss jedenfalls nur zwei Zyklen gehalten werden (entspricht 1 µs).

Jedenfalls vielen Dank für eure Beiträge! Ihr habt mich auf den
richtigen Weg gebracht!

mfg
Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.