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).

 

Zurück