Forum: Mikrocontroller und Digitale Elektronik uP MC68HC11A1 EEPROM programmieren/löschen


von Manfred S. (teletubby)


Lesenswert?

Hallo!

Dies ist der erste Versuch meines Lebens in einem Forum. Bin sehr 
gespannt, wie das ausgeht. Es geht um eine Sache, die mich schon fast 
ein Jahr beschäftigt. Um Folgendes:

Ich habe ein Gerät, an dem ich gerne etwas ändern würde. Dieses Gerät 
arbeitet mit einem Mikroprozessor vom Typ Motorola MC68HC11A1. Um die 
gewünschte Änderung zu bewirken, muss ich im EEPROM des Prozessors 
einige wenige Speicherstellen löschen und neu programmieren. Welche 
Speicherstellen das sind und wohin sie geändert werden müssen, das weiß 
ich.
Als Radio- und Fernsehtechniker habe ich einige Hardwarekenntnisse, aber 
so gut wie keine über Programme, über`s Programmieren und wenig über 
PC`s. Also habe ich mir als erstes über den Prozessor ein Buch gekauft: 
"Michael Rose: Mikroprozessor MC6811 - Architektur und Applikation". 
Leider verstehe ich von dem Inhalt aber höchstens 20 Prozent.
Zum Buch gehörig ist eine unbestückte Platine, die laut Buch, wenn sie 
fertig ist, einen Emulator für den Prozessor darstellt, worunter ich 
eine Art Minimalumgebung verstehe, die für ihn nötig ist. Die 
erforderlichen Teile habe ich mir beschafft und das Ganze aufgebaut. 
Dort findet sich der Prozessor selbst, ein RAM, ein Demultiplexer, ein 
IC mit nur ein paar Gattern drin, ein Quarz mit 8,0 MHz, ein 
Schnittstellen-IC, eine 9-Pin-Buchse zur Verbindung mit einem PC, ein 
Reset-Taster und ein paar passive Bauteile. Von der fertigen Platine 
kann man davon ausgehen, dass sie funktioniert.
Weiterhin gehört zum Buch eine Diskette mit ca. 1,4 MB Dateien, mit 
denen es möglich sein soll, über einen PC Kontakt mit dem Emulator 
aufzunehmen und dort verschiedene Dinge zu bewirken. Bis dahin ohne 
betriebsbereiten PC, habe ich meinen nur aus Souvenir-Gründen 
aufbewahrten alten MP 386 aus dem Jahr 1989 vom Dachboden geholt und 
diesen erstmal selbst betriebsbereit gemacht. Danach habe ich den 
Emulator mit dem PC verbunden und es nach einigem Probieren mit dem 
Verbindungskabel tatsächlich geschafft, einen ersten Kontakt 
herzustellen. Das macht sich dadurch bemerkbar, dass nach Aufrufen des 
Programms "HC11.exe" am PC kurz darauf auf dem Monitor die Meldung 
erscheint "Treiber installiert", laut Buch eine Art Quittung dafür, dass 
ein kleines Betriebssystem im RAM des Prozessors auf der Emulatorplatine 
abgelegt wurde. Das Erfolgserlebnis war sensationell.
Danach war es mit einigen im Buch beschriebenen Befehlen möglich, aus 
dem Adressbereich des MC68HC11 Speicheradressen auszulesen und, wenn es 
sich um RAM-Speicher handelt, diese auch zu verändern. So konnte ich 
z.B. die EEPROM-Stellen, die ich verändern möchte, ausfindig machen.
Leider ist eine Veränderung des EEPROM-Speichers auf diese Weise nicht 
möglich, da, wenn ich das Buch richtig verstehe, dazu im 68HC11 ein 
Programm abgearbeitet werden muss. Hier hört es mit meinem Verstehen 
leider auf. Auf der Diskette ist ein weiteres Programm ("X68C11"), das 
laut Buch zur Assemblierung dient, was wiederum zum Programmieren des 
Prozessors von großer Bedeutung sein soll. Jedoch ist dieses Programm 
auf dem alten PC nicht lauffähig, da sein Arbeitsspeicher mit 2 MB zu 
klein ist.
Also habe ich mir einen anderen gebrauchten PC gekauft (mit Pentium 3 
Prozessor aus dem Jahr 2001) wobei mir wichtig war, dass er eine 9-Pin 
serielle Steckverbindung hat. Auf diesem ist zwar das Programm X68C11 
lauffähig, aber leider klappt mit diesem PC noch nicht einmal die 
prinzipielle Kontaktaufnahme mit dem Emulator, die mit der Meldung 
"Treiber installiert" (siehe oben) endet. Die Funktion des seriellen 
9-Pin-Anschlusses des PC habe ich mit einer seriellen Maus getestet: das 
funktioniert.
Das ist jetzt der Punkt, an dem mir nichts mehr einfällt. Ich habe zwei 
Probleme, die mir momentan unlösbar erscheinen: Erstens geht es darum, 
eine Verbindung zwischen dem neueren PC und dem Emulator herzustellen, 
was mit dem alten PC weiterhin funktioniert. Zweitens darum, im nächsten 
Schritt EEPROM-Stellen zu löschen und neu zu programmieren.

Falls es jemand geschafft hat, bis hierhin mit dem Lesen durchzuhalten - 
erstmal herzlichen Dank dafür. Mein Ziel ist es, EEPROM-Adressen im 
MC68HC11 zu löschen und neu zu programmieren. Auf welchem Weg das 
erreicht wird, ist von geringer Bedeutung. Was ich an Voraussetzungen 
habe, habe ich geschildert. Für jede Form von Hilfe bin ich äußerst 
dankbar. Wenn sich das Ziel hierdurch erreichen lässt, bedanke ich mich 
mit einer Spende von 50 Euro an eine gemeinnützige Organisation.
Freundliche Grüße
Manfred

von Dietmar Sch (Gast)


Lesenswert?

Hallo Manfred,

ich weiss zwar, man soll den zweiten Schritt nicht vor dem ersten 
machen, aber bei der Programmierung des EEPROMs kann ich etwas 
weiterhelfen.
Unter 
http://www.datasheetpro.com/5087_download_M68HC11RMAD_datasheet.html 
findest du ab Seite 51 eine Beschreibung des EEPROMs auf dem 68HC11 und 
ab Seite 54 Routinen zum Programmieren und Loeschen. Du hast schon 
richtig erkannt, das die Programmierung nur ueber ein Programm auf dem 
68HC11 selber erfolgen kann, so komfortabel wie bei den AVRs ist das 
noch nicht.

Dietmar

von Manfred S. (teletubby)


Lesenswert?

Hallo Dietmar,
Danke für Deinen Tip. Ich habe mir das gesamte Datenblatt 
heruntergeladen und angesehen, muss aber jetzt erstmal sehen, dass ich 
die Kontaktaufnahme mit dem PC irgendwie bewerkstelligt bekomme.
Hierzu hoffe ich darauf, dass sich noch jemand meldet, der mir in diesem 
Punkt weiterhelfen kann
Gruß Manfred

von R. F. (rfr)


Lesenswert?

Hi,

wenn das Programm auf dem einem Rechner funktioniert und auf dem 
manderem nicht, liegt das mit sehr hoher Warscheinlichkeit an der 
Schnittstelle oder deren Parametern. Rein prinzipiell kann man das auch 
ändern. Das ist aber vom Betriebssystem abhängig. Villeicht könntest du 
mal schreiben, welches System du auf dem Rechner betreibst und welche 
Parametereinstellung die Schnittstelle hat.

Gruss

Robert

von Manfred S. (teletubby)


Lesenswert?

Hallo Robert,
Danke für Deine Antwort. Ich habe das Betriebssystem Windows 2000, die 
Einstellung der Schnittstelle "COM 1" entspricht dem Standard. Ich habe 
bei der Konfiguration bereits andere Einstellungen versucht und den 
FIFO-Puffer ausgeschaltet. Alles ohne Erfolg.
Es ist verwirrenderweise auch nicht so, dass es gar nicht funktioniert. 
Ich habe bemerkt, dass in dem Moment, in dem die Kontaktaufnahme der 
Emulatorplatine mit dem alten PC erfolgreich erfolgt, die Stromaufnahme 
der Emulatorplatine von 23 mA auf 27 mA ansteigt. Diesen Anstieg des 
Stromes gibt es auch beim Betrieb mit dem neueren PC, allerdings immer 
nur (und jetzt wird es ganz verwirrend!!!) beim zweiten (!!!) Aufruf des 
Programmes, ohnd dass ich zwischendurch die "Reset"-Taste des Emulators 
betätige. Es scheint sich also generell etwas auf der Emulatorplatine zu 
verändern. Dennoch kommt die Meldung "Verbindung unterbrochen", so dass 
ein Weiterarbeiten nicht möglich ist.

Gruß Manfred

von Mosh (Gast)


Lesenswert?

Servus!

Eventuell funktioniert diese Software (WP11) auch mit Deinem Board:
http://www.tec-i.com/WP11.htm

Alternativ kannst Du auch die Schaltung aus dieser AN verwenden:
http://www.ele.uri.edu/courses/ele205/Application-notes/AN1010.pdf

Viel Erfolg!
Mosh

von Manfred S. (teletubby)


Lesenswert?

Hallo Mosh,

ich bin fassungslos. Nach monatelangen Versuchen sieht es jetzt so aus, 
als wäre ich einen großen Schritt weitergekommen.
Ich habe "WP11" heruntergeladen und meine Emulatorplatine mit dem 
neueren PC (dem mit Windows 2000) verbunden. WP11 ließ sich problemlos 
installieren. Meine Platine lässt sich problemlos initialisieren, der 
"Communications Test" wird mit der Meldung "Communications are o.k." 
beantwortet. Es ist mir gelungen, den EEPROM-Inhalt anzusehen und zu 
löschen. Auch einzelne Speicherstellen neu zu programmieren, scheint 
geklappt zu haben.
Was mir momentan noch etwas Probleme bereitet, ist die Tatsache, dass 
sich das EEPROM nur zusammen mit dem Konfigurationsregister löschen 
lässt. Das ist nicht meine Absicht, da ich das Config Reg unangetastet 
lassen bzw. nach dem Löschen wieder genauso programmieren muss, wie es 
vorher war.
Ich bin mir aber ziemlich sicher, dass das noch irgendwie hinzubekommen 
ist.
Erstmal Herzlichen Dank für Deine Hilfe. Dass am Ende so schnell gehen 
würde, hätte ich niemals gedacht
Wenn ich den letzten Schritt auch noch hinbekomme, bin ich bereit für 
die versprochene Spende an eine gemeinnützige Organisation. Wenn Du eine 
hast, die Dir am Herzen liegt, kannst Du sie mir nennen.
Wenn ich den allerletzten Schritt auch noch hinbekommen habe, dann melde 
ich mich noch einmal.
Nochmal Danke und herzliche Grüße
Manfred

von Manfred S. (teletubby)


Lesenswert?

Hallo allen, die mein Problem zur Kenntnis genommen haben und die 
versucht haben zu helfen bzw. geholfen haben!

Das Problem ist gelöst. Ich möchte mich herzlich bei allen bedanken, die 
daran mitgewirkt haben.
In der nächsten Woche werde ich die versprochene Spende überweisen.
Herzliche Grüße
Manfred

von Mosh (Gast)


Lesenswert?

Hallo Manfred!

Freut mich, wenn ich Dir helfen konnte!
Spende bitte an: http://www.lebenshilfe-traunstein.de

Danke und Gruß,
Mosh

von Manfred S. (teletubby)


Lesenswert?

Hallo Mosh,
wie versprochen habe ich gerade eine Online-Spende in Höhe von 50,00 
Euro an die Lebenshilfe Traunstein überwiesen bzw. die Lastschrift 
komplett ausgefüllt und abgeschickt. Beantwortet wurde die Spende auch 
schon mit einer kurzen "Danke"-E-Mail. Falls Du an einer Bestätigung 
interessiert bist, kannst Du mir eine E-Mail-Adresse (meine: 
teletubby@unitybox.de) zukommen lassen, an die ich die Mail von der 
Lebenshilfe weiterleiten könnte.  Oder die Spendenquittung, die mir in 
Aussicht gestellt wurde. Die "Danke"-E-Mail hier als Dateianhang 
einzubauen, scheint nicht zu funktionieren.
Auch den verbliebenen Rest des Problems nach Anwendung des Programmes 
WP11 ( die Sache mit dem Konfigurationsregister) habe ich gelöst. Habe 
nämlich bemerkt, dass das Config-Reg. nur ein Byte lang ist. Dessen 
Inhalt wird beim Einlesen des Prozessorinhaltes mit WP11 an einer 
separaten Stelle angezeigt. Beim Löschen des EEPROMS wird dieses 
Register mit gelöscht. Man muss sich also nur den vorherigen Wert (in 
meinem Fall: $0D) merken, da es später bei der Neuprogrammierung die 
Möglichkeit gibt, ihn an selber separater Stelle wieder einzugeben.

Also:
Nochmal Herzlichen Dank und noch einen schöne Sonntagabend!

Manfred

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.