www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prog startet nach Reset 30sec verzögert...


Autor: Ulli (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo NG,

gebe an Port1 eines 8051er (AT89S8252) ein wechselndes 1 Hz
Bitmuster aus (per Timer 0 Interrupt).
Nach einem Soft-Reset startet das Prog sofort neu, unterbreche ich
jedoch die Stromversorgung, startet das Prog erst nach ca. 30 sec...

Hat jemand eine Erklärung?
Programm als Anhang anbei!

Gruß Ulli

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..im beigefügten Assemblerprogramm trifft der Kommentar nur bedingt zu,
da Programm schon etwas verändert!
Ulli

Autor: buz11 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
besser so ?

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..leider nein!

die END-Anweisung bewirkt ja das gleiche..

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann ist es ein hardwareproblem ... ?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du Reset beschaltet ?

Autor: Ulli (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
siehe reset.gif

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..am Board kann's eigentlich nicht liegen.

Wenn ich ein Bitmuster mov P1, 01010101b statisch
an Port 1 lege, ist das sofort nach einem Power On Reset da!
Ich vermute eher einen Zusammenhang mit dem Timer..

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie Software ist OK, also muss es an der Hardware liegen.
Wird die Spannung vielleicht zu langsam angeschaltet ?

Autor: Peter Zimmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Vieleicht könntest du mal probieren den 1k Widerstandt und den
Kondensator raus machen und dann mal Probieren.
Gruß
Peter

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quarze können je nach Beschaltung manchmal sehr lange zum Anschwingen
brauchen.  30 s wäre aber wirklich ungewöhnlich lange.  Für einen im
Glasröhrchen (unter Vakuum) verbauten 100 kHz Biegeschwinger habe ich
(bei offensichtlich sehr sparsam -> quarzschonend) rückgekoppeltem
Oszillator so 5...7 Sekunden, das ist eigentlich das Längste, was ich
bisher erlebt habe (das ist die Referenz in meinem allerersten
Zählfrequenzmesser).

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also am Reset kanns nicht liegen..

Hab das Prog so modifiziert, daß am Ende der Initialisierungsphase
schon mal Port1.0 auf Low gesetzt wird, da hängt eine LED dran.
Nach einem "PowerOnReset" leuchtet die LED auch SOFORT, das
Blinkprogramm innerhalb der Timerroutine beginnt dann nach genau 20 sec
zu arbeiten...also muss es was mit dem Timer/Int zu tun haben.

Erstmal Danke für die Tipps, wenn ich das Prob gelöst habe poste ich
es!
Gruß Ulli

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brauchste nicht, ich habe den Fehler !
Du inititaliiserst r7 nicht ! Ist r7 am Anfang 0, benötigt der uC 16,77
Sekunden bis r7 wieder 0 ist. Beim Software Reset ist r7 irgenwo
zwischen 1 und 8...


Initialisierung:
orl TMOD, #01h  ;Timer 0 als 16-Bit Timer
setb TR0      ;Timer 0 Start
setb ET0      ;Timer 0 Interrupt freigeben
setb EA        ;globale Interruptfreigabe

mov a, #10101010b  ; Bitmuster nach Accu
end

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs denn, wenn du r7 initialisierst? Kann nach reset auf einem
beliebigen Wert stehen, dementsprechend kann es entsprechend viele
Timer0-Ints benötigen, bevor die Portroutine überhaupt dran kommt (djnz
r7).

Autor: Ulli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Benedikt, Crazy Horse,

das ist die Lösung!!

r7 steht auf einem unbestimmten Anfangswert, und der scheint immer nach
einem POReset hoch zu sein.
Am Ende der Initialisierung steht jetzt noch:
..
mov r7, #8
end

Danke Euch!!
Ulli

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder r7 ist Null, denn djnz verringert erst ->255 und prüft dann
(255<>0). 0 ist also identisch mit 256.
Und bei Speichern ist es oft so, dass sie entweder den Wert 0 oder 255
annehmen, wenn die Spannung abgeschaltet wird. Aber das ist bei jedem
IC und sogar bei jeder Speicherstelle unterschiedlich !

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.