-
Die
vorliegende Erfindung betrifft ein Verfahren gemäß dem Oberbegriff des Patentanspruchs
1, d. h. ein Verfahren, durch welches einer ersten Komponente einer
elektrischen Schaltung von einer zweiten Komponente der elektrischen
Schaltung durch die Übertragung
eines Statussignals signalisiert wird, daß in der zweiten Komponente
ein Zustand oder ein Ereignis aufgetreten ist, der bzw. das eine
Reaktion der ersten Komponente erfordert,
- – wobei
in der zweiten Komponente erste Daten gespeichert sind, die beim
Auftreten eines ersten Zustandes oder Ereignisses, der bzw. das
eine Reaktion der ersten Komponente erfordert, durch die zweite
Komponente auf einen bestimmten Wert gesetzt werden und durch die
erste Komponente zurückgesetzt
werden können,
- – wobei
in der zweiten Komponente zweite Daten gespeichert sind, die beim
Auftreten eines zweiten Zustandes oder Ereignisses, der bzw. das eine
Reaktion der ersten Komponente erfordert, durch die zweite Komponente
auf einen bestimmten Wert gesetzt werden und durch die erste Komponente
zurückgesetzt
werden können,
und
- – wobei
die ersten Daten und die zweiten Daten einer logischen Verknüpfung unterzogen
werden und das Ergebnis der logischen Verknüpfung als das zur ersten Komponente übertragene
Statussignal verwendet wird.
-
Im
betrachteten Beispiel ist die elektrische Schaltung eine programmgesteuerte
Einheit, genauer gesagt ein Mikrocontroller.
-
Der
prinzipielle Aufbau eines Mikrocontrollers ist in 1 dargestellt.
Der in der 1 gezeigte Mikrocontroller 1 enthält eine
CPU 11, einen Analog/Digital-Wandler 12, und eine
Reihe weiterer Komponenten 13 bis in, wobei diese weiteren Einrichtungen
beispielsweise einen Digital/Analog-Wandler, eine Komprimierungseinrichtung,
einen Timer, eine oder mehrere Speichereinrichtungen und/oder beliebige
weitere Einrichtungen umfassen können,
die Bestandteil eines Mikrocontrollers sein können. Die genannten Komponenten
des Mikrocontrollers, d. h. die CPU 11, der Analog/Digital-Wandler 12,
und die weiteren Komponenten 13 bis in sind über einen
Bus BUS miteinander verbunden. Einzelne Komponenten können zusätzlich über eine
oder mehrere zusätzliche
Leitungen verbunden sein. Beispielsweise sind im betrachteten Beispiel
die CPU 11 und der Analog/Digital-Wandler 12 über eine
zusätzliche
Leitung IRQL miteinander verbunden.
-
Von
den genannten Mikrocontroller-Komponenten interessieren vorliegend
insbesondere die CPU 11 und der Analog/Digital-Wandler 12.
Die CPU 11 ist die eingangs erwähnte erste Komponente, und der
Analog/Digital-Wandler 12 die eingangs erwähnte zweite
Komponente.
-
Dem
Analog/Digital-Wandler 12 werden über in der 1 nicht
gezeigte Eingangsanschlüsse
des Mikrocontrollers ein oder mehrere analoge Signale zugeführt, die
durch den Analog/Digital-Wandler 12 in digitale Werte umgesetzt
werden. Diese digitalen Werte werden in drei im Analog/Digital-Wandler 12 enthaltene
Ergebnisregister 121, 122, 123 geschrieben.
Wann der Analog/Digital-Wandler 12 welches analoge Signal
zu wandeln hat, und in welches Ergebnisregister das Wandlungsergebnis
zu schreiben ist, wird dem Analog/Digital-Wandler 12 durch die CPU 11 oder
eine andere Mikrocontroller-Komponente
vorgegeben oder ist im Analog/Digital-Wandler 12 eingestellt.
-
Jedes
der Ergebnisregister 121 bis 123 enthält ein Valid-Bit
V, welches anzeigt, ob seit dem letzten Auslesen eines jeweiligen
Ergebnisregisters ein neuer digitaler Wert in das jeweilige Ergebnisregister geschrieben
wurde. Dieses Valid-Bit wird nach jedem Einschreiben eines neuen
Wertes in das Ergeb nisregister gesetzt und nach jedem Auslesen des
im Ergebnisregister gespeicherten Wertes zurückgesetzt. Genauer gesagt ist
es so,
- – daß das Valid-Bit
des Ergebnisregisters 121 nach dem Einschreiben von Daten
in das Ergebnisregister 121 gesetzt, und nach dem Auslesen der
im Ergebnisregister 121 gespeicherten Daten zurückgesetzt
wird,
- – daß das Valid-Bit
des Ergebnisregisters 122 nach dem Einschreiben von Daten
in das Ergebnisregister 122 gesetzt, und nach dem Auslesen der
im Ergebnisregister 122 gespeicherten Daten zurückgesetzt
wird, und
- – daß das Valid-Bit
des Ergebnisregisters 123 nach dem Einschreiben von Daten
in das Ergebnisregister 123 gesetzt, und nach dem Auslesen der
im Ergebnisregister 123 gespeicherten Daten zurückgesetzt
wird.
-
Das
Setzen des Valid-Bits V erfolgt jeweils durch den Analog/Digital-Wandler 12,
und das Rücksetzen
durch die das Ergebnisregister auslesende Komponente, welches im
betrachteten Beispiel die CPU 11 ist.
-
Wenn
in eines oder mehrere der Ergebnisregister 121 bis 123 ein
neuer Wert geschrieben wurde, signalisiert der Analog/Digital-Wandler 12 der
CPU 11 diesen Zustand bzw. dieses Ereignis durch ein über die
Leitung IRQL übertragenes
Statussignal.
-
Wenn
die CPU 11 anhand des ihr über die Leitung IRQL zugeführten Statussignals
erkennt, daß in
eines oder mehrere der Ergebnisregister ein neuer Wert geschrieben
wurde, unterbricht sie bei der nächsten
Gelegenheit die Ausführung
des von ihr gerade ausgeführten
Programmes und führt
eine Interrupt Service Routine aus. Diese Interrupt Service Routine überprüft der Reihe
nach für
jedes Ergebnisregister, ob in den Ergebnisregistern 121 bis 123 neue
Daten gespeichert sind und liest die in den Ergebnisregistern gespeicherten
Daten aus, wenn es sich um neue Daten handelt. Die Überprüfung erfolgt durch
die Auswertung des Inhaltes der Valid-Bits V der jeweiligen Ergebnisregister 121 bis 123.
Wenn aus einem Ergebnisregister Daten ausgelesen wurden, setzt die
CPU 11 das in diesem Ergebnisregister enthaltene Valid-Bit
zurück.
-
Bedingt
durch den Umstand, daß die
Interrupt Service Routine bei jedem Aufruf jeweils für alle Ergebnisregister 121 bis 123 überprüft, ob diese neue
Daten enthalten, und jeweils alle neuen Daten ausliest, kann das
vom Analog/Digital-Wandler 12 zur CPU 11 übertragene
Statussignal das Ergebnis einer ODER-Verknüpfung der Valid-Bits V der
Ergebnisregister 121 bis 123 sein, und kann dieses
Signal über
eine einzige Leitung IRQL zur CPU 11 übertragen werden. Die ODER-Verknüpfung erfolgt
durch ein im Analog/Digital-Wandler 12 vorgesehenes ODER-Gatter 124.
-
Bei
einem derart gebildeten Statussignal überprüft die CPU 11 vorzugsweise
durch einen Flankendetektor, ob in eines oder mehrere der Ergebnisregister 121 bis 123 neue
Daten geschrieben wurden. D. h., die CPU 11 erkennt am
Wechsel des Pegels des Statussignals vom niedrigen Pegel auf den hohen
Pegel (oder umgekehrt), daß in
eines oder mehrere der Ergebnisregister 121 bis 123 neue
Daten geschrieben wurden.
-
Hierbei
können
unter bestimmten Umständen
jedoch Fehler auftreten. Dies ist beispielsweise der Fall, wenn
während
des Auslesens eines Ergebnisregisters in ein anderes Ergebnisregister
neue Daten geschrieben werden. Die hierbei ablaufenden Vorgänge werden
im folgenden kurz anhand eines Beispiels erläutert.
-
Es
sei angenommen, daß gerade
die Interrupt Service Routine ausgeführt wird, die der Reihe nach
für jedes
Ergebnisregister überprüft, ob in
den Ergebnisregistern 121 bis 123 neue Daten gespeichert
sind und die in den Ergebnisregistern gespeicherten Daten ausliest,
wenn es sich um neue Daten handelt. Es sei ferner angenommen, daß das zweite Ergebnisregister 122 und
das dritte Ergebnisregister 123 noch nicht aus gelesene
neue Daten enthalten. Darüber
hinaus sei angenommen, daß die
Interrupt Service Routine die von ihr auszuführenden Aktionen zuerst für das erste
Ergebnisregister 121, dann für das zweite Ergebnisregister 122,
und zuletzt für
das dritte Ergebnisregister 123 durchführt.
-
Demnach
führt die
Interrupt Service Routine der Reihe nach folgende Schritte aus:
S1)
Auslesen und Auswerten des Valid-Bits V des ersten Ergebnisregisters 121;
Feststellung, daß die im
ersten Ergebnisregister 121 gespeicherten Daten nicht ausgelesen
werden müssen,
S2)
Auslesen und Auswerten des Valid-Bits V des zweiten Ergebnisregisters 122;
Feststellung, daß die im
zweiten Ergebnisregister 122 gespeicherten Daten ausgelesen
werden müssen,
S3)
Auslesen der im zweiten Ergebnisregister 122 gespeicherten
Daten,
S4) Zurücksetzen
des Valid-Bits V des zweiten Ergebnisregisters 122,
S5)
Auslesen und Auswerten des Valid-Bits V des dritten Ergebnisregisters 123;
Feststellung, daß die im
dritten Ergebnisregister 123 gespeicherten Daten ausgelesen
werden müssen,
S6)
Auslesen der im dritten Ergebnisregister 123 gespeicherten
Daten,
S7) Zurücksetzen
des Valid-Bits V des dritten Ergebnisregisters 123, und
S8)
Beenden der Interrupt Service Routine.
-
Da
die Ausführung
der Schritte S1 bis S8 sehr schnell vonstatten geht, ist es im Normalfall
so, daß mit
der Ausführung
des Schrittes S7 alle Valid-Bits zurückgesetzt sind, und folglich
auch das über
die Leitung IRQL zur CPU 11 übertragene Statussignal zurückgesetzt
wird. Wenn danach eines der Ergebnisregister 121 bis 123 beschrieben
und das zugeordnete Valid-Bit V gesetzt wird, wird auch das zur
CPU 11 übertragene
Statussignal gesetzt. Die dadurch im Statussignal auftretende Flanke
wird durch die CPU 11 erkannt und zum Anlaß genommen,
die Interrupt Service Routine erneut auszuführen.
-
Andererseits
kann aber auch der Fall auftreten, daß während der Ausführung der
Interrupt Service Routine in ein Ergebnisregister, für welches
die Interrupt Service Routine die von ihr auszuführenden Aktionen bereits ausgeführt hat,
neue Daten geschrieben werden und das zugehörige Valid-Bit gesetzt wird,
also daß beispielsweise
während
der Ausführung
des Schrittes S6 in das Ergebnisregister 121 neue Daten
geschrieben werden und das Valid-Bit des Ergebnisregisters 121 gesetzt
wird. Dies hätte zur
Folge, daß nach
der Ausführung
des Schrittes S7 nicht alle Valid-Bits zurückgesetzt sind, und folglich auch
das über
die Leitung IRQL zur CPU 11 übertragene Statussignal nicht
zurückgesetzt
wird. Da das Beschreiben des Ergebnisregisters 121 auch
nicht das Auftreten einer Flanke in dem zur CPU 11 übertragenen
Statussignal zur Folge hatte (zu diesem Zeitpunkt war das Statussignal
aufgrund des noch nicht zurückgesetzten
Valid-Bits des Ergebnisregisters 123 noch gesetzt), kann
die (nur auf Flanken im Statussignal reagierende) CPU 11 nicht
wissen, daß bereits
wieder ein Ergebnisregister mit neuen Daten beschrieben wurde. Folglich
kommt es nicht zu einer erneuten Ausführung der Interrupt Service
Routine. Ohne eine erneute Ausführung
der Interrupt Service Routine kann das Statussignal aber nicht zurückgesetzt
werden; das Statussignal wird nur zurückgesetzt, wenn alle Valid-Bits
zurückgesetzt
sind, und das Zurücksetzen
der Valid-Bits kann nur durch die Interrupt Service Routine erfolgen.
Folglich wird die Interrupt Service Routine bis zum Ausschalten
und Wiedereinschalten oder Zurücksetzen
des Mikrocontrollers nicht mehr ausgeführt, und werden die in die Ergebnisregister 121 bis 123 geschriebenen
Daten nicht mehr ausgelesen.
-
Eine
andere Möglichkeit,
um der CPU 11 das Einschreiben von Daten in eines der Ergebnisregister 121 bis 123 des
Analog/Digital-Wandlers zu signalisieren, besteht darin, daß bei jedem
Einschreiben von neuen Daten in eines der Ergebnisregister 121 bis 123 ein
kurzer Impuls über
die Leitung IRQL zur CPU 11 übertragen wird. Bei einer derartigen
Vorgehensweise können
die vorstehend genannten Probleme nicht auftreten. Allerdings können die über die Leitung
IRQL übertragenen
Statussignal-Impulse in der CPU 11 nur durch einen Flankendetektor
zuverlässig
erfaßt
werden. Insbesondere ist es nicht oder jedenfalls nicht zuverlässig möglich, die
Statussignal-Impulse
durch eine in vorbestimmten zeitlichen Abständen erfolgende Abfrage des
Statussignal-Pegels (Polling) zu erfassen. Um eine zuverlässige Erfassung
der Statussignal-Impulse zu gewährleisten, müßte sichergestellt
werden, daß zwischen
zwei aufeinanderfolgenden Statussignal-Flanken eine Zeit vergeht,
die größer ist
als die zwischen zwei aufeinanderfolgenden Abfragezeitpunkten liegende
vorbestimmte Zeit. Da die Ergebnisregister 121 bis 123 aber
zu beliebigen Zeitpunkten beschrieben und ausgelesen werden können, kann
nicht gewährleistet werden,
daß diese
Bedingung unter allen Umständen erfüllt ist.
Erschwerdend kommt hinzu, daß das
Taktsignal, mit welchem die CPU 11 arbeitet, und das Taktsignal,
mit welchem der Analog/Digital-Wandler 12 arbeitet, verschiedene
Taktsignale sein können, die
sich sowohl hinsichtlich der Frequenz als auch hinsichtlich der
Phasenlage unterscheiden können. Daß die Statussignal-Impulse
nicht durch Polling erfaßt
werden können,
wäre im
betrachteten Beispiel kein Nachteil, denn die CPU 11 ermittelt
die im Statussignal enthaltenen Flanken ja durch einen Flankendetektor.
Es dürfte
jedoch einleuchten und bedarf keiner näheren Erläuterung, daß es vorteilhaft wäre, wenn
das vom Analog/Digital-Wandler ausgegebene Statussignal so beschaffen
wäre, daß dieses
sowohl durch einen Flankendetektor als auch durch Polling erkannt
und ausgewertet werden kann. Ein solcher Analog/Digital-Wandler
wäre ohne
Modifikationen desselben auch in Mikrocontrollern einsetzbar, deren CPU 11 den
Statussignal-Verlauf durch Polling erfaßt.
-
Darüber hinaus
wäre ein
solcher Analog/Digital-Wandler auch in Systemen einsetzbar, in welchen
das vom Analog/Digital-Wandler
ausgegebene Statussignal gleichzeitig mehreren Systemkomponenten
zugeführt
wird, die den Statussignal-Verlauf auf unterschiedliche Art und
Weise erfassen.
-
Die
vorstehend beschriebenen Probleme treten nicht nur bei der Kooperation
eines Analog/Digital-Wandlers und einer CPU auf, sondern in jeder elektrischen
Schaltung, in welcher einer ersten Komponente der elektrischen Schaltung
von einer zweiten Komponente der elektrischen Schaltung durch die Übertragung
eines Statussignals signalisiert wird, daß in der zweiten Komponente
ein Zustand oder ein Ereignis aufgetreten ist, der bzw. das eine
Reaktion der ersten Komponente erfordert. Dabei muß es sich bei
dem zu signalisierenden Zustand oder Ereignis auch nicht um das
Beschreiben eines Ergebnisregisters oder eines sonstigen Speichers
handeln; der zu signalisierende Zustand bzw. das zu signalisierende Ereignis
kann ein beliebiger Zustand bzw. ein beliebiges Ereignis sein.
-
Weitere
Schnittstellen zwischen miteinander kooperierenden Schaltungen oder
Schaltungsteilen sind aus den Dokumenten
DE 100 62 635 A1 ,
WO 98/13768 A2 ,
und
US 5,588,124 A bekannt.
Diesen Dokumenten sind jedoch keine Informationen darüber entnehmbar,
wie die vorstehend angesprochenen Probleme gelöst werden könnten.
-
Der
vorliegenden Erfindung liegt daher die Aufgabe zugrunde, das Verfahren
gemäß dem Oberbegriff
des Patentanspruchs 1 derart weiterzubilden, daß die erste Komponente unabhängig von
der Art und Weise, auf welche sie den Pegel oder den Verlauf des
ihr von der zweiten Komponente zugeführten Statussignals erfaßt, unter
allen Umständen
zuverlässig
die ihr durch das Statussignal zu signalisierenden Zustände oder
Ereignisse in der zweiten Komponente erfassen kann.
-
Diese
Aufgabe wird erfindungsgemäß durch das
in Patentanspruch 1 beanspruchte Verfahren gelöst.
-
Beim
erfindungemäßen Verfahren
gemäß Patentanspruch
1 kann die erste Komponente durch eine Auswertung des Statussignals
unter allen Umständen
zuverlässig
erkennen, ob in der zweiten Komponente ein Zustand oder ein Ereignis
aufgetreten ist, der bzw. das eine Reaktion der ersten Komponente
erfordert. Darüber
hinaus kann die erste Komponente ein solches Statussignal auch durch
eine in vorbestimmten zeitlichen Abständen erfolgende Abfrage des
Statussignal-Pegels (Polling) erfassen und auswerten.
-
Vorteilhafte
Weiterbildungen der Erfindung sind den Unteransprüchen, der
folgenden Beschreibung, und den Figuren entnehmbar.
-
Die
Erfindung wird nachfolgend anhand eines Ausführungsbeispiels unter Bezugnahme
auf die Figuren näher
beschrieben. Es zeigen
-
1 den
Aufbau des vorstehend beschriebenen Mikrocontrollers,
-
2 den
Aufbau eines Analog/Digital-Wandlers, der ein Statussignal erzeugt,
dessen zeitlicher Verlauf sich vom zeitlichen Verlauf der vorstehend
beschriebenen Statussignale unterscheidet, und
-
3 den
zeitlichen Verlauf des vom Analog/Digital-Wandler gemäß 2 erzeugten
Statussignals.
-
Das
im folgenden beschriebene Verfahren ist ein Verfahren, durch welches
einer ersten Komponente einer elektrischen Schaltung von einer zweiten Komponente
der elektrischen Schaltung durch die Übertragung eines Statussignals
signalisiert wird, daß in
der zweiten Komponente ein Zustand oder ein Ereignis aufgetreten
ist, der bzw. das eine Reaktion der ersten Komponente erfordert,
- – wobei
in der zweiten Komponente erste Daten gespeichert sind, die beim
Auftreten eines ersten Zustandes oder Ereignisses, der bzw. das
eine Reaktion der ersten Komponente erfordert, durch die zweite
Komponente auf einen bestimmten Wert gesetzt werden und durch die
erste Komponente zurückgesetzt
werden können,
- – wobei
in der zweiten Komponente zweite Daten gespeichert sind, die beim
Auftreten eines zweiten Zustandes oder Ereignisses, der bzw. das eine
Reaktion der ersten Komponente erfordert, durch die zweite Komponente
auf einen bestimmten Wert gesetzt werden und durch die erste Komponente
zurückgesetzt
werden können,
und
- – wobei
die ersten Daten und die zweiten Daten einer logischen Verknüpfung unterzogen
werden und das Ergebnis der logischen Verknüpfung als das zur ersten Komponente übertragene
Statussignal verwendet wird.
-
Die
elektrische Schaltung ist im betrachteten Beispiel ein Mikrocontroller,
die erste Komponente die CPU des Mikrocontrollers, und die zweite
Komponente ein Analog/Digital-Wandler
des Mikrocontrollers.
-
Es
sei bereits an dieser Stelle darauf hingewiesen, daß hierauf
keine Einschränkung
besteht. Die elektrische Schaltung kann auch eine beliebige andere
elektrische Schaltung sein. Ferner besteht auch keine Einschränkung darauf,
daß die
erste Komponente eine CPU, und die zweite Komponente ein Analog/Digital-Wandler
ist. Es kann sich um beliebige andere Komponenten der elektrischen
Schaltung handeln. Ferner besteht auch keine Beschränkung der
Zustände
bzw. Ereignisse, deren Auftreten die zweite Schaltungskomponente
der ersten Schaltungskomponente durch das Statussignal signalisiert.
Es kann sich um beliebige Zustände
oder Ereignisse handeln. Auch die Reaktion der ersten Schaltungskomponente
auf das Auftreten eines ihr signalisierten Zustandes oder Ereignisses
unterliegt keinen Einschränkungen.
Es kann sich um eine beliebige, software- und/oder hardwaremäßig implementierte Reaktion
handeln.
-
Der
hier betrachtete Mikrocontroller weist den selben prinzipiellen
Aufbau auf wie der in der 1 gezeigte
und vorstehend unter Bezugnahme darauf beschriebene Mikrocontroller.
Unterschiedlich ist allerdings der Aufbau des Analog/Digital-Wandlers. Der hier
verwendete Analog/Digital-Wandler erzeugt ein Statussignal, dessen
zeitlicher Verlauf sich vom zeitlichen Verlauf des Statussignal,
welches der Analog/Digital-Wandler 12 des
Mikrocontrollers gemäß 1 erzeugt,
unterscheidet.
-
Der
verwendete Analog/Digital-Wandler ist in 2 veranschaulicht.
Der Vollständigkeit
halber sei angemerkt, daß vom
Analog/Digital-Wandler nur die vorstehend besonders interessierenden
Komponenten desselben gezeigt sind und beschrieben werden. Der in
der 2 gezeigte Analog/Digital-Wandler ist mit dem
Bezugszeichen 22 bezeichnet. Er entspricht großteils dem
Analog/Digital-Wandler 12 des Mikrocontrollers gemäß 1.
Gleiche Bezugszeichen bezeichnen identische oder einander entsprechende Komponenten.
-
Wie
aus der 2 ersichtlich ist, enthält der Analog/Digital-Wandler 22 Ergebnisregister 121, 122,
und 123, ein ODER-Gatter 124, eine Schalteinrichtung 225,
und eine Steuereinrichtung 226.
-
Die
Ergebnisregister 121 bis 123 stimmen sowohl bezüglich des
Aufbaus als auch bezüglich
der Funktion mit den Ergebnisregistern 121 bis 123 des Analog/Digital-Wandlers 12 des
Mikrocontrollers gemäß 1 überein.
Jedes Ergebnisregister enthält auch
wiederum ein Valid-Bit V, welches beim Einschreiben von neuen Daten
in das das Valid-Bit V enthaltende Ergebnisregister durch den Analog/Digital-Wandler 22 gesetzt
wird und durch die CPU 11 zurückgesetzt werden kann.
-
Das
ODER-Gatter 124 stimmt sowohl bezüglich des Aufbaus als auch
bezüglich
der Funktion mit dem ODER-Gatter 124 des Analog/Digital-Wandlers 12 des
Mikrocontrollers gemäß 1 überein.
Durch das ODER-Gatter 124 werden die Valid-Bits V aller (oder
eventuell auch nur bestimmter) Ergebnisregister einer ODER-Verknüpfung unterzogen.
Allerdings wird das Ergebnis der ODER-Verknüpfung nur zeitweise als das über die
Leitung IRQL zur CPU übertragene
Statussignal verwendet.
-
Das
Ausgangssignal des ODER-Gatters 124 wird einem ersten Eingangsanschluß der Schalteinrichtung 225 zugeführt. Die
Schalteinrichtung 225 weist darüber hinaus auch noch einen
zweiten Eingangsanschluß und
einen Ausgangsanschluß auf. Der
zweite Eingangsanschluß der
Schalteinrichtung 225 wird mit einer Spannung beaufschlagt,
die der Spannung entspricht, welche das ODER-Gatter 124 ausgibt,
wenn im Analog/Digital-Wandler 22 kein
Zustand oder Ereignis aufgetreten ist, der bzw. das eine Reaktion
der CPU erfordert, also wenn alle Valid-Bits zurückgesetzt sind. Im betrachteten
Beispiel ist der zweite Eingangsanschluß der Schalteinrichtung 225 mit
Masse verbunden. Der Ausgangsanschluß der Schalteinrichtung 225 ist
mit der Leitung IRQL verbunden, über
welche das Statussignal zur CPU übertragen
wird. Im Gegensatz zum Analog/Digital-Wandler 12 des in der 1 gezeigten
Mikrocontrollers wird also nicht das Ausgangssignal des ODER-Gatters 124,
sondern das Ausgangssignal der Schalteinrichtung 225 als
das zur CPU zu übertragende
Statussignal verwendet.
-
Die
Schalteinrichtung 225 wird durch die Steuereinrichtung 226 gesteuert.
Die Steuereinrichtung 226 steuert die Schalteinrichtung 225 derart
an, daß diese
nach jedem Zurücksetzen
eines der Valid-Bits V für
eine vorbestimmte Zeit (beispielsweise einige Taktperioden) die
am zweiten Eingangsanschluß anliegende
Spannung (Massepotential) ausgibt, und daß sie zu allen übrigen Zeiten
das dem ersten Eingangsanschluß zugeführte Signal
(das Ausgangssignal des ODER-Gatters 124) ausgibt.
-
Die
Zeit, während
welcher die Schalteinrichtung 225 die ihr über den
zweiten Eingangsanschluß zugeführte Spannung
ausgibt, ist so bemessen, daß die
CPU die Flanke im Statussignal, die sich einstellen kann, wenn die
Schalteinrichtung 225 wieder das ihr über deren ersten Eingangsanschluß zugeführte Signal
ausgibt, von der CPU zuverlässig
erfaßbar
ist. Die Zeit, während
welcher die Schalteinrichtung 225 die ihr über den
zweiten Eingangsanschluß zugeführte Spannung
ausgibt, hängt
folglich von den Taktraten ab, mit welchen die CPU und der Analog/Digital-Wandler
arbeiten (dies sind nicht notwendigerweise die selben Taktraten),
und von den elektrischen Eigenschaften der Leitung IRQL. Diese Zeit
kann hardwaremäßig festgelegt
oder (beispielsweise durch entsprechendes Beschreiben eines im Analog/Digital-Wandler
enthaltenen Steuerregisters) durch den Benutzer des Mikrocontrollers
einstellbar bzw. veränderbar
sein.
-
In 3 ist
der zeitliche Verlauf des über
die Leitung IRQL übertragenen
Statussignals veranschaulicht. Die Darstellung des Statussignal-Verlaufs ist
nur eine schematische Darstellung zur Erläuterung der Besonderheiten
des Statussignal-Verlaufs. Es
handelt sich nicht um eine maßstabsgetreue
Darstellung; insbesondere ist die Zeit nicht maßstabsgetreu dargestellt.
-
Bei
dem in der 3 gezeigten Statussignal-Verlauf
wurde davon ausgegangen,
- – daß das Valid-Bit den Pegel 0
aufweist, wenn in dem das Valid-Bit enthaltenden Ergebnisregister keine
neuen (noch nicht abgeholten) Daten enthalten sind,
- – daß das Valid-Bit
bei jedem Einschreiben von neuen Daten in das das Valid-Bit enthaltende
Ergebnisregister durch den Analog/Digital-Wandler 22 auf
den Wert 1 gesetzt wird, und
- – daß das Valid-Bit
nach jedem Auslesen des das Valid-Bit enthaltenden Ergebnisregisters
durch die CPU auf den Pegel 0 zurückgesetzt wird.
-
Der
Vollständigkeit
halber sei bereits an dieser Stelle darauf hingewiesen, daß dies auch
genau umgekehrt sein könnte,
also
- – daß das Valid-Bit
den Pegel 1 aufweist, wenn in dem das Valid-Bit enthaltenden Ergebnisregister keine
neuen (noch nicht abgeholten) Daten enthalten sind,
- – daß das Valid-Bit
bei jedem Einschreiben von neuen Daten in das das Valid-Bit enthaltende
Ergebnisregister durch den Analog/Digital-Wandler 22 auf
den Wert 0 gesetzt wird, und
- – daß das Valid-Bit
nach jedem Auslesen des das Valid-Bit enthaltenden Ergebnisregisters
durch die CPU auf den Pegel 1 zurückgesetzt wird.
-
Im
letztgenannten Fall müßte der
zweite Eingangsanschluß der
Schalteinrichtung 225 mit einer den Pegel 1 repräsentierenden
Spannung beaufschlagt werden. Zusätzlich müßte das ODER-Gatter 124 durch
ein UND-Gatter ersetzt werden.
-
Bei
dem in der 3 gezeigten zeitlichen Verlauf
des Statussignals wird zunächst
davon ausgegangen, daß alle
Valid-Bits den Pegel
0 aufweisen, und daß es
schon längere
Zeit her ist, daß eines
der Ergebnisregister des Analog/Digital-Wandlers 22 ausgelesen wurde.
Folglich weist das Ausgangssignal des ODER-Gatters 124 den
Pegel 0 auf, und wird durch die Schalteinrichtung 225 das
Ausgangssignal des ODER-Gatters 124 auf die Leitung IRQL
ausgegeben.
-
Es
sei angenommen, daß zu
einem Zeitpunkt t1 in das Ergebnisregister 122 neue Daten
geschrieben werden. Somit geht zum Zeitpunkt t1 oder kurz danach
der Pegel des Valid-Bits des Ergebnisregisters 122 von
0 auf 1. Als Folge hiervon springt auch das Ausgangssignal des ODER-Gatters 124 und
damit auch das über
die Leitung IRQL übertragene
Statussignal vom Pegel 0 auf den Pegel 1. Kurz danach, genauer gesagt
zu einem Zeitpunkt t2 mögen
auch in das Ergebnisregister 123 neue Daten geschrieben
werden und das Valid-Bit des Ergebnisregisters 123 auf
den Pegel 1 gesetzt werden. Dies hat jedoch keinen Einfluß auf das
Statussignal, da dieses ja schon vorher den Pegel 1 hatte. Die zum
Zeitpunkt t1 auftretende Flanke im Statussignal wird durch die CPU,
genauer gesagt den darin enthaltenen Flankendetektor erkannt und
zum Anlaß genommen,
die zugeordnete Interrupt Service Routine zu starten. Es sei angenommen,
daß die
Interrupt Service Routine zum Zeitpunkt t3 gestartet wird. Die Interrupt
Service Routine liest zunächst
das Valid-Bit des Ergebnisregisters 121 aus, um festzustellen,
ob im Ergebnisregister 121 neue (noch nicht ausgelesene)
Daten gespeichert sind. Da das Valid-Bit des Ergebnisregisters 121 den
Pegel 0 aufweist, stellt die CPU fest, daß dies nicht der Fall ist und
liest die im Ergebnisregister 121 gespeicherten Daten nicht
aus. Anschließend
liest die Interrupt Service Routine das Valid-Bit des Ergebnisregisters 122 aus,
um festzustellen, ob im Ergebnisregister 122 neue (noch
nicht ausgelesene) Daten gespeichert sind. Da das Valid-Bit des
Ergebnisregisters 122 den Pegel 1 aufweist, stellt die CPU
fest, daß dies
der Fall ist und liest die im Ergebnisregister 122 gespeicherten
Daten aus. Anschließend
(oder gleichzeitig) setzt die CPU das Valid-Bit des Ergebnisregisters 122 auf
den Pegel 0 zurück. Es
sei angenommen, daß das
Zurücksetzen
des Valid-Bits zum Zeitpunkt t4 erfolgt. Das Zurücksetzen des Valid-Bits wird
von der Steuereinrichtung 226 zum Anlaß genommen, die Schalteinrichtung 225 so anzusteuern,
daß diese
das ihr über
den zweiten Eingangsanschluß zugeführte Signal
ausgibt. Somit springt das über
die Leitung IRQL übertragene
Statussignal zum Zeitpunkt t4 auf den Pegel 0. Die Schalteinrichtung 225 wird
nur relativ kurz, beispielsweise einige Taktperioden in diesem Zustand
gehalten.
-
Danach,
genauer gesagt zu einem Zeitpunkt t5 wird sie durch die Steuereinrichtung 226 wieder
so angesteuert, daß sie
das ihr über
den ersten Eingangsanschluß zugeführte Signal,
also das Ausgangssignal des ODER-Gatters 124 ausgibt. Da
zu diesem Zeitpunkt das Ergebnisregisters 123 noch nicht
ausgelesen und dessen Valid-Bit noch nicht zurückgesetzt ist, weist das Ausgangssignal
des ODER-Gatters 124 noch den Pegel 1 auf, so daß das aus
der Schalteinrichtung 225 ausgegebene Signal zum Zeitpunkt
t5 wieder auf den Pegel 1 springt. Parallel hierzu wird die Interrupt
Service Routine weiter ausgeführt.
Die Interrupt Service Routine liest nach dem Zeitpunkt t4 das Valid-Bit
des Ergebnisregisters 123 aus, um festzustellen, ob im
Ergebnisregister 123 neue (noch nicht ausgelesene) Daten
gespeichert sind. Da das Valid-Bit des Ergebnisregisters 123 den
Pegel 1 aufweist, stellt die CPU fest, daß dies der Fall ist und liest
die im Ergebnisregister 123 gespeicherten Daten aus. Anschließend (oder
gleichzeitig) setzt die CPU das Valid-Bit des Ergebnisregisters 123 auf
den Pegel 0 zurück.
Es sei angenommen, daß das
Zurücksetzen
des Valid-Bits zum Zeitpunkt t6 erfolgt. Das Zurücksetzen des Valid-Bits wird von
der Steuereinrichtung 226 zum Anlaß genommen, die Schalteinrichtung 225 so
anzusteuern, daß diese
das ihr über
den zweiten Eingangsanschluß zugeführte Signal
ausgibt. Somit springt das über
die Leitung IRQL übertragene
Statussignal zum Zeitpunkt t6 auf den Pegel 0. Die Schalteinrichtung 225 wird
nur relativ kurz, beispielsweise einige Taktperioden in diesem Zustand
gehalten. Danach, genauer gesagt zu einem Zeitpunkt t7 wird sie
durch die Steuereinrichtung 226 wieder so angesteuert,
daß sie
das ihr über
den ersten Eingangsanschluß zugeführte Signal,
also das Ausgangssignal des ODER-Gatters 124 ausgibt. Da
zu diesem Zeitpunkt alle Ergebnisregisters ausgelesen und deren
Valid-Bits zurückgesetzt
sind, weist das Ausgangssignal des ODER-Gatters 124 nun
den Pegel 0 auf, so daß das
aus der Schalteinrichtung 225 ausgegebene Signal weiterhin den
Pegel 0 aufweist. Die Interrupt Service Routine wird unmittelbar
nach dem Zeitpunkt t6 beendet.
-
Beim
eingangs beschriebenen Analog/Digital-Wandler 12 bereitete
es Probleme, wenn während der
Ausführung
der Interrupt Service Routine in ein Ergebnisregister, für welches
die Interrupt Service Routine die von ihr auszuführenden Aktionen bereits ausgeführt hat,
neue Daten geschrieben werden und das zugehörige Valid-Bit gesetzt wird,
also daß beispielsweise
zwischen den Zeitpunkten t4 und t6 in das Ergebnisregister 121 neue
Daten geschrieben werden und das Valid-Bit des Ergebnisregisters 121 gesetzt
wird. Dies bereitet beim Analog/Digital-Wandler 22 keine
Probleme, denn in einem solchen Fall würde das ODER-Gatter 124 auch
nach dem Zeitpunkt t6 ein Signal mit dem Pegel 1 ausgeben, und würde das
Statussignal zum Zeitpunkt t7 auf den Pegel 1 springen. Die daraus
resultierende Flanke im Statussignal würde von der CPU erkannt und
zum Anlaß genommen
werden, die Interrupt Service Routine erneut auszuführen.
-
Ein
wie vorstehend beschrieben erzeugtes und verlaufendes Statussignal
könnte
auch als Statussignal für
eine CPU (oder eine beliebige andere Einrichtung innerhalb oder
außerhalb
des Mikrocontrollers) verwendet werden, die das Statussignal durch
eine in vorbestimmten zeitlichen Abständen erfolgende Abfrage des
Statussignal-Pegels (Polling) erfaßt. Die Phasen des Statussignals,
in welchen dieses den Pegel 1 aufweist, dauern nämlich automatisch mindestens
so lange an, bis die CPU erkannt hat, daß ihr ein Statussignal mit
dem Pegel 1 zugeführt
wird. Das Statussignal kann erst dann auf den Pegel 0 zurückfallen,
wenn alle Valid-Bits zurückgesetzt
sind. Das Zurücksetzen
der Valid-Bits kann jedoch nur durch eine der vorstehend erwähnten Interrupt
Service Routine entsprechende Service Routine erfolgen, doch wird
diese Service Routine erst ausgeführt, nachdem die CPU erkannt
hat, daß ihr
ein Statussignal mit dem Pegel 1 zugeführt wird. Die Tatsache, daß das Statussignal
nach jedem Zurücksetzen eines
Valid-Bits kurzzeitig auf den Pegel 0 springt, schließt die zuverlässige Erkennung
des Umstandes, daß im
Analog/Digital-Wandler ein eine Reaktion der CPU erfordernder Zustand
oder ein eine Re aktion der CPU erforderndes Ereignis aufgetreten
ist, nicht aus, denn das Statussignal springt ja nur kurzzeitig auf
den Pegel 0, so daß es
schlimmstenfalls zu einer kurzfristig verzögerten Erkennung des Umstandes kommen
kann, daß im
Analog/Digital-Wandler ein eine Reaktion der CPU erfordernder Zustand
oder ein eine Reaktion der CPU erforderndes Ereignis aufgetreten
ist. Dies gilt unabhängig
von den zeitlichen Abständen,
in welchen die CPU das Statussignal abfragt.
-
Es
kann sich als vorteilhaft erweisen, wenn die Interrupt Service Routine
bzw. die Service Routine zumindest in bestimmten Fällen nur
anhand der Valid-Bits überprüft, ob in
die Ergebnisregister neue Daten geschrieben wurden und die gesetzten
Valid-Bits ohne Auslesen der in den Ergebnisregistern gespeicherten
neuen Daten zurücksetzt.
Das Auslesen der Daten kann dann zu einem beliebigen späteren Zeitpunkt
erfolgen; in welchen Ergebnisregistern neue Daten gespeichert sind,
ist der CPU durch das Auslesen und Auswerten der Valid-Bits bekannt.
-
Das
vorstehend beschriebene Verfahren ist mannigfaltig modifizierbar.
Beispielsweise besteht keine Einschränkung darauf, daß die Valid-Bits
durch ein ODER-Gatter verknüpft
werden. Bei bestimmten Anwendungen kann es sich als vorteilhaft
erweisen, wenn die Valid-Bits einer anderen logischen Verknüpfung, beispielsweise
einer UND-Verknüpfung
unterworfen werden, also das ODER-Gatter 124 durch ein UND-Gatter
oder ein sonstiges logisches Gatter ersetzt wird. Ferner besteht
keine zwingende Notwendigkeit, daß die Interrupt Service Routine
bzw. die Service Routine die vorstehend beschriebenen Aktionen durchführt. Beispielsweise
könnte
vorgesehen werden, daß die
Interrupt Service Routine bzw. die Service Routine beendet wird,
nachdem sie aus dem ersten Ergebnisregister, in dem neue Daten gespeichert
sind, die gespeicherten Daten ausgelesen und das Valid-Bit zurückgesetzt
hat. Es könnte
beispielsweise auch vorgesehen werden, daß die Interrupt Service Routine
bzw. die Service Routine nach jedem Rücksetzen eines Va lid-Bits überprüft, welchen
Pegel das Ausgangssignal des ODER-Gatters 124 hat, und
die Interrupt Service Routine bzw. die Service Routine so lange
weiter ausgeführt
wird, bis das Ausgangssignal des ODER-Gatters 124 den Pegel
0 aufweist und/oder die Interrupt Service Routine bzw. die Service
Routine nur so lange ausgeführt
wird, bis das Ausgangssignal des ODER-Gatters 124 den Pegel
0 aufweist.
-
Das
beschriebene Verfahren ermöglicht
es unabhängig
von den Einzelheiten der praktischen Realisierung, daß eine beliebige
erste Komponente einer elektrischen Schaltung unabhängig von
der Art und Weise, auf welche sie den Pegel oder den Verlauf des
ihr von einer zweiten Komponente der elektrischen Schaltung zugeführten Statussignals
erfaßt, unter
allen Umständen
zuverlässig
die ihr durch das Statussignal zu signalisierenden Zustände oder
Ereignisse in der zweiten Komponente erfassen kann.
-
- 11
- CPU
- 12
- Analog/Digital-Wandler
- 13
- Mikrocontroller-Komponente
- 14
- Mikrocontroller-Komponente
- 15
- Mikrocontroller-Komponente
- in
- Mikrocontroller-Komponente
- 22
- Analog/Digital-Wandler
- 121
- Ergebnisregister
- 122
- Ergebnisregister
- 123
- Ergebnisregister
- 124
- ODER-Gatter
- 225
- Schalteinrichtung
- 226
- Steuereinrichtung
- BUS
- Bus
- IRQL
- einzelne
Leitung
- V
- Valid-Bit