EPROM Simulator für das Microcontroller Board
Um
neue Programme zu testen kann man nicht immer einen Simulator verwenden, vor
allem wenn die Hardware den Programmablauf beeinflusst. Aus diesem Grund kommt
man häufig nicht am Ausprobieren in der realen Schaltung vorbei. Das häufige
Ändern des Programmcodes ist meistens mit dem Entnehmen des Controlles
aus der Schaltung verbunden, um diesen auf einem Programmiergerät zu programmieren.
Oder man verwendet ein externes EPROM oder NVRAM, aber hier hat man dasselbe
Probleme. ISP (In System Programable) fähige Microcontroller sind teuer
und/oder nur 10000 mal Wiederbeschreibbar. Auch das Setzen eines einzelnen Jumpers
und das Löschen und Programmieren dauert oft recht lange. (Mir zumindest
hat es zu lange gedauert !)
Daher habe ich mir diese nette Schaltung ausgedacht, die eine Art Dualport RAM
darstellt:
Der 32kB SRAM ist sowohl mit dem steuernden Microcontroller als auch mit dem
Zielsystem über ein Kabel verbunden. Um den Aufwand gering zu halten ist
kein gleichzeitiger Zugriff wie bei einem echten Dualport RAM möglich.
Der Steuercontroller ist immer mit dem SRAM und dem PC verbunden und kann die
Verbindung zum Zielsystem unterbrechen, um das SRAM ungestört beschreiben
zu könne.
Nach dem Einschalten leuchtet die LED auf und zeigt an, dass die Schaltung bereit
ist, Daten vom PC zu empfangen. Die Datenübertragung läuft recht schnell
mir 115200Baud über die serielle Schnittstelle ab. Als Startsignal sendet
der PC den Wert 0xB8. Dies wird com Controller mit 0x7C beantwortet. Nun folgt
der eigentliche Befehl:
0xBE: SRAM beschreiben
0xBF: SRAM auslesen
Als nächstes wird die Anzahl der zu übertragenden Bytes übermittelt, und zwar MSB dann LSB. Nun folgen die Daten aus einer BIN Datei. Ist die Übertragung abgeschlossen sendet der Controller den Befehl als Erfolgsmeldung zurück.
Sobald der Controller
einen Befehl vom PC erhält, legt er automatisch den Ausgang Reset auf High,
um den Microcontroller im Zielsystem anzuhalten. Dann trennt er die Verbindung
zwischen SRAM und Zielsystem und führt die Datenübertragung aus. Beim
Beschreiben des SRAMs liest er anschließend die Daten aus und vergleicht
diese mit dem zuvor geschriebenen Wert. Ist der Speicher defekt oder einer der
74HC245, so bleibt der Controller in einer Endlosschleife hängen. Nach
erfolgreicher Datenübertragung wird das EA Signal auf Low gelegt und Reset
abgeschaltet. Der Microcontroller im Zielsystem beginnt nun das Programm abzuarbeiten,
was auch durch eine blinkende LED angezeigt wird.
Um nicht nach jedem Abschalten das Programm neu in den SRAM laden zu müssen,
besitzt die Schaltung ein 2kByte oder ein 32kByte EEPROM . Ist Jumper 3 gesetzt,
überprüft der Controller ob sich ein Programm im EEPROM befindet und
läd dies automatisch in den Speicher. Ist das EERPOM leer, so erlischt
die LED. Um ein Programm im EEPROM abzulegen dient der Befehl 0xC3. Mit 0xC4
wird der Inhalt des EEPROMs in den SRAM geladen, vorausgesetzt es befindet sich
ein Programm im EEPROM.
Die Betriebsspannung erhält die Schaltung über den EPROM Sockel. Die
Stromaufnahme liegt je nach SRAM bei etwa 100mA.
Über Jumper 1 und Jumper 2 kann man die Schaltung auch als SRAM konfigurieren
um diese zum Beispiel mit einem Prozessor zu verwenden, der nicht zwischen Arbeitsspeicher
und Programmspeicher unterscheidet. Die vom Prozessor im RAM abgelegten Daten
kann man in den PC einlesen und auswerten. Um den Prozessor nicht jedesmal neuzustarten
könnte man den Reset Ausgang als Halt Signal verwenden um den Prozessor
warten zu lassen, während die Daten zum PC übertragen werden.
Hier nun die Firmeware für den Controller als Hex oder Bin Datei (2kByte Version).
Hier nun die Firmeware für den Controller als Hex oder Bin Datei (32kByte Version).