Vielen Dank! (EEPROM Reset)

Diese Seite verwendet Cookies und Google AdSense. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen und Google AdSense zur Einblendung von Werbung benutzen. Weitere Informationen

  • Vielen Dank! (EEPROM Reset)

    Hallo!

    Ich möchte an dieser Stelle Danke sagen, an alle, die hier Tipps und Ratschläge gegeben haben. Ohne euch hätte ich meine ESAM 4500 Pronto Cappuccino nicht wieder zum Leben erwecken können.

    Nach 10 Jahren, 13k Cappuccinos und 3.5m³ Wasser war die Antriebsmutter innen fast komplett glatt. Den Antrieb ausbauen, zerlegen und die Mutter tauschen war kein großes Problem. Leider hat das die Maschine so sehr traumatisiert, daß sie erst mal nur "Allgemeine Störung" und nach dem Tastentest "General Alarm"angezeigt hat. Durchmessen der Aggregate ergab keine Auffälligkeiten. Im Testmodus funktionierte alles. Reset lies sich aber nicht ausführen. Nach dem Tastentest war die Maschine zwar plötzlich auf Englisch, sonst aber in keinem besseren Zustand.

    Letzte Hoffnung war nun der Maschine das Gedächtnis zu löschen. Also ein PicKit 3 und Mica 6 Stecker bestellt.

    Hier die Pinbelegung des Programmier-Headers gefunden und hier das Bild vom Kabel. Ohne passende Zange ist das anbringen des Steckers etwas kniffelig. Aber man kann mit einem Schraubenzieher die einzelnen Kontakt runterdrücken bis sie durch das Flachbandkabel schneiden. Im Zweifelsfall mit dem Multimeter auf Durchgang prüfen.

    Ich habe den Verdacht, dass es da noch eine elegantere Lösung geben sollte als das, was jetzt kommt, aber irgendwie habe ich sie nicht gefunden.

    Ich habe mir dann MPLAB X von MicroChip heruntergeladen. MPLAB X IPE ist das Tool um Programme auf einen PIC Microcontroller zu schreiben. Wahrscheinlich geht das auch ohne den Advanced Mode, den man im Settings Menü mit dem Passwort "microchip" aktivieren kann. Das habe ich aber erst mal nicht hinbekommen.

    Auf dem Operate Tab erstmal Device auf "PIC18F452" einstellen (bzw. den Namen, der sonst auf dem Microcontroller auf der Leistungsplatine drauf steht. Aber so weit ich das gelesen habe sind da über all die gleichen verbaut).

    Nach etwas herumprobieren stellt sich heraus, daß der PicKit 3 Programmer nicht genügend Strom zur Verfügung stellen kann. Deshalb: Die Standardeinstellungen so lassen (Power Target from Tool aus). Programmer anschließen und dann die Maschine vorsichtig einstecken. Ja, da ist überall 230V auf den Kabeln und offenen Anschlüssen. Wer die Tendenz hat, an 230V zu sterben, sollte das vielleicht sein lassen.

    Dann auf den Connect Knopf drücken und die Meldungen im Fenster unten genau lesen. Hoffentlich ist da jetzt eine Verbindung zustande gekommen.

    Dann mit Read das Programm auslesen und mit File > Export > Hex speichern.

    Dann eine Kopie anlegen und die Kopie editieren. In der Hexdatei sollten eine Menge Zeilen sein, die alle mit einem Doppelpunkt anfangen und danach eine Folge der Zeichen 0-9 und A-F enthalten - also Daten in hexadezimaler Darstellung. Am Anfang ist ein größerer Block mit dem Programm. Dann kommen ein paar kürzere Zeilen mit den Settings im Microcontroler und am Ende ein Block mit 16 Zeilen für die 256 Bytes des EEPROMs (Danach eine Zeile mit :00000001FF, die das Dateiende markiert) In den ersten 13 Zeilen stehen die Daten der Maschine, die letzten Zeilen sind leer, d.h. mit FF gefüllt. Um die Daten zu löschen müssen wir auch die ersten Zeilen des EEPROM Blocks auf FF setzen. Dabei müssen die ersten Bytes, die die Adresse enthalten, unverändert bleiben. Das letzte Byte - also die letzten beiden Zeichen - in jeder Zeile sind eine Checksumme, die auch entsprechend angepasst werden muss. Das Ergebnis für diesen Teil der Datei sah dann so aus:

    Quellcode

    1. :10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
    2. :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
    3. :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
    4. :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
    5. :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
    6. :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
    7. :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
    8. :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
    9. :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
    10. :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
    11. :1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
    12. :1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
    13. :1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
    14. :1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
    15. :1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
    16. :1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
    Alles anzeigen
    Da die Adresse vorne hochzählt und die Daten alle gleich sind, zählt die Checksumme (die wirklich das letzte Byte der Summe der Bytes davor ist) nach unten. Man kann sich da einfach an den letzten Zeilen orientieren, die ja unverändert bleiben.

    Dann die geänderte Datei mit File > Import > Hex wieder laden und mit Program wieder auf den Microcontroller schreiben. Jetzt sollte die Maschine schon eine Italienische Meldung anzeigen. Ich habe dann erstmal die Maschine wieder ausgesteckt und den Programmer abgebaut. Dann kann man die Maschine wieder zusammen bauen und die Erstinbetriebnahme durchführen.

    Ich bin sicher mit ein bisschen mehr Raffinesse kann man wahrscheinlich die meisten Daten erhalten und nur die entsprechenden Fehlerbits löschen. Oder zumindest die Verbrauchswerte anschließend wieder in das EEPROM schreiben. Das habe ich bisher aber noch nicht gemacht und ich weiß auch nicht ob ich in absehbarer Zeit die obige Prozedur dringend wiederholen möchte.

    0xFF
    Werbung
  • 0xFF schrieb:

    Dann eine Kopie anlegen und die Kopie editieren. In der Hexdatei sollten eine Menge Zeilen sein, die alle mit einem Doppelpunkt anfangen und danach eine Folge der Zeichen 0-9 und A-F enthalten - also Daten in hexadezimaler Darstellung. Am Anfang ist ein größerer Block mit dem Programm. Dann kommen ein paar kürzere Zeilen mit den Settings im Microcontroler und am Ende ein Block mit 16 Zeilen für die 256 Bytes des EEPROMs (Danach eine Zeile mit :00000001FF, die das Dateiende markiert) In den ersten 13 Zeilen stehen die Daten der Maschine, die letzten Zeilen sind leer, d.h. mit FF gefüllt. Um die Daten zu löschen müssen wir auch die ersten Zeilen des EEPROM Blocks auf FF setzen. Dabei müssen die ersten Bytes, die die Adresse enthalten, unverändert bleiben. Das letzte Byte - also die letzten beiden Zeichen - in jeder Zeile sind eine Checksumme, die auch entsprechend angepasst werden muss.
    Viel einfacher ist es um nicht MPLAB IDE aber das "PICkit3" Program zu gebrauchen. Im Program nur "Program Data" selektieren, dann einen Read machen (dabei ist "EEPROM Data" leer geblieben), dann
    auch "EEPROM Data" selektieren und einen Write machen.
    Oder noch einfacher: keinen Read machen, aber nur "EEPROM Data" selektieren, und dann einen Write machenn.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Roland11 ()