-
ALLGEMEINER STAND DER TECHNIK
-
Die
vorliegende Erfindung betrifft allgemein ein Verfahren zum Speichern
eines codierten Datensignals und insbesondere ein Verfahren zum
Speichern eines Datencodes, welcher in einem Signal codiert ist,
das vom einem lernfähigen
Sender empfangen wird, derart, dass es danach für die Sendung an eine gesteuerte
Vorrichtung regeneriert werden kann.
-
Lernfähige Sender
werden dafür
verwendet, bestimmte Eigenschaften empfangener Steuersignale zu
lernen, derart, dass der lernfähige
Sender danach ein Signal, welches die erlernten Eigenschaften aufweist,
erzeugen und an eine ferngesteuerte Vorrichtung senden kann. Ferngesteuerte
Vorrichtungen, z. B. Garagentoröffner,
Fernsehgeräte
und Stereoanlagen, umfassen ein Signalempfangs-Schaltungssystem,
welches nach speziellen Signaleigenschaften in einem Signal sucht,
welches von dem Ursprungssender empfangen wird, der typischerweise zusammen
mit der ferngesteuerten Vorrichtung erworben wird. Wenn das Empfangsschaltungssystem ein
Signal empfängt,
welches diese Eigenschaften nicht aufweist, reagiert das Empfangsschaltungssystem
nicht auf das Signal.
-
Die
Eigenschaften, welche ein lernfähiger Sender
lernen muss, um den Ursprungssender wirksam zu simulieren, hängen von
den Eigenschaften ab, nach welchen die ferngesteuerte Vorrichtung
in einem empfangenen Signal sucht, wenn sie ermittelt, ob sie auf
das empfangene Signal durch die Durchführung einer vorbestimmten Maßnahme reagieren soll
oder nicht. Zum Beispiel müssen
universelle Fernsteuerungssender der Art, wie sie verwendet werden,
um Heim-Audio- und
Videogeräte
zu steuern, einen Infrarot(IR)-Lichtstrahl erkennen und danach die
Eigenschaften des Datencodes lernen können, der auf den IR-Lichtstrahl
moduliert ist. Solche Eigenschaften umfassen typischerweise die
Sequenz von Binärlogikdaten
(Nullen und Einsen) ebenso wie die Dauer und Frequenz der Bitimpulse, welche
die Binärdaten
darstellen.
-
Lernfähige Hochfrequenz(HF)-Sender
sind bekannt und werden verwendet, um die Eigenschaften eines HF-Signals
zu lernen, welches von einem Fernsteuerungssender für ein Garagentor
gesendet wird, und um ein HF-Signal, welches jene Eigenschaften
aufweist, zu erzeugen und an einen Garagentor-Öffnungsmechanismus
zu senden. Beispiele für
solche lernfähigen
HF-Sender sind in den
US-Patentschriften
5,442,340 ;
5,479,155 ;
5,583,485 ;
5,614,885 ;
5,614,891 ;
5,627,529 ;
5,661,804 ;
5,686,903 und
5,708,415 offenbart. Lernfähige HF-Sender
der Art, wie sie in diesen Patentschriften offenbart sind, unterscheiden
sich dadurch von den lernfähigen
HF-Sendern, welche verwendet werden, um elektronische Heimgeräte zu steuern,
dass die Trägerfrequenz
des gesendeten HF-Trägersignals von
einem System zum anderen merklich variieren kann. Ferner sind die
Empfänger
der Vorrichtungen, die unter Verwendung solcher HF-Steuersignale
gesteuert werden, typischerweise fein darauf abgestimmt, ein HF-Signal zu empfangen,
welches eine bestimmte Trägerfrequenz
aufweist. Deswegen müssen
lernfähige
HF-Sender dieser Art nicht nur dieselben Eigenschaften des Datencodes
wie ein lernfähiger
IR-Sender lernen, sondern sie müssen
auch die Trägerfrequenz
des HF-Trägersignals
lernen.
-
Sowohl
lernfähige
HF- als auch lernfähige IR-Sender
umfassen typischerweise mehrere „Kanäle" zum Speichern der Eigenschaften mehrerer
Signale. Jedes Signal ist typischerweise mit einem vom Benutzer
betätigten
Schalter verbunden, so dass ein Benutzer für den lernfähigen Sender ein bestimmtes der
gelernten Signale auswählt,
indem er den zugehörigen
Schalter aktiviert. Um dem lernfähigen
Sender zu ermöglichen,
die Signaleigenschaften verschiedener Signale unterschiedlicher
Länge und Dauer
zu lernen, muss die innerhalb des lernfähigen Senders für jeden
seiner Kanäle
bereitgestellte und zugeordnete Speichermenge groß genug
sein, um die Eigenschaften des längsten
bekannten Signals zu speichern, welches der lernfähige Sender
erwartungsgemäß möglicherweise
lernen muss. Je größer demzufolge
die Anzahl der bereitgestellten Kanäle in dem lernfähigen Sender,
desto größer ist
der benötigte
Speicher. Wenn ferner ein Hersteller eines Ursprungs-Fernsteuerungssenders
und eines entsprechenden Empfängers
ein System konstruiert, um Datencodes mit größeren Längen als bei jedem zuvor bestehenden
System zu verwenden, muss sich die Größe des zugeordneten Speichers
je Kanal für
den lernfähigen
Sender entsprechend erhöhen,
um solche Datencodes zu lernen und somit wirklich „universell" zu sein.
-
Die
in den oben angeführten
Patentschriften beschriebenen lernfähigen HF-Sender identifizieren zuerst
die Trägerfrequenz
eines empfangenen HF-Signals und demodulieren das Signal unter Verwendung
eines Referenzsignals, welches eine Frequenz aufweist, die sich
auf die Trägerfrequenz
des empfangenen HF-Signals bezieht. Das demodulierte Datensignal
wird mit einem relativ hohen Abtastintervall (ungefähr 68 μs) abgetastet,
um einen digitalisierten Datenstrom zu erzeugen, welcher das Datensignal
darstellt. Dieser digitalisierte Datenstrom wird im Direktzugriffsspeicher
(RAM) eines Mikroprozessors gespeichert, bis der RAM mit Daten gefüllt ist. Der
Prozessor analysiert dann den digitalisierten Datenstrom, um die
Anfangs- und Endpunkte eines gesendeten Datencodeworts zu erkennen,
indem er innerhalb des Datenstroms, mit welchem der RAM gefüllt ist,
nach Wiederholungen von Datenstrukturen sucht. Der Mikroprozessor
verdichtet dann den digitalisierten Datenstrom, indem er alle Daten
entfernt, die nicht in dem identifizierten Datencodewort enthalten
sind. Danach speichert der Mikroprozessor die verdichteten digitalisierten
Daten in seinem nichtflüchtigen
Speicher (Non-Volatile Memory, NVM). Wenn ein Schalter betätigt wird,
der zu einem bestimmten Kanal gehört, reagiert der Mikroprozessor damit,
dass er die Daten von seinem NVM in seinen RAM überträgt und ein Ausgangs-Datensignal
erzeugt, indem er die Daten aus seinem RAM mit derselben Rate ausliest,
mit welcher er das Signal während
des Lernmodus abgetastet hat. Vorausgesetzt, diese Abtastrate ist
hoch genug, ist diese Technik ausreichend, um jedes empfangene Datensignal
zu erwerben und zu speichern, ohne dass man jede Impulslänge oder
Impulsfrequenz der in dem Datensignal enthaltenen Binärdaten einzeln
identifizieren muss. Somit arbeitet der Mikroprozessor effektiv
als digitale Aufzeichnungsvorrichtung, um das Signal im Wesentlichen
auf dieselbe Weise aufzuzeichnen, wie ein Computer ein über ein
verbundenes Mikrofon empfangenes Sprachsignal speichert.
-
Um
die Menge an NVM, die benötigt
wird, um ein digitalisiertes Datensignal zu speichern, weiter zu verringern,
wurde durch den Erfinder eine Komprimierungstechnik entwickelt,
wodurch, sobald das digitalisierte Datensignal den RAM des Mikroprozessors
gefüllt
hat und unter Anwendung der in den obigen Patentschriften beschriebenen
Verdichtungsroutine verdichtet worden ist, das verdichtete digitalisierte
Datensignal dann weiter verarbeitet wird, indem Strukturen in dem
Datensignal erkannt werden, Schablonen für jede identifizierte Struktur
eingerichtet werden und eine Sequenz gespeichert wird, welche die
Sequenzreihenfolge in dem digitalisierten Datensignal identifiziert,
in welcher die Daten in dem Signal den eingerichteten Schablonen
entsprechen. Insbesondere erkennt der Prozessor, nachdem das digitalisierte
Datensignal, welches den Mikroprozessor-RAM füllt, verdichtet worden ist,
die erste Anstiegsflanke in dem Datensignal (also den ersten Übergang
von einem Wert „0" zu einem logischen Wert „1") und zählt dann
die Anzahl der Abtastungen, welche sich durchgehend auf dem Wert „1" befinden. Wie in 1 dargestellt,
sind jeder Schablone 5 Bytes zugeordnet. Jedes Byte kann für Zählungen bei
einer logischen „1" einen Hexadezimalwert
von „0" bis „FF" oder für Zählungen
bei einer logischen „0" einen Wert von „0" bis „7F" annehmen. Der in
jedem Byte gespeicherte Wert stellt die Anzahl durchgängiger Abtastungen
mit einem bestimmten Binärlogikwert
dar. Somit gibt es, wie in den ersten beiden Bytes der ersten Schablone
dargestellt, in dem in 2 dargestellten beispielhaften
Datencode „FF" + 4 (d. h. 300)
Abtastungen mit dem Binärwert „1" für den ersten
Datenimpuls. Weil der in dem zweiten Byte gespeicherte Wert kleiner
ist als „FF", kann ermittelt
werden, dass nach „FF" + 4 Abtastungen
mit einem logischen Wert „1" eine Abtastung mit
einem logischen Wert „0" erkannt wurde. Daher
wird das nächste
Byte in der ersten Schablone verwendet, um die Anzahl der Abtastungen
mit dem logischen Wert „0" zu speichern. Wenn
es mehr als „7F" Abtastungen mit
dem Wert „0" gibt, wird das dritte
Byte der ersten Schablone mit „7F" besetzt, und die
Zählung wird
fortgesetzt und in das nächste
Byte und möglicherweise
sogar das übernächste Byte
gesetzt. Wenn eine logische „1" in dem digitalisierten
Datensignal erkannt wird, bevor das letzte Byte der Schablone besetzt
worden ist (so dass also der Wert in dem vierten Byte der ersten
Schablone kleiner ist als „7F"), wird das letzte
Byte mit „00" besetzt, und die Anzahl
der Abtastungen mit dem logischen Wert „1" wird in der nächsten Schablone aufgezeichnet.
-
Bis
zu fünfzehn
Schablonen dieser Art können
im Speicher gespeichert werden, und jeder ist ein Kennwert in der
Sequenz von „0" bis „F" zugeordnet, so dass
jede Schablone ihre eigene eindeutige Kennung aufweist. Natürlich entspricht
die erste Schablone dem ersten Abschnitt des Datensignals und somit
wird ein Wert „0" in einem Schablonensequenzabschnitt
10 des Speichers für
den Kanal gespeichert. Wenn der Mikroprozessor die Anzahl der Abtastungen
mit irgendeinem gegebenen logischen Wert zählt, vergleicht er die Anzahl
der gezählten Werte
mit der Anzahl der gezählten
Werte für
Schablonen, die bereits definiert worden sind. Wenn ein Abschnitt
der Daten, die analysiert werden, bereits einer definierten Schablone
entspricht, erzeugt der Mikroprozessor keine neue Schablone, sondern
speichert stattdessen einfach die Kennung der entsprechenden zuvor
definierten Schablone im Schablonensequenzabschnitt 10 des zugeordneten
Speichers. Der Mikroprozessor so damit fort, jeden Abschnitt des verdichteten
digitalisierten Datensignals zu analysieren, bis der gesamte Abschnitt
des digitalisierten Signals auf diese Weise codiert worden ist.
-
In
der Folge liest der Mikroprozessor nach dem Empfang eines Befehls,
das gespeicherte codierte Datensignal zu senden, sequenziell die
Sequenz der Schablonenkennungen aus, die im Schablonensequenzabschnitt
10 des Speichers gespeichert ist. Der Mikroprozessor verwendet diese
Kennungen danach, um auf die identifizierten Schablonen in der Reihenfolge
zuzugreifen, in welcher der Mikroprozessor die Schablonenkennungen
während des
Lernmodus gespeichert hat. Somit liest zum Beispiel in dem in 1 dargestellten
Beispiel der Mikroprozessor das erste Byte der ersten Schablone aus
und erzeugt einen digitalen logischen Wert „1" für eine
Zählung
von 256 (FF) Taktimpulsen, die mit derselben Abtastrate erzeugt
werden, mit welcher das Signal digitalisiert wurde, und liest dann
danach das zweite Datenbyte in der ersten Schablone aus und ermittelt,
dass er bei der logischen „1" vier weitere Zählungen
mit dieser Abtastrate erzeugen muss. Dann, wenn er erkannt hat,
dass der aus einem der Bytes ausgelesene Wert kleiner ist als „FF", beginnt der Mikroprozessor,
einen logischen Wert „0" für die Anzahl
der Zählungen
zu erzeugen, die in den verbleibenden Bytes der Schablone identifiziert
werden.
-
Obwohl
die oben beschriebene Codiertechnik für Datensignale bei im Wesentlichen
allen Garagentor-Öffnungsmechanismen
zufriedenstellend funktioniert, die in den USA verkauft werden,
senden und empfangen bestimmte Garagentor-Öffnungsmechanismen, die in
Europa verwendet werden, Datencodes, die zu lang sind, um im NVM
des Mikroprozessors gespeichert zu werden, sogar wenn die obige
Datenspeicherungstechnik angewendet wird. Noch problematischer ist
es, dass diese Datencodes auch zu lang dafür sind, im RAM des Mikroprozessors
gespeichert zu werden. Wenn das Datencodewort zu lang ist, um in
den RAM des Mikroprozessors zu passen, kann der Mikroprozessor nicht
ein gesamtes Codewort lernen und speichern und kann daher danach
nicht den richtigen Datencode senden, auf welchen die ferngesteuerte
Vorrichtung reagiert. Deswegen besteht ein Bedarf nicht nur für einen
effektiveren Datenkomprimierungs-Codieralgorithmus, sondern auch
für einen
Komprimierungsalgorithmus, welcher in Echtzeit durchgeführt werden
kann, wenn das empfangene Datensignal digitalisiert und im RAM eines
Mikroprozessors gespeichert wird, so dass ein gesamtes Datencodewort
für ein
darauf folgendes Senden wirksam im RAM des Mikroprozessors und in
seinem NVM gespeichert werden kann.
-
EP 0 763 806 offenbart eine
lernfähige
Fernsteuerungsvorrichtung zum Lernen von IR-Codes entfernter Einheiten.
Die lernfähige
Fernsteuerungsvorrichtung umfasst ein Steuermittel, ein Speichermittel,
welches mit dem Steuermittel verbunden ist, ein IR-Sendemittel,
ein erstes IR-Empfangsmittel, welches
mit dem Steuermittel verbunden ist, und ein zweites IR-Empfangsmittel.
-
EP 0 763 806 offenbart auch
ein Verfahren zum Lernen von IR-Codes z. B. von Satellitenempfängern, welches
die folgenden Schritte umfasst:
- (a) Ermitteln,
ob das eingehende Signal eines eines Impulstyps oder eines modulierten
Typs ist;
- (b) Ermitteln, ob das eingehende Signal Toggle-Bits umfasst;
- (c) Ermitteln der Datencodes;
- (d) Ermitteln des Sendeformats; und
- (e) Testen der gelernten Codes und Formate.
-
US 4,802,114 offenbart einen
programmierbaren Fernsteuerungssender, welcher in einem Lernmodus
Fernsteuerungscodes für
die Fernsteuerung verschiedener Vorrichtungen empfängt und
die Vorrichtungen gemäß den empfangenen
Fernsteuerungscodes fernsteuert, indem er deren entsprechende Sender
simuliert. Der Sender umfasst einen ersten Wiederholungsmuster-Diskriminator
zum Komprimieren der Fernsteuerungscodes zu ersten komprimierten
Daten, welche die Impulsbündelkomponente und
die Impuls-Aus-Komponente darstellen. Der Sender umfasst auch einen
zweiten Wiederholungsmuster-Diskriminator zum Umwandeln von Paaren der
ersten komprimierten Daten in zweite komprimierte Daten. Der Sender
umfasst auch ein Schaltungssystem für die Verwendung in einem Fernsteuerungs-Betriebsmodus
zum Rückumwandeln
der gespeicherten komprimierten Daten zu Codes, die für ein Senden
zu einer speziellen zu steuernden Vorrichtung geeignet sind.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Dementsprechend
ist es ein Aspekt der vorliegenden Erfindung, die obigen Probleme
zu lösen, indem
sie den Datenkomprimierungsalgorithmus bereitstellt, der in Echtzeit
durchgeführt
werden kann, wenn ein digitalisiertes Signal den RAM eines Mikroprozessors
füllt.
Es ist ein weiterer Aspekt der vorliegenden Erfindung, einen Datensignal-Komprimierungsalgorithmus
bereitzustellen, welcher ein Datensignal wirksamer komprimieren
kann. Ein weiterer Aspekt der vorliegenden Erfindung ist es, eine
adaptive Datendigitalisierungs- und Komprimierungstechnik bereitzustellen,
bei welcher mehrere verschiedene Abtastraten angewendet werden können. Noch ein
weiterer Aspekt der vorliegenden Erfindung ist es, einen Komprimierungsalgorithmus
bereitzustellen, welcher wirksam Datensignale komprimiert, welche ausgedehnte „Totzeiten" (also lange Perioden
auf einer logischen Ebene „0") aufweisen.
-
Um
diese und andere Aspekte und Vorteile zu erreichen, umfasst das
Datenspeicherungsverfahren der vorliegenden Erfindung die folgenden
Schritte: (a) Empfangen eines codierten Datensignals; (b) Abtasten
des empfangenen codierten Datensignals mit einer ersten Abtastrate;
(c) Zählen
der Anzahl aufeinander folgender Abtastungen auf einer ersten logischen
Ebene; (d) Speichern der Anzahl der in Schritt (c) gezählten Abtastungen
in einem ersten Abschnitt einer Speicherschablone; (e) Zählen der
Anzahl aufeinander folgender Abtastungen auf einer zweiten logischen
Ebene; (f) Vergleichen der Anzahl der in Schritt (e) gezählten Abtastungen
mit einem Schwellenwert; (g) Verringern der Abtastrate, mit der das
empfangene codierte Datensignal abgetastet wird, und Zählen der
Anzahl aufeinander folgender Abtastungen auf der zweiten logischen
Ebene, wenn die Anzahl der in Schritt (e) gezählten Abtastungen den Schwellenwert überschreitet;
und (h) Speichern der Anzahl der in Schritt (e) gezählten Abtastungen
in der Speicherschablone, wenn die Schwelle nicht überschritten
wurde, oder der Anzahl der in Schritt (g) gezählten Abtastungen, wenn der
Schwellenwert überschritten
wurde. Eine gemäß der vorliegenden Erfindung
konstruierte Vorrichtung umfasst einen Prozessor, welcher dafür programmiert
ist, die obigen Schritte auszuführen.
-
Diese
und andere Merkmale, Vorteile und Gegenstände der vorliegenden Erfindung
versteht und erkennt der Fachmann besser durch Bezugnahme auf die
folgende Beschreibung, die Patentansprüche und die beigefügten Zeichnungen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Diagramm, welches die Inhalte eines Speichers eines herkömmlichen
lernfähigen Senders
veranschaulicht;
-
2 ist
ein Diagramm, welches ein beispielhaftes Datencodesignal der Art
darstellt, wie sie typischerweise von einer Steuervorrichtung in
einem lernfähigen
Sender empfangen werden;
-
3 ist
ein schematisches Diagramm eines lernfähigen Senders in Blockform,
welcher gemäß der vorliegenden
Erfindung konstruiert ist;
-
4A bis 4C sind
Ablaufdiagramme der Datenkomprimierungstechnik, die in dem lernfähigen Sender
der vorliegenden Erfindung realisiert ist; und
-
5 ist
ein Diagramm, welches die Inhalte des Speichers eines lernfähigen Senders
darstellt, der gemäß der vorliegenden
Erfindung konstruiert ist.
-
DETAILLIERTE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Die
Datenspeicherungstechnik der vorliegenden Erfindung kann in jedem
lernfähigen
Sender realisiert werden, z. B. sowohl in lernfähigen IR- als auch in lernfähigen HF-Sendern.
Soweit die Datenspeicherungstechnik der vorliegenden Erfindung insbesondere
für die
Anwendung in einem lernfähigen HF-Sender
entwickelt wurde, wird unten eine kurze Beschreibung des allgemeinen
Betriebs eines lernfähigen
HF-Senders gegeben.
-
Die
in den oben angeführten
Patentschriften beschriebenen lernfähigen HF-Sender umfassen im Allgemeinen
eine Antenne 102, welche benutzt wird, um während eines
Lernmodus Ursprungssignale „B" von entfernten Ursprungssendern 104 zu
empfangen und während
eines Betriebsmodus Signale „T" an ferngesteuerte
Vorrichtungen 106 zu senden. Der Fachmann wird erkennen,
dass zum Senden und Empfangen dieser HF-Signale jeweils eigene Antennen benutzt
werden können.
Die Antenne 102 ist mit einem Mischer 108 verbunden,
welcher während
des Lernmodus das empfangene HF-Signal „B" mit einem Referenzsignal mischt, das
von einem spannungsgesteuerten Oszillator (Voltage Controlled Oscillator,
VCO) 110 erzeugt wird. Die Frequenz des vom VCO 110 erzeugten
Referenzsignals wird über eine
Phasenregelkreis-Schaltung 112 selektiv von einem Mikroprozessor 120 gesteuert.
Die Phasenregelkreis-Schaltung 112 ist mit einem Frequenzsteuerungsanschluss 113 des
VCO 110 verbunden und mit dem Ausgang des VCO 110 verbunden,
um die Frequenz des ausgegebenen Referenzsignals zu überwachen.
-
Die
Ausgabe des Mischers 108 wird durch einen Bandpassfilter 122 geleitet.
Der Bandpassfilter 122 dient dazu, alle von dem Mischer 108 ausgegebenen
Signale zu sperren, außer
den Signalen, welche eine vorgegebene Frequenz aufweisen. Signale, welche
diese vorgegebene Frequenz aufweisen, werden vom Mischer 108 nur
ausgegeben, wenn die Differenz zwischen der Frequenz des vom VCO 110 erzeugten
Referenzsignals und der Frequenz des empfangenen HF-Signals „B" 455 kHz beträgt. Die Ausgabe
des Bandpassfilters 122 wird dann von einer Verarbeitungsschaltung 124 verarbeitet,
welche einen Verstärker
und ein Integrierglied umfasst, und dann an einen Dateneingabeanschluss 121 des
Mikroprozessors 120 angelegt. Die Datenausgabe aus der
Verarbeitungsschaltung 124 kann ähnlich jener in 2 dargestellten ähneln.
-
Während des
Lernmodus variiert der Mikroprozessor 120 die Frequenz
des VCO 110 Schritt für Schritt,
bis er Daten an seinem Dateneingabeanschluss 121 erkennt.
Da die Frequenzsteuerungssignalausgabe durch den Mikroprozessor 120 für jede vom
VCO 110 zu erzeugende Frequenz einen unterschiedlichen
digitalen Wert aufweist, kann der Mikroprozessor 120 den
digitalen Wert des Frequenzsteuerungssignals zu der Zeit speichern,
wenn Daten am Dateneingabeanschluss 121 erkannt werden.
Dieser gespeicherte digitale Wert entspricht somit der Trägerfrequenz
des empfangenen HF-Signals und kann deswegen verwendet werden, wenn
der lernfähige Sender
ein Signal übertragen
muss, welches die Eigenschaften des gelernten HF-Signals aufweist.
-
Wenn
der Mikroprozessor 120 das Vorliegen von Daten am Dateneingabeanschluss 121 erkennt, führt er den
unten detaillierter beschriebenen Komprimierungsalgorithmus durch,
um die eingegebenen Daten zu komprimieren und in seinem RAM 126 und NVM 128 zu
speichern. Um den Lernvorgang eines der Kanäle innerhalb des lernfähigen Senders 100 auszulösen, betätigt der
Benutzer einen der Schalter 144, 146 oder 147,
welcher dem Kanal entspricht, in welchem die Signaleigenschaften
zu speichern sind. Wenn der Benutzer einen der Schalter 144, 146 und 147 durchgehend
für eine
vorgegebene Zeitdauer von zum Beispiel fünf Sekunden herunterdrückt, erkennt
der Mikroprozessor 120 eine solche Betätigung über eine Schalterschnittstelle 140 und
reagiert damit, dass er in einen Lernmodus eintritt und bewirkt, dass
die Leuchtdiode (LED) 150 zu blinken beginnt. Durch Blinken
der LED 150 signalisiert der Mikroprozessor 120 dem
Benutzer, ein Ursprungssignal „B" vom Ursprungs-Fernsteuerungssender 104 zu
senden. Der Mikroprozessor 120 durchschreitet dann auf die
Weise, wie sie oben allgemein beschrieben wurde, jede Frequenz,
welche der Trägerfrequenz
des Ursprungssignals „B" entsprechen kann.
Eine detailliertere Beschreibung dieses Lernverfahrens wird in den
oben angeführten
Patentschriften gegeben. Sobald der Mikroprozessor 120 Daten
an seinem Dateneingabeanschluss 121 erkannt hat, speichert
er den digitalen Wert, welcher für
die Frequenz des vom VCO 110 erzeugten Referenzsignals
steht, in dem Kanalspeicher, der zu dem Schalter gehört, den
der Benutzer betätigt
hat. Die empfangenen Daten werden dann wie unten beschrieben verarbeitet
und in einem Ab schnitt des NVM 128, welcher zu dem betätigten Schalter
gehört,
gespeichert.
-
Wenn
ein Benutzer dann wünscht,
dass der lernfähige
Sender 100 ein Signal „T" an eine ferngesteuerte Vorrichtung 106 sendet,
betätigt
der Benutzer einen der Schalter 144, 146 und 147,
der zu dem Signal gehört,
welches wiederum die ferngesteuerte Vorrichtung 106 betätigt. Der
Mikroprozessor 120 erkennt die Betätigung des Schalters und liest
aus dem Speicher den gespeicherten digitalen Frequenzsteuerungswert
aus, welchen er über
die Phasenregelkreis-Schaltung 112 dem VCO 110 zuführt. Der
Mikroprozessor 120 überträgt das Datencodewort,
welches in Verbindung mit dem betätigten Schalter im NVM 128 gespeichert
ist, in den RAM 126. Der Mikroprozessor 120 dekomprimiert
und decodiert dann das gespeicherte Datencodewort und gibt es an
einen Dateneingabeanschluss 111 des VCO 110 aus, wodurch
das vom VCO 110 erzeugte Signal wirksam moduliert wird.
Diese amplitudenmodulierte Signalausgabe aus dem VCO 110 wird
durch den Verstärker 152 verstärkt und über die
Antenne 102 als HF-Signal „T" an die ferngesteuerte
Vorrichtung 106 gesendet.
-
Wie
in den oben angeführten
Patentschriften offenbart, kann ein solcher lernfähiger HF-Sender physisch
und permanent in ein Fahrzeugzubehör, z. B. eine Sonnenblende,
eine Dachkonsole oder einen Rückspiegel,
eingebaut sein. Wenn sich der lernfähige Sender 100 permanent
innerhalb eines Fahrzeugzubehörs
befindet, umfasst er typischerweise eine Stromversorgungsschaltung 130,
welche einen Stecker 132 aufweist, um die Stromversorgungsschaltung 130 mit
der Fahrzeugbatterie 134 zu verbinden. Somit kann der lernfähige Sender
direkt von der Fahrzeugbatterie mit Strom versorgt werden, anstatt von
einer eigenen Batterie, welche ersetzt werden müsste. Ferner kann der Sender
durch Bereitstellen mehrerer Schalter 144, 146 und 147 und
einer gleichen Anzahl an Kanälen
innerhalb des Speichers des lernfähigen Senders mehrere verschiedene
Signaleigenschaften lernen und dadurch selektiv mehrere verschiedene
Vorrichtungen fernsteuern.
-
Nachdem
allgemein der Betrieb eines lernfähigen HF-Senders erläutert wurde,
wird im Folgenden unter Bezugnahme auf die Ablaufdiagramme, die
in 4A bis 4C dargestellt
sind, auf das Speicherabbild, das in 5 dargestellt
ist, und auf die Darstellung eines beispielhaften Datensignals, welche
in 2 dargestellt ist, das verbesserte Datencode-Komprimierungsverfahren
beschrieben.
-
Sobald
der Mikroprozessor 120 während des Lernmodus die Trägerfrequenz
des empfangenen HF-Signals identifiziert hat, beginnt er eine Routine, welche
jener in 4A bis 4C dargestellten ähnelt. Der
erste Schritt 201 der Routine ist es, bestimmte Zeiger
und andere Parameter zu initialisieren, indem sie auf „0" gesetzt werden.
Der erste Parameter „n" wird verwendet,
um Datenabtastungen mit einem bestimmten logischen Wert zu zählen. Der zweite
Parameter „B" wird verwendet,
um auf verschiedene Bytes innerhalb der Schablonen zu zeigen. Ein
dritter Parameter „T" ist ein Zeiger,
welcher verwendet wird, um auf verschiedene Schablonen des Speichers
zu zeigen. Ein vierter Parameter „X" wird verwendet, um auf Positionen im
Schablonensequenzabschnitt des Speichers zu zeigen, und der Parameter „m" ist ein Merker,
welcher verwendet wird, um die Abtastrate zu ermitteln, mit welcher
der Mikroprozessor 120 das Datensignal abtastet, welches
an seinem Dateneingabeanschluss 121 erscheint.
-
Nachdem
die obigen Parameter initialisiert worden sind, überwacht der Mikroprozessor 120 die Daten
am Eingang 121, bis er eine „Totzeit"-Periode (also eine lange Periode auf
der logischen Ebene „0") erkennt (Schritt 202).
Sobald der Mikroprozessor 120 das Ende der „Totzeit" erkannt hat, beginnt
er das empfangene Datensignal abzutasten, indem er ein erstes Bit
abtastet (Schritt 203). Wie unten noch detaillierter erläutert wird,
wird diese Abtastung durchgeführt,
indem der an den Dateneingabeanschluss 121 angelegte analoge
Wert mit einem Schwellenniveau verglichen wird, um zu ermitteln,
ob sich das Signal zu diesem bestimmten Zeitpunkt auf einem logischen
Wert „1" oder „0" befindet. Die Abtastung
wird vorzugsweise anfänglich
mit 25 μs
durchgeführt.
In Schritt 205 ermittelt der Mikroprozessor 120 dann,
ob es sich bei dem abgetasteten Datenbit um eine logische „1" handelt. Wenn nicht,
tastet der Mikroprozessor 120 das nächste Datenbit ab (Schritt 203).
Wenn es sich bei diesem nächsten
Datenbit nicht um eine logische „1" handelt, fährt der Mikroprozessor 120 damit
fort, als Schleife die Schritte 203 und 205 zu durchlaufen,
bis sich ein abgetastetes Datenbit auf einer logischen Ebene „1" befindet.
-
Wenn
in Schritt 205 anfänglich
ein logischer Wert „1" erkannt wird, führt der
Mikroprozessor 120 den Schritt 207 durch, indem
er den Wert des Datenbitzählers „n" erhöht, um anzuzeigen,
dass ein abgetastetes Datenbit mit einem logischen Wert „1" erkannt wurde. Als
Nächstes
tastet der Mikroprozessor 120 ein anderes Datenbit ab (Schritt 209)
und überprüft, ob sich
das abgetastete Datenbit auf einem logischen Wert „1" befindet (schritt 211).
Wenn sich dieses nächste
abgetastete Datenbit auf einer logischen „1" befindet, geht der Mikroprozessor 120 zu Schritt 213 über, wo
er wieder den Wert „n" erhöht, um anzuzeigen,
dass sich ein weiteres Datenbit in Folge auf einer logischen Ebene „1" befindet. Der Mikroprozessor 120 überprüft dann,
ob der Wert des Zählers „n" „FF" (also 256) erreicht hat, welches in
jeder Schablone der höchste
Zählerwert
ist, der in einem Byte gespeichert werden kann. Solange der Mikroprozessor 120 danach
Datenbits abtastet und erkennt, welche einen logischen Wert „1" aufweisen, fährt er damit
fort, als Schleife die Schritte 209, 211, 213 und 215 zu
durchlaufen, und zählt
die Anzahl solcher Datenbits, bis entweder ein Datenbit erkannt worden
ist, welches eine logische Ebene „0" aufweist, oder die Anzahl aufeinander
folgender Datenbits auf der logischen Ebene „1" den Hexadezimaiwert „FF" überschreitet.
-
Wenn
der Wert von „n" „FF" erreicht, schreibt der Mikroprozessor 120 den
Hexadezimalwert „FF" an der Stelle MEM
(T, B) in den Speicher, bei welcher es sich am Anfang entsprechend
dem ersten Byte in der ersten Schablone um MEM (0, 0) handelt (Schritt 225).
Der Mikroprozessor 120 stellt auch den Wert von „n" auf „0" zurück und erhöht den Wert
von „B", um auf das nächste Byte
der Schablone zu zeigen. Vorausgesetzt, dass „B" nicht größer als 4 ist (Schritt 227),
kehrt der Mikroprozessor 120 zu Schritt 209 zurück, um das
nächste
Datenbit abzutasten, und ermittelt in Schritt 211, ob es
sich auf einer logischen Ebene „1" befindet. Der Mikroprozessor 120 fährt dann damit
fort, die Anzahl aufeinander folgender abgetasteter Datenbits zu
zählen,
welche sich auf einer logischen „1" befinden. Wenn der Mikroprozessor 120 danach
in Schritt 227 ermitteln sollte, dass „B" größer ist
als 1, erkennt er, dass ein Fehler aufgetreten ist, und zeigt dem
Benutzer eine Fehlermeldung an, bevor er die Lernsequenz beendet.
-
Wenn
der Mikroprozessor 120 ein abgetastetes Datenbit erkennt,
welches eine logische Ebene „0" aufweist, bevor
alle Bytes in der ersten Schablone aufgefüllt sind, überprüft der Mikroprozessor 120 in Schritt 217,
ob der Wert von „n" „0" ist. Wenn der Wert von „n" nicht „0" ist, speichert der
Mikroprozessor 120 den letzten Wert von „n" in MEM (T, B) und
stellt dann „n" auf „1". Wenn „n" „0" ist, speichert der Mikroprozessor 120 den
Wert von „n" nicht im Speicher,
sondern geht direkt zu Schritt 231 (4B) über, um
das Zählen
der Anzahl aufeinander folgender abgetasteter Datenbits auf der
logischen Ebene „0" zu beginnen. Es
ist vorherzusehen, dass der Mikroprozessor 120 in Schritt 217 nur
ermitteln würde,
dass „n" „0" ist, wenn unmittelbar nach dem Einschreiben
von „FF" in das vorherge hende
Byte ein „0"-Logikbit erkannt
würde,
um „FF" abgetastete Datenbits
auf der logischen Ebene „1" direkt vor dem Erkennen
eines „0"-Bits anzuzeigen.
Anderenfalls hätte „n" einen anderen Wert als „0", der kleiner als „FF", aber größer als „0" wäre und in
das nächste
Byte der Schablone geschrieben werden sollte. Somit zählt dieser
Algorithmus zum Beispiel im Fall des in 2 dargestellten
Datensignals am Anfang „FF" Datenbits auf der
logischen Ebene „1" und schreibt „FF" in MEM (0, 0) und
zählt dann
n = 04 Erkennungen darauf folgender Datenbits einer logischen „1" vor dem Erkennen
eines Datenbits auf der logischen Ebene „0". Somit schreibt der Mikroprozessor 120 „04" in MEM (0, 1) (also
in das nächste
Byte der ersten Schablone).
-
Wenn
der Mikroprozessor 120 in Schritt 219 den gezählten Wert
von „n" in den Speicher
schreibt, erhöht
er dann den Wert „B", um auf das nächste Byte
der Schablone zu zeigen (Schritt 221). Wenn der Wert von „B" nicht größer als
1 ist, geht der Mikroprozessor 120 zu Schritt 231 über, um
die Anzahl der „0"-Logikbits zu zählen. Anderenfalls
ermittelt der Mikroprozessor 120 in Schritt 223,
dass ein Fehler aufgetreten ist, und beendet die Lernsequenz.
-
In
Schritt 231 beginnt der Mikroprozessor 120 das
Verfahren des Zählens
der aufeinander folgenden abgetasteten Datenbits auf der logischen Ebene „0". Der Mikroprozessor 120 beginnt
dieses Verfahren in Schritt 231, indem er das nächste Datenbit
abtastet, und überprüft in Schritt 233,
ob sich das abgetastete Datenbit auf einer logischen Ebene „0" befindet. Wenn sich
dieses abgetastete Datenbit auf einer logischen Ebene „0" befindet, erhöht der Mikroprozessor 120 den
Wert „n" in Schritt 235 und überprüft in Schritt 237,
ob der Wert „n" den Hexadezimalwert „FF" erreicht hat. Wenn „n" nicht „FF" ist, wiederholt
der Mikroprozessor 120 die Schritte 231 bis 237,
bis entweder ein abgetastetes Datenbit erkannt wird, welches eine
logische Ebene „1" aufweist, oder der
Mikroprozessor 120 ermittelt, dass „n" „FF" ist.
-
Wenn „n" „FF" ist, schreibt der Mikroprozessor 120 in
Schritt 239 „FF" in MEM (T, B) und
stellt den Zähler „n" auf „0" zurück und erhöht den Wert des
Byte-Zählers „B". Dann, vorausgesetzt,
dass der Byte-Zähler „B" nicht größer als
4 ist (Schritt 241), fährt
der Mikroprozessor 120 damit fort, aufeinander folgende
abgetastete Datenbits auf der logischen Ebene „0" zu zählen, indem er als Schleife
die Schritte 231 bis 241 durchläuft. Wenn
jedoch in Schritt 233 ein abgetastetes Datenbit erkannt
wird, welches sich auf einer logischen „1" befindet, bevor für das letzte Byte der Schablone „FF" Datenbits auf der
logischen „0" gezählt werden,
geht der Mikroprozessor 120 zu Schritt 243 über, wo
er überprüft, ob der
letzte Wert von „n" „0" ist. Wenn „n" nicht „0" ist, schreibt der Mikroprozessor 120 den
Wert von „n" in MEM (T, B) und geht
zu Schritt 247 über.
Wenn anderenfalls „n" „0" ist, schreibt der Mikroprozessor 120 diesen „0"-Wert nicht in den
Speicher, sondern lässt
den Schritt 245 aus und geht zu Schritt 247 über, wo
der Mikroprozessor 120 den Wert von „n" auf „1", „B" auf „0" und „m" auf „0" stellt und den Wert
des Schablonenzeigers „T" erhöht, bevor
er zu Schritt 255 übergeht (4C).
-
Wenn
der Mikroprozessor 120 in Schritt 237 und 241 ermittelt,
dass der Zähler „n" auf „FF" steht und dass der
Byte-Zeiger „B" größer als
4 ist, dann geht der Mikroprozessor 120 davon aus, dass
es weitere darauf folgende Abtastungen gibt, die sich auf der logischen
Ebene „0" befinden können. Da
jedoch in der Schablone keine Bytes mehr übrig sind, in welchen Zählwerte
etwaiger weiterer abgetasteter Bits auf der logischen Ebene „0" gespeichert werden
können,
und da jede Schablone mit der Anstiegsflanke eines Impulses beginnt,
welche bei einem Übergang von
einer Logikebene „0" auf eine Logikebene „1" vorliegt, kann die
Zählung
weiterer logischer Ebenen „0" nicht den Weg von
einer Schablone in die nächste Schablone überspannen.
Weil ferner einige der HF-Steuersignale, welche von in Europa hergestellten
Ursprungs-Garagentorsendern gesendet werden, bedeutende Mengen an „Totzeit" zwischen den Codewörtern umfassen
(also ausgedehnte Perioden auf der logischen „0"), stellt die vorliegende Erfindung ein
Mittel bereit, um das Vorliegen solcher „Totzeiten" zu erkennen. Wenn eine solche „Totzeit" erkannt wird, verlangsamt
der Mikroprozessor 120 die Abtastrate des Mikroprozessors
während
dieser Totzeit, um das empfangene Datensignal wirksamer zu komprimieren
und dadurch zu ermöglichen,
dass die gesamte Totzeit wirksam in einer Schablone aufgezeichnet
wird.
-
Um
diese Funktionen auszuüben,
erkennt der Mikroprozessor 120, wann das letzte Byte der Schablone
definiert wird und wann der Zählwert
logischer „0en" für dieses
letzte Byte der Schablone den Hexadezimalwert „FF" erreicht hat. Wenn dies der Fall ist,
führt der
Mikroprozessor 120 den Schritt 249 aus, in welchem
er nach einem Byte mit einem anderen Wert als „FF" das erste Byte der Schablone identifiziert,
welches einen Wert „FF" aufweist. Mit anderen
Worten ist dieses Byte jenes, welches dem Byte folgt, das das hintere
Ende eines Logik-„1"-Impulses definiert.
Der Mikroprozessor 120 überschreibt
dann das „FF", welches in dem
identifizierten Byte gespeichert ist, und stellt dort „01" ein, was als ungültiger Eintrag
angesehen wird. Dann löscht
der Mikroprozessor 120 in Schritt 251 alle Bytes
der Schablone, welche jenem Byte folgen, in das er „01" geschrieben hat,
so dass sie mit dem berechneten Wert der Anzahl an Abtastungen überschrieben
werden können, welche
mit der langsameren Rate vorgenommen wurden. In Schritt 253 stellt
der Mikroprozessor 120 den Byte-Zeiger „B" auf den Wert des Bytes, welches jenem
mit der „01" folgt, stellt die
Abtastrate auf eine langsamere Rate (vorzugsweise 125 μs) ein, indem er
den Merker „m" auf „1" stellt, und berechnet
die Anzahl der bereits mit der anderen Rate gezählten Abtastungen, indem er
die Anzahl der mit der schnelleren Rate gezählten „0"-Logik-Abtastungen durch fünf (dem
Faktor, um welchen die Abtastrate verändert ist) dividiert, und nimmt
die Zählung
beginnend bei der errechneten Anzahl an Abtas tungen mit der langsameren
Rate wieder auf. Der Mikroprozessor 120 durchläuft dann
erneut als Schleife die Schritte 231 bis 241,
um die Anzahl der Abtastungen auf der logischen Ebene „0" mit der langsameren
Abtastrate zu zählen.
-
Wie
der Fachmann erkennen wird, kann die Rate, mit welcher der Mikroprozessor 120 das
an den Dateneingabeanschluss 121 angelegte Datensignal abtastet,
verändert
werden, indem eine Verriegelungsschaltung bereitgestellt wird, um
die Ebene des Datensignals einzurasten und auf dem letzten Taktimpuls
zu halten, welcher ebenfalls an die Verriegelungsschaltung angelegt
wird, so dass die Taktfrequenz angepasst werden kann, um die Abtastrate
zu verändern.
Alternativ können
Verzögerungen
in die Software-Routine einprogrammiert werden, derart, dass die
Abtastschritte mit den entsprechenden Zeitintervallen durchgeführt werden,
wobei weitere Verzögerungen
zwischen den Abtastschritten zur Ausführung gebracht werden können, wenn
der Merker „m" eingestellt worden
ist.
-
Der
Mikroprozessor 120 fährt
dann damit fort, die mit der langsameren Rate abgetasteten Bits zu
zählen,
bis danach in Schritt 233 ein Bit einer logischen „1" erkannt wird. Wenn
ein Bit einer logischen „1" erkannt wird, geht
der Mikroprozessor 120 auf die oben beschriebene Weise
zu Schritt 243 über.
-
Wie
oben angemerkt wird, wenn entweder alle Bytes einer Schablone gefüllt worden
sind, oder wenn nach einer Sequenz erkannter Logik-„0"-Bits ein Bit einer
logischen „1" erkannt wird, der
Wert des Schablonenzeigers erhöht,
so dass die nächste Schablone
definiert werden kann, indem wieder die Anzahl der abgetasteten
Bits bei jedem Logikwert gezählt
wird. Da aufgrund von Wiederholungsstrukturen in den Daten einige
der definierten Schablonen identische Definitionen aufweisen können, vergleicht
der Mikroprozessor 120 die Definition der zuletzt definierten
Schablone mit der Definition aller zuvor definierten Schablonen,
um zu ermitteln, ob jene durch die letzte Schablone definierte spezielle
Datenstruktur bereits definiert worden ist, damit er keinen Speicherplatz
damit verschwendet, doppelte Schablonendefinitionen zu speichern.
Die vorliegende Erfindung unterscheidet sich von dem früheren Verfahren
dadurch, dass zwei Schablonenkennungen je Byte des Schablonensequenzabschnitts
des Speichers gespeichert werden, wodurch die benötigte Speichermenge
weiter verringert wird.
-
Um
die richtige Rekonstruktion des Signals basierend auf den definierten
Schablonen sicherzustellen, muss die durch diese Schablonen definierte Sequenz
der Datenstrukturen in der Reihenfolge, in der sie auftreten oder
erneut auftreten, auch in dem Speicher gespeichert werden. Somit
wird jedes Mal, wenn eine Schablone unter Anwendung der in 4A und 4B dargestellten
Routine definiert worden ist, im NVM 128 eine Schablonenkennzahl
in einem Abschnitt des Speichers gespeichert, der dem Kanal zugeordnet
ist. Der Mikroprozessor 120 führt diese Operation durch,
indem er die Routine ausführt,
die allgemein in 4C umrissen ist. Diese Routine
beginnt in Schritt 255 damit, dass der Parameter „A" auf „0" gestellt wird, welcher
dafür verwendet
wird, jede der vorigen Schablonen zu durchlaufen, die definiert
worden sind, und auf diese zu zeigen. Als Nächstes überprüft der Mikroprozessor 120 in
Schritt 257, ob es irgendwelche zuvor definierte Schablonen
gibt, indem er überprüft, ob „T" den Wert „1" aufweist. Wenn „T" den Wert „1" aufweist, gibt es keine
vorigen Schablonen, und der Mikroprozessor 120 geht zu
Schritt 259 über,
wo er den Wert von „A" im Schablonensequenzabschnitt
des Speichers SEQMEM(X) speichert. Der Wert des Zeigers „X" wird dann in Schritt 261 erhöht, um auf
die nächste
Stelle im Schablonensequenzabschnitt des Speichers zu zeigen. Dann überprüft der Mikroprozessor 120 in Schritt 263,
ob irgendwelche zu komprimierenden Daten übrig sind, oder ob alle Schablonen
definiert worden sind (es können
sechzehn Schablonen definiert werden), oder ob der Wert des Zeigers „X" die Anzahl der Speicherstellen
im Schablonensequenzabschnitt des Speichers überschreitet. Wenn irgendeine
dieser Bedingungen erfüllt
ist, beendet der Mikroprozessor 120 die Routine. Anderenfalls
kehrt der Mikroprozessor 120 zu Schritt 209 (4A)
zurück,
um mit dem Abtasten von Datenbits für die nächste Schablone zu beginnen.
-
Wenn
der Mikroprozessor 120 in Schritt 257 ermittelt,
dass „T" nicht den Wert „1" aufweist, geht er davon
aus, dass wenigstens eine zuvor definierte Schablone vorhanden ist.
In Schritt 265 vergleicht der Mikroprozessor 120 die
in dem ersten Byte der ersten definieren Schablone gespeicherten
(also in MEM (A, B) gespeicherten) Werte mit dem im ersten Byte
der zuletzt definierten Schablone gespeicherten Wert. Wenn diese
verglichenen Werte nicht gleich sind, erhöht der Mikroprozessor 120 in
Schritt 267 den Wert des Zeigers „A", um auf die nächste definierte Schablone
zu zeigen, und ermittelt dann in Schritt 269, ob es sich
bei der nächsten
definierten Schablone in der Tat um die zuletzt definierte Schablone
handelt, indem er überprüft, ob „A" den Wert „T – 1" aufweist. Wenn der
Zeiger „A" den Wert „T – 1" aufweist, speichert
der Mikroprozessor 120 in Schritt 259 den Wert von „A" auf der X-ten Position
im Schablonensequenzabschnitt (SEQMEM(X)) des Speichers. Wenn der
Mikroprozessor 120 andererseits in Schritt 265 ermittelt,
dass der in dem ersten Byte der ersten Schablone gespeicherte Wert
derselbe ist wie der in dem ersten Byte der zuletzt definierten
Schablone gespeicherte Wert, erhöht
der Mikroprozessor 120 in Schritt 271 den Wert
des Byte-Zeigers „B". Wenn der Wert des
Byte-Zeigers „B" noch nicht 5 erreicht
hat (Schritt 273), fährt
der Mikroprozessor 120 damit fort, die Werte zu vergleichen,
die in jedem der Bytes der ersten definierten Schablone und der
zuletzt definierten Schablone gespeichert sind. Wenn der Mikroprozessor 120 den
Schritt 273 erreicht, wenn „B" den Wert 5 aufweist, was bedeutet, dass
alle Werte jedes Bytes der beiden verglichenen Schablonen gleich sind,
geht der Mikroprozessor 120 zu Schritt 275 über, wo
er den Speicher für
die zuletzt definierte Schablone T – 1 löscht und den Wert des Schablonenzeigers „T" auf T – 1 zurückstellt,
um zu ermöglichen,
dass der zugeordnete Speicher für
die Schablone T – 1
danach benutzt werden kann, um die nächste Schablone zu definieren.
Der Mikroprozessor 120 speichert dann den Wert „A" auf der X-ten Speicherstelle
im Schablonensequenzabschnitt des Speichers (Schritt 259).
-
Wie
aus den obigen Beschreibungen der Datenspeicherungstechnik der vorliegenden
Erfindung und der vor der Erfindung angewendeten Datenspeicherungstechnik
ersichtlich ist, kann sich die vorliegende Erfindung wirksam auf
lange „Totzeit"-Perioden einstellen,
welche oft in Signalen auftreten, die von Europäischen Garagentoröffner-Sendern
gesendet werden. Wenn ein lernfähiger
Sender, der die frühere
Datenspeicherungstechnik anwendet, ein solches Signal empfängt, wird
sein RAM mit Daten überfüllt, so
dass der lernfähige
Sender nicht ein gesamtes Codewort speichern kann, was zu einem
Versagen dabei führt,
den erforderlichen Datencode für
ein darauf folgendes Senden zu lernen. Mit der vorliegenden Erfindung
wird das empfangene Datensignal dagegen codiert, wenn das Signal
empfangen und abgetastet wird. Somit muss nicht ein gesamtes digitalisiertes
Datencodewort im RAM des Prozessors gespeichert werden. Ferner kann
ein lernfähiger Sender,
welcher die Datenspeicherungstechnik der vorliegenden Erfindung
anwendet, durch Wechseln zu einer langsameren Abtastrate, wenn ein
Schwellenwert aufeinander folgender Logik-„0"-Datenabtastungen gezählt wird,
die codierten Daten wirksamer komprimieren, wenn in dem Datensignal
eine lange „Totzeit"-Periode vorliegt.
-
Obwohl
die vorliegende Erfindung so beschrieben worden ist, dass sie hauptsächlich für die Anwendung
in einem lernfähigen
HF-Sender entwickelt worden ist, um die oben angeführ ten Probleme zu überwinden,
ist es für
den Fachmann ersichtlich, dass die Datenspeicherungstechnik der
vorliegenden Erfindung auch für
andere lernfähige
Vorrichtungen, z. B. für
einen universellen IR-Fernsteuerungssender, angewendet werden kann.
Ferner wird der Fachmann auf dem Gebiet der Datenspeicherung erkennen,
dass die Methodik der vorliegenden Erfindung in anderen Anwendungen
angewendet werden kann, bei denen ein Datensignal gespeichert werden
muss.
-
Die
obige Beschreibung ist nur als die Beschreibung der bevorzugten
Ausführungsformen
anzusehen. Dem Fachmann und denjenigen, die von der Erfindung Gebrauch
machen, werden Modifikationen der Erfindung einfallen. Deswegen
versteht es sich, dass die in den Zeichnungen dargestellten und oben
beschriebenen Ausführungsformen
lediglich der Veranschaulichung dienen und nicht den Umfang der
Erfindung beschränken
sollen, welcher durch die folgenden Patentansprüche definiert ist.