Mikrocontroller-(MCU)-Schaltkreise
TINA v7 und höhere Versionen unterstützen PIC- Mikrocontroller; Unterstützung für weitere MCUs wird ständig zu TINA hinzugefügt. Obwohl Sie Ihre eigenen Mikrocontroller, die durch VHDL beschrieben werden, hinzufügen können, sind die in TINA eingebauten Mikrocontroller für eine höhere Leistung vorcompiliert. Ihr VHDL-Code ist für den Anwender nicht sichtbar. In jedem Fall können Sie das Programm, das in jedem der unterstützten Prozessoren läuft, sehen, ändern und in ihm Fehler suchen, und natürlich können Sie eigenen Code erstellen und ausführen lassen.
Es gibt zwei Möglichkeiten, das Programm für Mikrocontroller in TINA bereitzustellen. Sie können die Binärcode- und Debug-Datei benutzen, die von einem beliebigen Standard- Compiler (z.B. MPLAB für PICs) erstellt wurde, oder Sie können einfach Ihren Assembler-Code laden, um ihn mit dem eingebauten Assembler-Debugger direkt in TINA ausführen zu lassen und Fehler zu suchen.
PIC-Blinkeinrichtung
Laden Sie den Schaltkreis PI C Flasher.TS C aus dem Ordner Examples\VHDL\PIC\Asm. Es erscheint folgender Schaltplan mit dem 16F73 PIC Mikrocontroller.
, um zu sehen, wie er arbeitet. Die Anzeige muss immer um eins weiterzählen.
Doppelklicken Sie auf die MCU und klicken Sie auf die Schaltfläche im unten stehenden Dialog -
Klicken Sie auf die Schaltfläche ASM editieren. Es erscheint der ASM- Code der MCU im MCU-Quellcode-Editor.
Wir wollen nun die folgende Änderung im Code durchführen. Ändern Sie die Instruktion (oben ausgewählt) in Zeile 25 (die Zeilennummer können Sie in der rechten unteren Ecke des Code-Editor-Fensters sehen)
von
addlw 01H
in
addlw 02HSpeichern Sie den geänderten Code, indem Sie auf das Symbol klicken, und schließen Sie die offenen MCU-Fenster. Wenn Sie auf die Schaltfläche klicken, wird der Erhöhungsschritt jetzt 2 sein! Beachten Sie, dass der geänderte Code automatisch in der Datei TINA.TSC gespeichert wird.
Using the debugger
Nun wollen wir eine andere Anwendung mit etwas mehr Interaktivität ansehen.
Load the PIC16F84interrupt_rb0.TSC example of TINA from the Examples\VHDL\PIC\Asm folder.
Klicken Sie auf die Schaltfläche Auf den ersten Blick scheint es so, als ob nichts geschehen sei.
Wenn Sie jedoch auf den Schalter SW-HL1 klicken, schaltet die Anzeige jedes Mal, wenn der Schalter von Low auf High wechselt um 1 weiter. Dies wird durch die Interrupt-Verarbeitung des PIC16F84 realisiertNun wollen wird die Funktion detaillierter unter Verwendung des interaktiven ASM-Debuggers ansehen.
Um den Debugger zu aktivieren, wählen Sie Optionen im Menü Analyse. Markieren Sie das Kontrollkästchen “MCU Code Debugger aktivieren” im Dialogfeld Analyse Optionen, wie unten gezeigt.
Der MCU-Debugger erscheint, wenn Sie auf die Schaltfläche klicken:
Wir wollen das Programm Schritt für Schritt ausführen lassen, indem wir auf die Schaltfläche Ablaufverfolgung klicken. Nach ungefähr 14 Klicks kommen wir zur Marke PT1, wo das Programm in einer Endlosschleife zu sein scheint.
PT1: INCF TEMP, F GOTO PT1
Klicken Sie nun auf das Schaltfeld SW-HL1 und ändern es auf High- Pegel. (Sie müssen klicken, wenn der Zeiger sich in einen nach oben zeigenden Pfeil Î ändert).
Kehren Sie zurück zum Debugger, und klicken Sie zweimal auf die Schaltfläche Ablaufverfolgung.
Das Programm erkennt den Interrupt und springt auf die Marke INT_SERV:
NT_SERV: label.Inkrementieren Sie den Zähler COUNTER, und kopieren Sie ihn zu PORT A. Der Ausgang ist nun 1. Danach kehrt das Programm zurück zur “Endlosschleife” an PT1.INT_SERV:
INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORT
Editieren des Codes im Debugger
Nun wollen wir sehen, wie wir unter Verwendung des Debuggers eine kleine Änderung im Programm vornehmen können. Duplizieren Sie den Befehl INCF COUNTER, F unter Verwendung von Kopieren und Einfügen, wie folgt:
INT_SERV: INCF COUNTER, F INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORTA
Wenn Sie nun auf klicken, fragt das Programm:
Klicken Sie auf Ja, klicken Sie dann erneut auf die Schaltfläche Nun wird bei jedem Low-High-Wechsel des Schalters um 2 inkrementiert. Sie können den Schaltkreis auch im kontinuierlichen Ausführungs-Modus des Debuggers testen, indem Sie auf die Schaltfläche klicken. Ob wohl der D e bu g g er sc hnell läuft, k önnen Sie die “Endlosschleife” und den Sprung in die Interrupt-Service-Rou- tine ( INT_SERV: ) noch sehen, wenn Sie den Schalter ändern..
Festlegung eines Unterbrechungspunktes
Lassen Sie nun das Programm unter Verwendung des Befehls Ausführen im kontinuierlichen Modus des Debuggers laufen, und das Programm hält an der markierten Stelle vor der Ausführung des markierten Befehls an. Um dies zu demonstrieren, klicken Sie auf den Inkrementierungs-Befehl in unserer Interrupt Service Routine hinter der Marke INT_SERV: und klicken Sie auf die Schaltfläche Unterbrechungspunkt umschalten.
Klicken Sie nun auf die Schaltfläche Ausführen. Fas Programm beginnt zu laufen und gelangt in die “Endlosschleife”. Obwohl sie einen Unterbrechungspunkt eingestellt haben, hält der Code nicht an, weil er nicht zum Unterbrechungspunkt gelangt. Wenn Sie jedoch den ersten Schalter von Low auf High ändern, hält das Programm am Befehl
INT_SERV: INCF COUNTER, Fan. Nun können Sie die Ausführung wieder aufnehmen, entweder schrittweise mit oder mit dem Befehl Ausführen.