Pfad: Home => AVR-DE => Anwendungen => Taster und Schalter an einem ADC => Tastenfeld => Widerstandsmatrix Grafik Tool
Tastenfeld Grafik AVR-Einchip-Mikrokontroller AT90S, ATtiny, ATmega
von ATMEL in praktischen Beispielen
Logo

Software für Tastenfelder mit 1 bis 16 Tasten am ADC eines AVR

Diese Seite zeigt die Software zum Anschluss und Betrieb eines Tastenfelds mit 1 bis 16 Tasten an einem ADC-Eingang eines AVR. Beschrieben wird ein grafisches Programm zur Optimierung der Widerstandsmatrix.
  1. Die Software,
  2. Wie sie funtioniert,
  3. Was sie produziert,
  4. Welche Erfahrungen damit gemacht wurden,
  5. Feedback.

1 Die Software

Starting RMatrix Die Software ist in Delphi-Pascal geschrieben. Die gezippte ausführbare Datei für Win32 ist hier verfügbar.

Die folgenden Fensterbestandteile sind zu erkennen: Auf der rechten Seite des Fensters

. RMatrix unter Linux/Wine Die Software kann auch unter Wine in Linux gestartet werden. Der einzige Unterschied ist nur der unterschiedliche Font.

To the top of the page

2 Wie die Software funktioniert

2.1 Auswahl der Tastenfeldgröße

Die Anzahl an Spalten und Zeilen bewirkt einen Neustart der Widerstandsmatrix. Das kann auch dazu verwendet werden, um einen Neustart zu provozieren, wenn ein Näherungslauf kein gutes Ende genommen hat.

2.2 Auswahl des Matrixmodus

Je zwei Varianten können ausgewählt werden:

2.3 Widerstandstypen und ADC-Auflösung

Die Widerstandsreihe und die AD-Wandler-Auflösung werden automatisch der Größe des Tastenfelds angepasst. Das Ändern der E-Reihe kann sich in Änderungen von Widerstandsreihen bemerkbar machen, da Widerstandswerte in ihr nahestes Äquivalent in der Zielreihe umgewandelt wird. Das Ändern der ADC-Auflösung kann die Anzahl Überlappungen verändern und verändert auch die Ergebnistabelle und den Assembler-Quellcode (siehe unten).

2.4 Näherungsschritte

Die Schaltfläche "Step" vollführt einen einzelnen Näherungsschritt, d.h. Das Schaltfeld "Run low" führt 100 Näherungsschritte auf einmal mit den niedrigeren Widerständen aus (R2 bis R4 im Fall mit 16 Tasten, die Schaltfläche "Run all" variiert alle Widerstände außer R1. 100 Schritte reichen meistens schon aus, um das Optimum zu erreichen. Alle Widerstände, die sich beim letzten Lauf verändert haben, werden rot eingefärbt.

Die Anzahl Durchläufe und die Anzahl an Überlappungen werden angezeigt. Die Überlappungen sind die Summe aller Fälle, bei denen der gemessene Spannungspegelbereich innerhalb denjenigen anderer Tastenkombinationen liegt. Die Anzahl Überlappungen sollte Null sein.

Da die Widerstandsauswahl zufällig erfolgt, kann bei jedem Durchlauf ein anderes Ergebnis resultieren. Es macht daher bei nicht erfolgreichem Abschluss Sinn, weitere Durchläufe durch Auswahl der Spalten-/Reihen-Einstellung zu starten.

2.5 Manuelle Änderung von Widerstandswerten

Durch Klicken auf ein Widerstandssymbol im Schaltbild öffnet sich ein Eingabefeld, das die Eingabe eines neuen Wertes ermöglicht. Die Eingabe kann k, K oder M enthalten. Ein Klick auf die Schaltfläche "Set" ändert den Wert entsprechend.

To the top of the page

3 Was das Programm produziert

Wenn der letzte Näherungsschritt die gleiche Abstandssumme und Null Überlappungen ergab, sind die drei Schaltflächen "Save as ...", "Save" und "Asm table" aktiv. Durch Drücken der Schaltflächen wird folgendes bewirkt: Unter Windows werden die Dateien per Default in den Pfad geschrieben, der die ausführbare Datei enthält. Unter Linux-Wine ist der Speicherort der Dokumenten-Ordner. Andere Speicherorte können im Dialog angegeben werden.

3.1 Schaltbild

Schaltbild 4*4 Der Dateiname beginnt mit "RMat_" und enthält danach In diesem Falle ist der Name der Grafikdatei "RMat_StIn_E12_1%_10bit.gif". To the top of the page

3.2 Liste der Widerstände

Die Widerstands-Textdatei enthält die Widerstände als reiner ASCII-Text.

3.3 Assembler-Include-Tabelle

Die Include-Tabelle "(Dateiname).inc" sieht so aus:

; C4R4 keypad, Inclusive, Stacked
; Decimal table for assembler
Keytable: ; lower limit, upper limit+1, 'Key'
.DW 20, 22 ; '1'
.DW 54, 57 ; '2'
.DW 66, 70 ; '3'
.DW 84, 88 ; 'A'
.DW 88, 92 ; '4'
.DW 214, 222 ; '5'
.DW 253, 262 ; '6'
.DW 304, 314 ; 'B'
.DW 316, 326 ; '7'
.DW 569, 580 ; '8'
.DW 623, 634 ; '9'
.DW 683, 693 ; 'C'
.DW 732, 741 ; '*'
.DW 896, 901 ; '0'
.DW 918, 923 ; '#'
.DW 940, 944 ; 'D'
.DW 0 ; table end
Keyvalues:
.DB "123A456B789C*0#D" ; Key values ASCII

Sie kann mit der Direktive .INCLUDE "(Dateiname).inc" direkt in den Quellcode eingelesen werden.

Bitte beachten, dass beim 8-Bit-ADC Bytes, beim 10-Bit-ADC Worte in der Tabelle stehen.

4 Erfahrungen

Der Inklusiv-Modus arbeitet in den meisten Fällen erfolgreich und endet mit Null Überlappung. Wenn nicht, einfach neu starten. Der Exklusiv-Modus funktioniert nur mit 12 und weniger Tasten. Ab neun Tasten und mehr muss schon auf 1%-Widerstände oder 10-Bit-ADC umgestellt werden. Bei 16 Tasten endet die Näherung nahezu immer erfolglos und es muss auf manuelle Änderungen ausgewichen werden.

Die Varianten mit gestapelten oder einzelnen Widerständen unterscheiden sich bezüglich ihrer Näherungseigenschaften kaum.

5 Feedback

Feedback bitte an info (at) avr-asm-tutorial.net, (at) durch @ ersetzen und Leerzeichen entfernen.

To the top of the page

©2014 by http://www.avr-asm-tutorial.net