Autor Thema: Tastatur mit CapsLock Controlle  (Gelesen 103012 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #100 am: Do 23.08.2012, 01:04:33 »
Nach einigem Basteln, habe ich folgende Lösung:



Wenn sich jemand wundert warum die Ports so weit zusammengeschrumpft sind.

Erst wollte ich Port 4 als Ausgang benutzen. Das hätte acht freie Bit ergeben. Nach dem Ich es Probiert hatte und Nicht vernünftiges heraus kam, habe ich noch mal den IKBD Code studiert und Festgestellt, dass es damit gleich zwei Probleme gibt. Einerseits Läuft ein Interrupt der alle 1/500stel Sekunde eine Spalte der Tastatur abfragt. Will ich zu dem Zeitpunkt meine Ausgabe machen kommt nur Müll raus, Zum anderen, wenn nicht gerade die Tastatur ausgelesen wird, werden Maus und Joystick abgefragt. Damit schaltet der 74ls244 die Signale durch, will ich da etwas schreiben, kollidieren die Signale von Maus und Joystick mit meinen aus dem Port4 und ich habe wieder nur Unsinn. Also fiel Port4 schon mal flach. Port1 und Port2 sind fest belegt und da in die Signale zu pfuschen ist so komplex, das ich es nicht mit einem Befehl hin bekomme. Bei zwei oder mehr Befehlen an den IKBD besteht die Gefahr, dass der IKBD meine Arbeit wieder rückgängig macht, oder mit meinen Einstellungen nicht klar kommt. Also blieb nur Port3. Dieser wird nur zur Abfrage der Tastaturmatrix verwendet und dauerhaft als Ausgang geschaltet. Also muss ich sicher stellen, Das mir die Tastaturabfrage nicht in meine Anzeige schreibt. Zwar setzt der IKBD code Port3 Bit0 immer auf high, wenn es die Tastaturmatrix abfragt, aber auch alle Bits an Port3 werden parallel gesetzt. Das heißt es wird das übernommen was Der IKBD Code gerade schreibt. Das ist zwar nett anzusehen, aber es ist nicht das was man haben will. Also Studierte ich den Code nochmal. Dabei sah ich, das als erstes der Maus und Joystick Port ausgeblendet wird indem an Port2 Bit 0 auf high gezogen wird, erst dann werden Port3 und Port4 gesetzt. Wenn ich also Bit0 von Port3 und Bit0 von Port2 kombiniere, kann ich sicherstellen, das meine Anzeige unverändert bleibt während die Tastaturmatrix abgefragt wird. Das heißt die Bits auf Port3 dürfen übernommen werden, wenn  Port3.0 Low ist und Port2.0 low ist. So griff ich nach einem 74ls02 und setzte ihn ein. Sieben Bit sind gar nicht mal so schlecht. Aber ich erinnerte mich, das ich kein 0-Bytes übertragen kann (Fehler in der Programmierung des IKBD). Also muss immer ein Bit high sein. Blieben noch sechs übrig. Ich schrieb ein kleines Progrämmchen um die Anzeige zu testen. Doch immer wieder hängte sich der IKBD auf. Ich kam dahinter das schon ein 0-Nibble (4Bit, ein halbes Byte) zu einem Fehler führt. Ich weiß nicht wo es zu dem Problem kommt, aber es ist da und reproduzierbar. So musste ich im oberen Nibble noch ein Bit opfern, das ständig high ist. So blieben nur 5 Bit für die Anzeige übrig. Ist jemand geschickt und denkt sich die richtige Kombination von Signalen aus, bei dem niemals ein 0Byte oder 0Nibble auftauchen kann man es auf sieben Bit bringen. Das war mir zu viel Aufwand.

Neben der vergrößerten Anzahl der von LEDs ist die Schaltung auch in sich Statisch. Es ist nicht nötig die Anzeige ständig zu aktualisieren. Die Schaltung "erkennt" wenn etwas falsches geschrieben werden soll.

Den GFA-Code liefe ich nach sobald ich ihn in eine repräsentable Form gebracht habe. Zur Zeit ist es kaum mehr als ein Hack.

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #101 am: Do 23.08.2012, 15:52:18 »
Ich habe etwas nachgedacht und brauche euer Feedback.

Es gibt nun drei Möglichkeiten wie ich die LED-Überwachung umsetzen kann.

1.
Ein AUTO-Ordner Programm, das sich persistent in den Speicher hängt und Die LEDs ansteuert.
Vorteile:
  • sollte überall laufen, sofern es möglichst früh gestartet wird.
Nachteile:
  • Unflexible Konfiguration.

2.
Ein AUTO-Ordner Programm, das sich persistent in den Speicher hängt und Die LEDs ansteuert und ACC das dieses Steuert und Konfiguriert.
Vorteile:
  • Einfaches Einstellen des Verhaltens
  • Wenn alles konfiguriert ist wird das ACC nicht mehr gebraucht
Nachteile:
  • Belegt dennoch einen ACC-Slot
  • Es kann zu Problemen mit dem Speicherschutz bei moderneren Systemen kommen, wenn Die Einstellungen sofort übernommen werden sollen. (Ansonsten würde ja kein ACC gebraucht :) )

3. Nur ein ACC das auch die Überwachung übernimmt.
Vorteile:
  • Einfach Handhabung. Nur ein Programm, das man beachten muss
  • Unter Modernen Systemen auch als normales Hintergrundprogramm benutzbar.
  • Vollständige und einfache Konfiguration.
Nachteile:
  • Es kann bei modernen Systemen zu Problemen mit dem Speicherschutz kommen, da in vielen Teilen des Systems herum gepfuscht wird.
  • Es belegt dauerhaft einen ACC-Slot.


Und dann gibt es natürlich noch die frage was soll überwacht werden.

  • Capslock
  • DMA-Zugriffe (ACSI,Floppy,DMA-Sound)
  • IDE Zugriffe
  • Allgemeine Laufwerkszugriffe
  • Alive Ticker (blinkt langsam solange das System nicht Hängt)
  • Working (LED ist aus wenn das System nichts zu tun hat, es blinkt also bei aktivität)
  • SuperUserMode (LED geht an, wenn das System in den SuperUserMode wechselt. Das passiert bei Systemzugriffen (Adressraum bis 4096))

Fällt euch noch was ein?
Soll ich für andere Programme Funktionen bereit stellen? Oder gibt es da schon Protokolle die ich nutzen kann?
« Letzte Änderung: Do 23.08.2012, 15:55:14 von ToPeG »

rainers

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #102 am: Do 23.08.2012, 16:49:19 »
Hallo ToPeG,

vielen Dank für die super Arbeit. Du hast echt viel Mühe und Zeit da reingesteckt.


Ich bin für Variante 1. Die "unflexible" Konfiguration empfinde ich nicht als störend.

Bzgl. der Überwachungen wären das meine Favoriten:
Capslock
DMA-Zugriffe (ACSI,Floppy,DMA-Sound)
Alive Ticker
Working
SuperUserMode


Was kann man sich unter " Allgemeine Laufwerkszugriffe" vorstellen?

Danke
Rainer

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #103 am: Do 23.08.2012, 17:13:34 »
Was kann man sich unter " Allgemeine Laufwerkszugriffe" vorstellen?
Alle Zugriffe auf Dateien oder Ordner laufen über TOS Funktionen, Diese Leiten die Aktionen an die passenden Treiber weiter. Wenn ich mich da einhänge, bekomme ich jede Dateiaktion mit, kann aber nicht feststellen, an welches Gerät diese Anfragen gehen.
Dem gegenüber bietet das TOS Funktionen, mit denen es DMA-Zugriffe handhabt. Diese betreffen Floppy und ACSI. Im STE auch DMA-Sound und im TT/Falcon SCSI. Welches der Geräte betroffen ist kann ich darüber aber nicht feststellen. Auch direkte DMA-Aktionen (Das Programm schreibt in die Hardwareregister) sind damit nicht detektierbar. Dafür müsste ich die Hardware abfragen.

Was mir noch an Anzeigemöglichkeiten einfällt:
  • Blitter aktiv
  • 16Mhz aktiv bei Mega-STE
  • ProzessorCache aktiv  bei MegaSTE, Falcon, TT

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #104 am: Do 23.08.2012, 18:10:40 »
Wie versprochen hier der Code:
'
' Testprogramm fuer Tastatur LEDs
' Ueberwacht den Capslock-Status
'
' Siehe beigelete Schaltung
'
' Komando, Adresse, Bytecount, Bytes
' 20,      0006,    01,        82+LEDbit
'
kbd$="     "
oldsend|=0
send|=0
init
'
PRINT AT(1,1);"Ende mit Maustaste"
PRINT AT(1,2);"CapsLock schaltet LED 0"
PRINT AT(1,3);"LED 1..4 werden mit den Nummerntasten geschaltet"
'
key$=""
REPEAT
  key$=INKEY$
  IF key$="1"
    led_update(0)
  ELSE IF key$="2"
    led_update(1)
  ELSE IF key$="3"
    led_update(2)
  ELSE IF key$="4"
    led_update(3)
  ENDIF
  capslock_update
  send
  print_status
UNTIL MOUSEK OR key$=CHR$(27)
'
' ############################################
'
PROCEDURE init
  LOCAL adr%
  send|=&H82
  oldsend|=send|
  '
  adr%=VARPTR(kbd$)
  CARD{adr%}=&H2000
  CARD{adr%+2}=&H601
  CARD{adr%+4}=send|
  '
  ~XBIOS(25,5,L:adr%)
  ~XBIOS(25,5,L:adr%)
RETURN
'
PROCEDURE capslock_update
  LOCAL status!
  IF BIOS(11,-1) AND 16
    send|=BSET(send|,2)
  ELSE
    send|=BCLR(send|,2)
  ENDIF
RETURN
'
PROCEDURE led_update(num|)
  LOCAL pos|
  IF num|<4
    num|=num|+3
    IF send| AND BSET(0,num|)
      send|=BCLR(send|,num|)
    ELSE
      send|=BSET(send|,num|)
    ENDIF
  ENDIF
RETURN
'
PROCEDURE led_set(num|,on!)
  IF num|<4
    IF on!
      send|=BSET(send|,num|+2)
    ELSE
      send|=BCLR(send|,num|+2)
    ENDIF
  ENDIF
RETURN
'
PROCEDURE print_status
  PRINT AT(5,5);"LED0: ";
  IF send| AND 4
    PRINT "ON "
  ELSE
    PRINT "OFF"
  ENDIF
  '
  PRINT AT(5,6);"LED1: ";
  IF send| AND 8
    PRINT "ON "
  ELSE
    PRINT "OFF"
  ENDIF
  '
  PRINT AT(5,7);"LED2: ";
  IF send| AND 16
    PRINT "ON "
  ELSE
    PRINT "OFF"
  ENDIF
  '
  PRINT AT(5,8);"LED3: ";
  IF send| AND 32
    PRINT "ON "
  ELSE
    PRINT "OFF"
  ENDIF
  '
  PRINT AT(5,9);"LED4: ";
  IF send| AND 64
    PRINT "ON "
  ELSE
    PRINT "OFF"
  ENDIF
RETURN
'
PROCEDURE send
  LOCAL adr%
  send|=BCLR(send|,0)
  send|=BSET(send|,1)
  send|=BSET(send|,7)
  IF oldsend|<>send|
    adr%=VARPTR(kbd$)
    CARD{adr%+4}=send|
    ~XBIOS(25,5,L:adr%)
    ~XBIOS(25,5,L:adr%)
    oldsend|=send|
  ENDIF
RETURN

und im Anhang als GFA. (.PDF entfernen)
« Letzte Änderung: Do 23.08.2012, 18:12:43 von ToPeG »

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #105 am: Do 23.08.2012, 19:35:39 »
So ein paar Bilder. Wundert euch nicht, über die aufwändige Konstruktion. Ich wusste das ich das ganze mehrmals Umlöten würde. Darum habe ich das auf eine Tocherplatine gesetzt. Damit ich es später auch mal fest verbauen kann, habe ich auf die Bauhöhe geachtet. Solle Sich jemand eine Karte Ätzen wollen wäre das eine Bauform die ich vorschlagen würde.







Unten links auf dem zweiten Bild. Erkennt jemand das Netzteil. ;)
« Letzte Änderung: Do 23.08.2012, 19:40:51 von ToPeG »

rainers

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #106 am: Do 23.08.2012, 20:22:05 »
Tolle Arbeit.
Mir bleibt die Kinnlade unten.

-----
Netzteil? Commodore?

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Tastatur mit CapsLock Controlle
« Antwort #107 am: Do 23.08.2012, 20:58:08 »
Ich hab ja auch schon ein paar dolle Dinger gelötet... aber in so kurzer Zeit und so übersichtlich und durchdacht.. da kann ich Rainer nur zustimmen, tolle Arbeit.

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #108 am: Do 23.08.2012, 21:55:06 »
Netzteil? Commodore?
Korrekt! C64 Netzteil. Jeder der ein C64 hatte kennt den Geriffelten Klotz. :)

Und danke für das Lob. :)
Sieht aber schlimmer aus als es ist. mit Flachbandkabel sind 40 Verbindungen schnell gelötet. Alles eine Sache der Übung.
« Letzte Änderung: Do 23.08.2012, 21:57:40 von ToPeG »

Burkhard Mankel

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #109 am: Fr 24.08.2012, 11:47:44 »
  • Capslock
  • DMA-Zugriffe (ACSI,Floppy,DMA-Sound)
  • IDE Zugriffe
  • Allgemeine Laufwerkszugriffe
  • Alive Ticker (blinkt langsam solange das System nicht Hängt)
  • Working (LED ist aus wenn das System nichts zu tun hat, es blinkt also bei aktivität)
  • SuperUserMode (LED geht an, wenn das System in den SuperUserMode wechselt. Das passiert bei Systemzugriffen (Adressraum bis 4096))

Was mir noch an Anzeigemöglichkeiten einfällt:
  • Blitter aktiv
  • 16Mhz aktiv bei Mega-STE
  • ProzessorCache aktiv  bei MegaSTE, Falcon, TT

edit: Tut mir leid, ich wollte eigentlich nur auf "Vorschau" gehen und mein System hats "gespeichert", wo ich eigentlich noch am Antwortbasteln war!
Also - ich fände interessant:
  • Capslock (darum dreht sich's ja sowieso im Thread)
  • IDE Zugriffe (beim 1040er eher für mich interessant)
  • DMA-Zugriffe (beim Mega STE eher interessant)
  • Allgemeine Laufwerkszugriffe
  • SuperUserMode wechselt. Das passiert bei Systemzugriffen (Interesssant - Endlich kann man s e h e n, wenn der ST in diesem Modus arbeitet))
(Wieso haut mein System jetzt automatisch unter "sehen" einen LINK?)

« Letzte Änderung: Fr 24.08.2012, 12:04:35 von Burkhard Mankel »

Burkhard Mankel

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #110 am: Fr 24.08.2012, 12:57:22 »
# ToPeG!

Erst einmal auch von mir:
Vielen Dank für die aufwendige Mühe die Du für unsd machst!

Ich wollte noch etwas zu Deinem Beitrag in Post #100 fragen.
Bei dem 7402 hast Du nur einen Gatter in Verwendung und die 3 anderen - ich nehme an, damit sie nicht zu "flattern" oder "schwingen" beginnen - irgendwie an Spannung angeschlossen, dabei zwei hinterheineinander und parallel zum Ersten das Dritte Gatter. Könnte man nicht das Gleiche Ziel erreichen, wenn man alle drei Gatter hintereinander schaltet, zB Vcc nur an Pin 5 und 6 anlegt und 4 mit 8/9 koppelt?

edit: !?!
« Letzte Änderung: Fr 24.08.2012, 14:05:41 von Burkhard Mankel »

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #111 am: Fr 24.08.2012, 13:20:04 »
Bei dem 7402 hast Du nur einen Gatter in Verwendung und die 3 anderen - ich nehme an, damit sie nicht zu "flattern" oder "schwingen" beginnen - irgendwie an Spannung angeschlossen, dabei zwei hinterheineinander und parallel zum Ersten das Dritte Gatter. Könnte man nicht das Gleiche Ziel erreichen, wenn man alle drei Gatter hintereinander schaltet, zB Vcc nur an Pin 5 und 6 anlegt und 4 mit 8/9 koppelt?
Ja es geht darum das offene Eingänge instabil sind und leicht angeregt werden können. Dass kann zu sehr hohen Frequenzen führen, die auf die anderen Logikeinheiten übersprechen können. Zudem kann der IC heiß werden und viel Strom ziehen.
Das ist zwar recht unwahrscheinlich, aber warum das Risiko eingehen.

Schau dir das Pinout des 7402 an. Dann siehst du das alle Eingänge nach Masse zeigen. (Genau anders herum als bei den andern 74XX, wo die Eingänge nach VCC zeigen.) So ist es am einfachsten die Pins 5,6,7,8,9 zusammen zu löten. Das ich im Schaltplan gegen 5V geschaltet habe war nicht die beste Lösung. :-)

Burkhard Mankel

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #112 am: Fr 24.08.2012, 14:20:17 »
So ist es am einfachsten die Pins 5,6,7,8,9 zusammen zu löten. Das ich im Schaltplan gegen 5V geschaltet habe war nicht die beste Lösung. :-)

Vcc ist also hier nicht, wie angenommen Spannungsführend zu beschalten,  sondern an der Stelle GND anzuschließen. Meine Frage galt aber auch ob man alle 3 Gatter in Reihe ausführen kann - also (mit ASCII-Darstellung) etwa =>-=>-=>- - so daß man 5,,6 und 7 an Masse zusammen schaltet und 4 mit 8 und 9 verbindet und weiter nach Deinem Schaltbild. Oder auch parallel (5,6,7,8,9,11,12 mit Masse zusammenschaltet und 4,10,13 unbeschaltet bleibt)!
« Letzte Änderung: Fr 24.08.2012, 14:23:45 von Burkhard Mankel »

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #113 am: Fr 24.08.2012, 14:27:04 »
Solange die Eingänge einen definierten zustand haben, ist es egal wo und wie du sie verbindest.

Burkhard Mankel

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #114 am: Sa 25.08.2012, 15:16:29 »
Ich interpretiere mal ganz frei: es ist also egal, ob ich die Gatter alle drei in Reihe - also hintereinander - oder parallel - Eingänge an Masse legen - beschalte.

Dann habe ich doch noch eine Frage: Du hast das Gatter um 1,2 und 3 für Deine Schaltung herangeführt. Wäre es eigentlich egal, welches Gatter ich für die Schaltung verwende? also könnte ich auch das Gatter zB um 8,9 und 10 in der Schaltung anwenden?

Hier nun der Hintergrund meiner Fragen: Ich bin elektronischer "Halblaie" - soll heißen: ich kann zwar Schaltungen nachlöten, aber das "Warum das so aufzubauen ist?" ist mir nahezu fremd und eigene Schaltungen etwickeln kann ich erst recht nicht. Ich möchte hier (und das nicht nur für mich) alle "Egalitäten" ausloten!

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #115 am: Sa 25.08.2012, 15:43:04 »
das hast du richtig erkannt. Es ist egal wie du die Eingänge beschaltest. Solange sie Nicht offen sind ist das OK.

Es ist auch egal welche der vier NOR du benutzt. Elektronisch verhalten sie sich absolut identisch. Du kannst den nehmen, der dir ab besten gefällt :)

Noch eine Anmerkung zu den Ausgängen.
(Fast) Niemals Ausgänge miteinander verbinden! Sie müssen immer über eine Logik verknüpft werden.
Die einzige Ausnahme sind OpenCollector Ausgänge. die kann man verbinden, wenn man weiß was man macht.

Offline ToPeG

  • Benutzer
  • Beiträge: 406
Re: Tastatur mit CapsLock Controlle
« Antwort #116 am: Di 28.08.2012, 05:25:15 »
Ich sitze schon an einer ersten Version des Treibers. Es kann aber noch was dauern bis alles ordentlich funktioniert.

rainers

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #117 am: Mi 29.08.2012, 20:22:16 »
Die Schaltung habe ich aufgebaut (nicht so schick wie ToPeG; habe die Signale direkt vom Tast-Proc abgenommen) und es funkelt wie am Sternenhimmel  ;D ;)

Ich bin begeistert wie ein kleines Kind, welches seine erste Eisenbahn bekommen hat. :)

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Tastatur mit CapsLock Controlle
« Antwort #118 am: Mi 29.08.2012, 20:56:21 »
Das läuft ja wie am Fließband. Also Hard und Software gehen Hand in Hand. Das hört sich so einfach an...

Burkhard Mankel

  • Gast
Re: Tastatur mit CapsLock Controlle
« Antwort #119 am: Fr 31.08.2012, 17:07:38 »
Ich habe gestern mal den 1040 zerlegl. Wenn  die Tastatur in ihren Führungen, sitzt ist zwischen dem nach unten hängenden gesockelten Tastaturprozessor und dem Abschirmblech des Mainbords kaum noch Luft. Ich denke, es ist dauerhaft keine so gute Lösung mit einer Zwischenplatine - auch wenn diese praktisch kopfüber eingesteckt wird - wie die Testplatine hier. Auch in einer Tastatur zum Mega ST scheint der Platzbedarf als Zwischensockel recht beengt! Die Leiterbahnen werden aber vom 6301 von so gut wie jedem Pin über diverse Widerstände oder Dioden geleitet. Wenn man von der Bestückungsseite am entsprechenden Beinchen den Kontakt abgreifen könnte ...