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.
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
@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.
"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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.