Kostenlose technische Bibliothek ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK Debug-Modul für Mikrocontroller der MCS51-Serie. Enzyklopädie der Funkelektronik und Elektrotechnik Lexikon der Funkelektronik und Elektrotechnik / Mikrocontroller Die Entwicklung von Geräten auf Basis von Mikrocontrollern (MCUs) erfolgt in der Regel nach einem einfachen Plan: Der MCU wird in einer typischen Verbindung mit der notwendigen Peripherie „beschwert“, dann wird die Software geschrieben. In diesem Fall müssen Sie verschiedene Tools verwenden, die die Routinearbeit erledigen und es dem Programmierer überlassen, kreative Probleme zu lösen. Das im Folgenden beschriebene Gerät ist ein „Halbzeug“ eines Mikrocontrollersystems, ein Werkzeug zu dessen Debugging und Forschungsgegenstand zugleich. Es dient dem Erwerb von Programmier- und Debugging-Kenntnissen für MCS51-Programme, kann aber auch als Modell eines realen Systems dienen und ermöglicht Ihnen das Debuggen von Anwendungssoftware zusammen mit dem Steuerungsobjekt. Mit einem solchen Modul wird dem Entwickler die häufige Verwendung eines Programmiergeräts oder ROM-Emulators erspart, die aufgrund ihrer hohen Kosten für viele unzugänglich sind. Das schematische Diagramm des Debugging-Moduls für den Mikrocontroller der MCS51-Serie ist in der Abbildung dargestellt. Die meisten Knoten sind nach Standardschaltungen hergestellt, und das Schnittstellengerät mit der seriellen Schnittstelle eines Personalcomputers (PC) ist dem im Artikel von S. Kuleshov und Yu. Zaumenny „ROM-Chip-Programmierer“ beschriebenen Gerät entlehnt („ Radio“, 1995, Nr. 10, S. 22-25). An die freien Pins der Ports P1 und P3 des DD1-Mikrocontrollers (im Diagramm enden sie mit Pfeilen) können verschiedene Peripheriegeräte angeschlossen werden. Der XP1-Stecker wird über ein Kabel mit der Buchse eines der seriellen Ports des PCs verbunden, unter dem das Modul betrieben wird. Nach Anlegen der Versorgungsspannung wird der Kondensator C3 über den Widerstand R1 aufgeladen. Basierend auf dem vom Element DD3.4 erzeugten Reset-Signal RES geht MK DD1 in seinen Ausgangszustand über und führt vorbereitende Operationen durch, einschließlich des Setzens des logischen Pegels auf 1 an allen Pins von Port P3. Der Trigger auf den Elementen DD3.1, DD3.2 befindet sich in einem Zustand, in dem sein Ausgangssignal die Speicherverteilung so einstellt, dass der Adressbereich 0-7FFFH des Programmspeichers ROM (DD5) und 8000H-0FFFFH RAM belegt ( DD6). Das im ROM befindliche Monitorprogramm wird ausgeführt. Durch Eingabe von Monitor-Befehlen auf der PC-Tastatur kann der Bediener mit dem RAM und den Modulperipheriegeräten arbeiten. Um den Trigger in einen anderen Zustand zu überführen, ist es notwendig, vom Steuer-PC aus den unten beschriebenen RESET Monitor-Befehl zu senden, der das MOD=0-Signal setzt. Die Adressen von RAM und ROM des Programmspeichers werden vertauscht und das zuvor vom Bediener in den RAM des Moduls eingegebene Programm beginnt zu arbeiten. Auf diese Weise können Sie den Betrieb eines echten Geräts emulieren und Programme überprüfen, die in niedrige Speicheradressen übersetzt wurden und beispielsweise zum Schreiben in das ROM vorbereitet wurden. Mit der Taste SB1 wird der MK in seinen ursprünglichen Zustand zurückgesetzt, ohne die Speicherzuordnung zu ändern. Der Monitor kann nur durch Drücken der SB2-Taste oder durch Aus- und Einschalten neu gestartet werden. Dadurch können zu debuggende Programme frei mit dem Status des P3-Ports arbeiten (z. B. beim Arbeiten mit Peripheriegeräten), ohne befürchten zu müssen, dass die Speicherzuweisung versehentlich geändert wird. Die HL1-LED dient als einfachstes Mittel zur Anzeige von Informationen und ist vor allem dann sehr nützlich, wenn aus irgendeinem Grund keine Verbindung zum PC besteht. Nach dem Anlegen der Stromversorgung blinkt die Anzeige mit einer Frequenz von ca. 1 Hz, was anzeigt, dass der Monitor funktioniert. Die Zenerdiode schützt das Gerät vor Verpolung oder Überspannung der +5 V-Stromversorgung. Das Monitor-Programm (Tabelle 1) ermöglicht die Steuerung des Moduls und seine Interaktion über die serielle RS-232C-Schnittstelle mit einem PC, von dem aus Befehle und Daten übertragen werden, die für die Bearbeitung einer bestimmten Aufgabe erforderlich sind. Über denselben Port empfängt der PC die Ergebnisse des Modulbetriebs und zeigt sie auf seinem Bildschirm an. Auf dem PC muss das Kommunikationsprogramm „Telemax“ von der weit verbreiteten Norton Commander 5.0-Shell, „Hyper Terminal“ von Windows 95 OSR2 oder ein ähnliches Programm ausgeführt werden. Als letzten Ausweg können Sie auf ein spezielles Programm verzichten und einfach Dateien mit vorbereiteten Daten per MS-DOS-Befehl an die serielle Schnittstelle des PCs senden. Beim Einrichten des Kommunikationsprogramms sollten Sie die Modem-Initialisierungsleitungen löschen, die Modi „Lokales Echo“ und „CR/LF-Broadcast“ einstellen und ggf. das ANSI-Terminal und die ASCII-Codetabelle auswählen. Der Betriebsmodus der seriellen Schnittstelle sollte wie folgt sein: Geschwindigkeit – 4800 Baud, Anzahl der Bits pro Zeichen – 8, Paritätskontrolle deaktiviert, Anzahl der Stoppbits – 1. Wenn alles korrekt ist, wird der auf der PC-Tastatur eingegebene Text angezeigt an das Debugging-Modul gesendet und seine Antworten werden auf dem Bildschirm angezeigt. Monitorbefehle können sowohl in Groß- als auch in Kleinbuchstaben eingegeben werden. Alle Zeichen müssen in ASCII-Kodierung vorliegen. Die [BackSpace]-Taste löscht das zuletzt eingegebene Zeichen aus dem Puffer des Debug-Moduls. Jeder Befehl besteht aus einem Namen und einem Operanden. Das Ende eines Namens wird durch ein Trennzeichen angezeigt: Leerzeichen, Tabulator, Zeilenvorschub oder Wagenrücklauf. Im Folgenden kennzeichnen wir es herkömmlicherweise mit einem Unterstrich (_), Sie können jedoch auch jedes der oben genannten eingeben. Nach Erhalt des Trennzeichens vergleicht der Monitor die ersten vier zuvor empfangenen Zeichen im Puffer mit dem Inhalt der Befehlstabelle im ROM. Sobald eine Übereinstimmung gefunden wurde, merkt es sich die Adresse des Befehlshandlers aus derselben Tabelle und beginnt mit dem Empfang eines Operanden – einer oder mehrerer Hexadezimalzahlen. Lassen Sie uns vereinbaren, dass die Ein- und Zwei-Byte-Adressen des internen und externen Speichers des MK mit XX bzw. XXXX bezeichnet werden, die Blocklänge - YYYY, andere Daten - ZZ oder ZZZZ. Beispielsweise ist XXXX,YYYY ein Block des externen Datenspeichers, beginnend bei Adresse XXXX, Länge YYYY Bytes. Alle führenden Nullen müssen enthalten sein. Der Operand muss außerdem mit einem Trennzeichen enden, bei dessen Empfang der Befehlshandler startet. Ein in einen leeren Puffer eingegebenes Trennzeichen wird ignoriert. RESET_ ZZZZ_ – der zweite Speicherzuweisungsmodus wird aktiviert, der MK wird in seinen ursprünglichen Zustand zurückversetzt, die Steuerung wird an die Adresse ZZZZ übertragen. Für den normalen Betrieb des Befehls ist Arbeitsspeicher erforderlich. DATA_ XXXX:_ ZZ_ [ZZ_][XXXX:_ZZ_ [ZZ_]._ - Informationen werden in aufeinanderfolgende Zellen des externen Datenspeichers eingegeben, beginnend mit der Adresse XXXX. Die Eingabe von eckigen Klammern ist nicht erforderlich; sie geben lediglich an, dass die Anzahl der ZZ_-Operanden beliebig sein kann. Die Dateneingabe endet mit einem Punktsymbol. In der Tabelle Abbildung 2 zeigt ein Beispiel für die Verwendung der Befehle DATA und RESET, um ein einfaches Programm in den RAM einzugeben und auszuführen. READ_XX_ oder READ_XXXX_ – ein Wort (zwei aufeinanderfolgende Bytes) wird aus Speicherzellen des internen oder externen Daten-RAM gelesen. Das Ergebnis wird in Form einer Hexadezimalzahl (Byte an der höchsten Adresse zuerst) an die serielle Schnittstelle übertragen. WRITE_XX,ZZ_, WRITE_XX,ZZZZ_, WRITE_XXXX,ZZ_ oder WRITE_XXXX,ZZZZ_ – Byte ZZ oder Wort ZZZZ wird an Adresse XX oder XXXX geschrieben. Bitte beachten Sie, dass die READ- und WRITE-Anweisungen über indirekte Adressierung implementiert sind und daher nicht mit Sonderfunktionsregistern arbeiten können. Um auf Register zugreifen zu können, müssen für jedes Register speziell Austauschprozeduren mit direkter Adressierung geschrieben werden. Ein Beispiel wäre der SPEED-Befehlshandler. Wenn das Modul über eine MCU mit 256 Byte internem RAM verfügt, können die READ- und WRITE-Befehle mit den zusätzlichen 128 Byte an den Adressen 80H-0FFH arbeiten. LOAD_XXXX,YYYY_ – gefüllt mit Informationen, die über die serielle Schnittstelle, einen externen Datenspeicherblock, empfangen wurden. SAVE_XXXX,YYYY_ – der Inhalt des externen Datenspeicherblocks wird an die serielle Schnittstelle übertragen. CALL_ZZZZ_ – das Unterprogramm ab Adresse ZZZZ wird aufgerufen. Um zum Monitor zurückzukehren, muss dieser mit dem RET-Befehl beendet werden. Interrupts sind deaktiviert, während das Unterprogramm ausgeführt wird. CHECK_XXXX,YYYY_ – die Prüfsumme wird berechnet – das Low-Byte der Summe aller Bytes des externen Datenspeicherblocks. FILL_XXXX,YYYY,ZZ_ – der externe Datenspeicherbereich wird mit dem ZZ-Byte gefüllt und seine Prüfsumme wird berechnet. COPY_XXXX,YYYY,ZZZZ_ oder COPY_PXXXX,YYYY,ZZZZ_ – der externe Datenspeicherblock wird an die Adresse ZZZZ kopiert. Das P-Zeichen gibt an, dass sich der zu kopierende Bereich im Programmspeicher befindet. Gleichzeitig wird die Prüfsumme berechnet. TEST_XXXX,YYYY_ – Die Funktionsfähigkeit des externen RAM-Blocks wird überprüft. Wenn keine Fehler vorliegen, wird die Meldung „OK“ angezeigt, andernfalls „XXXX: YY<>ZZ“, wobei XXXX die Adresse der fehlerhaften Zelle, YY der in sie geschriebene Wert und ZZ der gelesene Wert ist. Der Befehl zerstört nicht den Inhalt des RAM. SPEED_ZZ_ oder SPEED_ZZ+_ – ändert die Geschwindigkeit des Datenaustauschs über die serielle Schnittstelle. Standardmäßig beträgt sie 4800 Baud (bestimmt durch das Monitor-Programmbyte an Adresse 2DH). Ein Wert, der dem Operanden ZZ entspricht, wird im TH1-Register des Mikrocontrollers abgelegt und bestimmt die Betriebsgeschwindigkeit seines Transceivers. Ein Pluszeichen im Operanden bewirkt, dass die Geschwindigkeit durch Setzen des PCON.7-Bits verdoppelt wird. Der serielle PC-Anschluss kann mit Baudraten von 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 und höher betrieben werden. Die Fähigkeit, den seriellen Port der MCU der MSC51-Serie bei den angegebenen Geschwindigkeiten ziemlich genau zu konfigurieren, hängt von der Frequenz des verwendeten Quarzresonators ab. Wenn es beispielsweise 12 MHz ist, kann der Port mit dem SPEED-Befehl mit den Operanden 300, CC, E600, F1200 bzw. F2400+ auf 4800, 98, 6, 3 und 3 Baud konfiguriert werden. Mit einem 11-MHz-Resonator konnte eine Geschwindigkeit von 9600 Baud erreicht werden. Allerdings wird der MK bei der Übertragung von Dateien wahrscheinlich nicht in der Lage sein, mit zu hoher Geschwindigkeit eintreffende Daten zu verarbeiten. Der beschriebene Befehlssatz kann erweitert und ergänzt werden, ohne den Monitor neu zu übersetzen und sogar ohne das ROM zu löschen. Der neue Befehlshandler wird in seinem freien Bereich platziert. Der Befehlsname (die ersten vier Zeichen in Großbuchstaben) wird beginnend bei Adresse 5ABH geschrieben, gefolgt von der Zwei-Byte-Handler-Adresse und dem Byte 0FFH. Der Handler muss mit einem Übergang zur Adresse 23FH enden. Alle unten genannten Einzelbyte-Zellenadressen beziehen sich auf das interne RAM des MK. Der Monitor verwendet die Registerbänke 0 und 2 sowie die Zellen 20H-3FH. Der Stack wächst ab Adresse 50H. Wenn der Mikrocontroller keine Befehle empfängt und verarbeitet, führt er kontinuierlich ein Unterprogramm aus, das sich im ROM an der in den Zellen 35H und 36H angegebenen Adresse befindet. Standardmäßig ist es 063H. Diese Unterroutine ändert regelmäßig den Zustand der P3.4-Entladung, leuchtet auf und schaltet die HL1-LED aus. Die Blinkfrequenz hängt vom Inhalt der 3DH-Zelle ab. Wenn dieses Bit für andere Zwecke verwendet werden soll, sollte der Befehl WRITE_35,006A_ ausgegeben werden. Die Zellen 37H und 38H enthalten die Adresse des Interrupt-Handlers für die serielle Schnittstelle, der tatsächlich als Rückgrat des Monitors dient und dessen Reaktion auf Bedienerbefehle bestimmt. Standardmäßig wird hier 0 geschrieben, was dem Aufruf des Standardhandlers entspricht, der sich im ROM unter der Adresse 081H befindet. Durch Schreiben eines Codes ungleich 3 auf die Adresse 0BH können Sie die Funktion „Echo“ aktivieren. Der Monitor sendet alle über die serielle Schnittstelle empfangenen Daten zurück. Dadurch können Sie „Local Echo“ im Kommunikationsprogramm ausschalten und bei Bedarf alle an das Debugging-Modul gesendeten Befehle und dessen Antworten darauf in einer Textdatei speichern. Die Zahl an der Adresse 3AH gibt die Pause zwischen dem Empfang eines Befehls durch den Monitor und der Reaktion darauf an, die erforderlich ist, um einige Kommunikationsprogramme von Senden auf Empfang umzustellen (dies ist für „Telemax“ nicht erforderlich). Sie entspricht der Dauer der Pause in Sekunden multipliziert mit 50. Eines der Ergebnisse der Befehle, die Speicherblöcke bearbeiten (LOAD, SAVE, CHECK, FILL, COPY), ist die in Zelle 39H platzierte Blockprüfsumme. Damit kann die korrekte Ausführung der aufgeführten Befehle überwacht werden. Der Monitor kann Dateien im Intel HEX-Format, die von vielen Assemblern erstellt wurden, direkt akzeptieren. Es reicht aus, eine solche Datei mit einem Kommunikationsprogramm oder einfach mit dem MSDOS-Befehl COPY <Dateiname> COM2 an die serielle Schnittstelle des PCs zu senden. Der zuvor verwendete Port (in diesem Fall COM2) muss mit dem MODE-Befehl COM2:4800,N,8,1 konfiguriert werden. Die Informationen werden in den externen Datenspeicher des Debugging-Moduls geschrieben und bei Nichtübereinstimmung der Prüfsummen wird eine entsprechende Meldung ausgegeben. Jede Zeile einer Intel HEX-Datei beginnt mit einem Doppelpunkt, gefolgt von den folgenden zweistelligen hexadezimalen Bytes ohne Leerzeichen:
Eine HEX-Datei endet immer mit einer Zeile, die nach einem Doppelpunkt null Daten- und Adressbytes enthält, gefolgt von einem Flag für die letzte Zeile (01) und einer Prüfsumme gleich FF. Tabelle 3 zeigt ein Beispiel für eine solche Datei, die dieselben Daten enthält, die mit dem Befehl „Monitor DATA“ gemäß Tabelle 2 eingegeben wurden. Autor: V. Ogleznev, Ischewsk Siehe andere Artikel Abschnitt Mikrocontroller. Lesen und Schreiben nützlich Kommentare zu diesem Artikel. Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik: Eine neue Möglichkeit, optische Signale zu steuern und zu manipulieren
05.05.2024 Primium Seneca-Tastatur
05.05.2024 Das höchste astronomische Observatorium der Welt wurde eröffnet
04.05.2024
Weitere interessante Neuigkeiten: ▪ Steigerung der Photosyntheserate ▪ Elektronischer Willenstrainer News-Feed von Wissenschaft und Technologie, neue Elektronik
Interessante Materialien der Freien Technischen Bibliothek: ▪ Abschnitt der Website Arbeitssicherheit. Artikelauswahl ▪ Artikel Kreide zum Schutz der Datei. Tipps für den Heimmeister ▪ Artikel Wo leben die meisten Tiger? Ausführliche Antwort ▪ Artikel Molder. Standardanweisung zum Arbeitsschutz
Hinterlasse deinen Kommentar zu diesem Artikel: Alle Sprachen dieser Seite Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen www.diagramm.com.ua |