Forum: Mikrocontroller und Digitale Elektronik Datenverlust im AT89C2051 ?


von Benedikt (Gast)


Lesenswert?

Vor etwa einem Jahr habe ich für AVRs und per SPI programmiere 8051 ein
Programmiergerät mit einem AT89C2051 gebaut, das bis vor etwas einem
Monat funktionierte.
Seitdem habe ich ein äußerst merkwürdiges Problem:
Zum Programmieren benutze ich als Protokoll eine Art Ping-Pong Modus.
Nachdem der PC ein zu programmierendes Byte (oder eine Seite) gesendet
hat, wartet er auf eine Antwort des AT89C2051 ehe er das nächste
sendet.
Seit kurzem bleibt die Software häufig an einer Stelle beim
Programmieren stehen. Wenn ich Ausschalte, einen Reset mache oder
ähnliches, der Fehler bleibt. Nach ein paar Tagen oder mit einer
anderen zu programmierenden Software geht es dann plötzlich wieder.
Da ich keine Statusabfrage des zu programmierenden uCs mache, sondern
nur eine bestimmte Zeit im AT89C2051 warte, muss der Fehler in diesem
liegen. Also neuen AT89C2051 genommen, und alls lief wieder. Zumindest
für einen Tag.
Wenn ich die beiden AT89C2051 austausche, bleibt der Fehler.
Er lässt sich nur beheben, wenn ich den AT89C2051 neu mit der
Programmiersoftware bespiele, oder auch nur die alte (mittels Verify,
das erfolgreich ist) auslese.

Irgendwie ergibt das ganze für mich keinen Sinn, ich weiß nur dass das
Problem ziemlich nervig ist wenn man andauernt einen uC programmieren
muss, nur um einen anderen zu programmieren.

von edi-edi (Gast)


Lesenswert?

das ist das resultat der sogenannten kuechentischprogrammiergeraete

von Peter D. (peda)


Lesenswert?

Die üblichen Verdächtigen:

- Quarz schwingt nicht richtig (falsche Cs ?)
- Reset nicht lang genug (10µF+10kOhm)
- VCC nicht stabil, keine Abblock-Cs
- SRAM nicht initialisiert
- Software-Bug (Interrupt ?)
- Windows-Problem (reboot ?)

Ich hatte mir mal ne Verlängerung für die UART gebaut aus 2
Quetschsteckern und 9-pol. Flachkabel. Irgendwann war es an den
Steckern abgeknickt und einige Adern hatten nur zeitweilig Kontakt.


Peter

von Jankey (Gast)


Lesenswert?

wie initalisiert man bidde den SRAM?...

von Benedikt (Gast)


Lesenswert?

@peter dannegger

Das Gerät lief fast ein Jahr lang problemlos. Daher kann ich
Softwarefehler eigentlich ausschließen. Davon abgesehen, alle Variablen
die in der Programmierschleife benötigt werden, werden initialisiert.
Die Kabel werde ich mal überprüfen, das ist eine gute Idee.

Ich vermute aber immer noch irgendeinen Fehler am uC. Eventuell liegt
es daran, dass ich das Programmiergerät (eigentlich immer) anschließe,
ohne die Spannung der Schaltung vorher auszuschalten.

von peter dannegger (Gast)


Angehängte Dateien:

Lesenswert?

"Das Gerät lief fast ein Jahr lang problemlos. Daher kann ich
Softwarefehler eigentlich ausschließen."


Erinnert mich irgendwie an die Röntgengeräte, die an bestimmten Tagen
die 100-fache Bestrahlung einstellten.

Die Fehlerfreiheit von Software läßt sich nur sehr schwer ermitteln.


Ich würde einfach mal den RAM nach jedem Reset komplett löschen, damit
werden zumindest Fehler durch zufälligen RAM-Inhalt vermieden (siehe
Anhang).


Peter

von Benedikt (Gast)


Angehängte Dateien:

Lesenswert?

Die RAM Lösch Routine habe ich reingemacht, bringt aber auch nichts.

Einen Hardwarefehler kann ich ziemlich sicher ausschließen, da die
Schaltung ja ein Jahr lang lief, und der erste Teil der Programmierung
immer fehlerfrei läuft.

Ich habe mal die Software angehängt:
Nach dem Einschalten wird die ID des zu programmierenden Controllers
abgefragt, und direkt per LED angezeigt ob de Verbindung OK ist.

Zur Programmierung werden die entsprechenden Befehle gesendet. Eine
falsche Konfiguration der Einstellungen (z.B. zu geringe Anzahl der zu
programmierenden Bytes durch Übertragungsfehler) kann ich ausschließen,
da alle Werte zum PC zurückgesendet werden.

von Benedikt (Gast)


Lesenswert?

Ich glaube ich habe den Fehler...
Scheiß Windows XP !!!!

Irgendwie gehen seit kurzem einige Bytes beim Senden verloren.
Immer wenn ich zwischendurch den AT89C2051 neu programmiert habe, hat
sich der Com Port irgendwie umgestellt, und dann ging das programmieren
wieder ein paarmal.

von Transi (Gast)


Lesenswert?

Bringt dich zwar nicht weiter, aber auch ich habe ähnlich Erfahrungen
machen müssen. Selbst gebauter Programmer für 89C2051/4051 läuft über
Jahre bestens und macht jetzt auf einmal Ärger. Ursache zunächst auch
in meinem Programm oder der Hardware vermutet. Zwischenzeitlich hat die
EDV wieder mal irgend welche Softwareupdates gefahren, was dann letzt
endlich die Ursache für das Verhalten war.
Wenn man sich vor Augen hält, dass man heute einen 40 Jahre alten SW
Fernsehgerät einschalten kann und dieser immer noch Bild uns Ton
liefert so könnten sich die Microsoft Fritzen daran eine Scheibe
abschneiden. Die Kompatibilität muss ja nicht 40 Jahre halten, aber 2
Jahre wäre schon nicht schlecht, finde ich,

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.