Erstellen von Simulationsfuntionen

Werbung
04EI
µVision Debugger
Set
Breakpoint
Start
Debugger
Version 1.0
µ
µVision
Seite 1
04EI
µVision Simulator
Tools zur Beeinflussung von SFR's
Version 1.0
µ
µVision
Seite 2
04EI
Simulationsfunktionen
Simulationsfunktionen sind Funktionen in C-Syntax (ähnlich), die
• während des Debug-Vorgangs aus dem Commandofenster gestartet
werden können (statisch und dynamisch),
• gebunden an einen Haltepunkt ausgeführt werden können (ohne das
Targetprogramm zu stoppen),
• parallel zur Ausführung des Targetprogrammes ablaufen können.
Das Erstellen von Debug-Funktionen erfolgt nach dem Start der DebugSession im Menü Debug-Function-Editor. Es gibt zwei unterschiedliche Arten
von Funktionen:
FUNC-Funktionen: Werden nach ihrem Start direkt ausgeführt, das
Targetprogramm hält während ihrer Ausführung an.
SIGNAL-Funktionen: Werden gestartet und laufen bis zum ersten Aufruf der
Systemfunktion "twatch(prm)", dann erfolgt für die als Parameter prm
angegbene Anzahl von Maschinenzyklen die Ausführung des
Targetprogrammes ehe die Simulationsfunktion weiter fortgeführt wird.
Innerhalb der Simulatorfunktionen kann mit SFR's, globalen Variablen des Targets
und virtuellen Target Registern gearbeitet werden. Parameterübergabe und
Definition lokaler Variabler ist möglich.
Version 1.0
µ
µVision
Seite 3
04EI
Simulationsfunktionen
Virtuelle Target Register (VTREG):
AINx
Analoger Eingang des Chip. Das Programm des Targets kann die Werte
einlesen, die auf AINx hinterlegt wurden.
PORTx Eine Gruppe von I/O Anschlüssen des Chips. PORT2 z.B. bezieht sich auf alle
16 Pins von P2. Mit diesen VT-Registern können beliebige I/O-Ports simuliert
werden.
SxIN
Input-Buffer der seriellen Schnittstelle x. Man kann 8-Bit- oder 9-Bit- Werte auf
SxIN schreiben. Diese können dann durch das Target-Programm empfangen
werden. Durch Lesen von SxIN lässt sich feststellen ob der Buffer für den
Empfang eines neuen Zeichens bereit ist. Der Wert 0xFFFF zeigt an, dass
das vorhergehende Zeichen übernommen wurde.
SxOUT Ausgabepuffer der seriellen Schnittstelle x. Es werden 8-Bit oder 9-Bit-Werte
(wie durch das Target-Programm festgelegt) in das VT-Register kopiert..
SxTIME Bestimmt das Timing der Baudrate der seriellen Schnittstelle x. Mit SxTIME=1
wird die Targetrate verwendet. SxTIME=0 (default) ignoriert das Targettiming,
die Ausgabe erfolgt sofort.
CLOCK Taktfrequenz der simulierten CPU wie sie durch das Menü Options – Target
festgelegt wurde. "twatch(CLOCK)" realisiert eine Wartezeit von genau 1 sec!
Version 1.0
µ
µVision
Seite 4
04EI
Simulationsfunktionen
/* Toggle Port P2.0 and Set P2.8 */
FUNC void SetP28_ToggleP20 (void) {
PORT2 ^= 0x0001;
/* invert value on Port2.0 */
PORT2 |= 0x0100;
/* set bit Port2.8 */
}
/* Simulate analog input ramp on analog input AIN0 */
SIGNAL void analog0 (float limit) {
float volts;
printf (“ANALOG0 (%f) ENTERED\n”, limit);
volts = 0;
while (volts < limit) {
Wartet die angegebene
volts += 0.1;
Anzahl von Maschinenzyklen
ab - d.h. das Targetprogramm
AIN0 = volts;
läuft innerhalb dieses
twatch (1000);
Zeitraums
}
}
Version 1.0
µ
µVision
Seite 5
04EI
Simulationsfunktionen
/* Simulate input to serial0 'ABC' in 1 sec intervals endless */
5
SIGNAL void serial_input (void) {
while (1) {
/* repeat forever */
twatch (CLOCK);
/* Delay for 1 second */
S0IN = 'A';
/* Send first character */
twatch (CLOCK / 900);
/* Delay for 1 character time */
/* 900 is good for 9600 baud */
S0IN = 'B';
/* Send next character */
twatch (CLOCK / 900);
S0IN = 'C';
/* Send final character */
}
/* repeat */
}
/* Square wave on P1H7 with a frequency of 1000Hz */
SIGNAL void P1H7_1000hz (void) {
while (1) {
/*
PORT1H |= 0x80;
/*
twatch (CLOCK / 2000); /*
PORT1H &= ~0x80;
/*
twatch (CLOCK / 2000); /*
}
/*
}
Version 1.0
µ
repeat forever */
set P1H7 */
delay for .0005 secs */
clear P1H7 */
delay for .0005 secs */
repeat */
µVision
Seite 6
Herunterladen