Seltsames Verhalten AT89C2051

Gast #128172
Lesenswert?

Hallo!

Hab heute zum x-ten mal eine kl. Mikrocontrollerschaltung für einen
Prüfplatz gebaut. Der Controller soll nur ein Signal mit variabler Pul-
und variabler Pausenzeit erzeugen. Das Programm funktioniert.

Jedoch, wenn sich der Controller gerade im Reset befindet, fangen je
nach Stellung der Eingangsschalter am Port 3, die Ausgangsbits an Port
1 mit etwa 300kHz wild zum schalten an (auch diejenigen, welche nicht
verwendet werden)!!  :-o

Die Schalter sind 4bit-Drehcodierschalter sowie Kippschalter nach
Masse. Der uC wird mit 22,1184MHz getaktet und ist sauber Entkoppelt.
Der uC wurde ebenfalls schon auf verdacht getauscht - ohne Erfolg!
Gearbeitet wird in einem geprüften EGB-Bereich, deshalb Schaden durch
statische Entladung zu 99% auszuschließen. Evtl. Störquellen wurden
ausgeschaltet bzw. weit weggeräumt.

Sowas hatte ich bisher nochnie! :-(  Kann mir das Verhalten absolut
nicht erklären..

Woher kommt das? Ursache? Was zur Behebung tun?

MfG
Wilhelm
#128173
Lesenswert?

Bei aktivem Reset geht der 2051 in den Programmiermodus und bei
bestimmten Kombinationen an P3 werden an P1 die Flashbytes mit dem
Quarztakt ausgegeben.

Eventuell hilft es die Lockbits zu setzen.
Sonst hilft nur die Eingänge an P3 zu ändern, daß man nicht in einer
Lesefunktion ist.
Speziell P3.4. sollte beim Reset nicht auf Low liegen.


Ich hatte mal an P3.4 eine Taste und an P1 eine RTC.
Immer wenn man wärend des Einschaltens die Taste gedrückt hielt,
verstellte sich die RTC.



Peter
Gast #128174
Lesenswert?

Peter, du bist der Größte! :-)

Das war's tatsächlich! Im Resetmoment war genau eine so saublöde
Bitkombination vorhanden, dass der uC seine ID ausgegeben hat!
Darauf wär ich ja ewig nicht gekommen!

Hab jetzt ein paar Pins umverdrahtet und das Programm angepasst und nun
läufts!

Nochmal vielen Dank!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren