- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: PS/2 Tastatur an ATMEGA 8

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    12.06.2004
    Beiträge
    43
    Anzeige

    E-Bike
    Hallo Günter ich habe jetzt mal Data und Clock getauscht ich verstehe es nicht jetzt kommt bei fast jeden Tastendruck Test. aber kein Wert.

    Ich werde jetzt mal die Tastatur an einen PC hängen


    Gruss
    Stefan

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    12.06.2004
    Beiträge
    43
    Hallo Günter,
    die Tastatur ist am PC ok

    Aktueller Code

    $regfile = "m16def.dat" 'definieren des verwendeten Chips
    $crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)

    Dim Taste As Word

    On Int0 Isr0
    Config Keyboard = Pind.2 , Data = Pind.6 , Keydata = Keydata
    Enable Int0
    Config Int0 = Falling
    Enable Interrupts

    Print "PS/2 Test"

    Do
    'dein genialer Code
    If Taste > 0 Then Print Chr(taste)
    Loop

    Isr0: 'interrupt routine
    Print "test"
    Taste = Getatkbd()
    Return


    Keydata:
    ' Shift-Taste nicht gedrückt
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
    Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
    Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
    Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
    Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
    Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
    Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

    ' Shift-Taste gedrückt
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
    Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
    Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
    Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
    Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
    Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0



    Gruss
    Stefan

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    12.06.2004
    Beiträge
    43
    Hallo zusammen,
    ich bekomms nicht hin, ich werds jetzt erstmal wieder auf Eis legen.

    Danke erstmal.

    Gruss
    Stefan

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo Stefan,

    so gehts ja nicht!

    also ich werde das Dingens jetzt mal an einem Experimentierboard zusammenstecken und das Programm ausprobieren.
    Dann melde ich mich nochmal.

    Achja etwas ist mir noch eingefallen:

    Hast du eventuell das setzen der Fusebits vergessen?
    Ein fabrikneuer ATMega8 läuft mit dem internen RC-Oszillator mit 1MHz.

    Wenn du dir nicht sicher bist, ändere mal:

    $crystal = 8000000
    in
    $crystal= 1000000

    Günter

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.12.2007
    Ort
    Heidelberg
    Beiträge
    156
    Hallo

    Hat jemand das Problem gelöst ??


    Mfg#

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    25.01.2009
    Ort
    Wiesbaden
    Alter
    42
    Beiträge
    44
    Dem möchte ich mich auch mal anschließen. Ich verwende folgenden Code:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 19200
    
    $hwstack = 40
    $swstack = 16
    $framesize = 32
    
    Config Keyboard = Pind.2 , Data = Pind.6 , Keydata = Keydata
    
    'Dim some used variables
    Dim B As Byte
    
    On Int0 Readkey
    Enable Int0
    Config Int0 = Falling
    
    Enable Interrupts
    
    Do
    
    Loop
    
    
    Readkey:
       B = Getatkbd()
       If B > 0 Then Print B ; " " ; Chr(b)
       Return
    
    End
    'This is the key translation table
    
    Keydata:
    'Kleinbuchstaben
    Data 0 , 179 , 0 , 175 , 173 , 171 , 172 , 0 , 0 , 180 , 178 , 176 , 174 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 4 , 4 , 4 , 121 , 115 , 97 , 119 , 50 , 0
    Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 4 , 4 , 32 , 118 , 102 , 116 , 114 , 53 , 0
    Data 0 , 110 , 98 , 104 , 103 , 122 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
    Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 4 , 4 , 46 , 45 , 108 , 148 , 112 , 225 , 0
    Data 0 , 0 , 132 , 228 , 129 , 92 , 4 , 4 , 4 , 4 , 13 , 4 , 4 , 35 , 0 , 0
    Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
    Data 48 , 44 , 177 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 190 , 0
    
    'Grossbuchstaben
    Data 0 , 189 , 0 , 185 , 183 , 181 , 182 , 0 , 0 , 0 , 188 , 186 , 184 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 89 , 83 , 65 , 87 , 34 , 0
    Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
    Data 0 , 78 , 66 , 72 , 71 , 90 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
    Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 153 , 80 , 63 , 0
    Data 0 , 0 , 142 , 0 , 154 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
    Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
    Data 48 , 44 , 187 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 191 , 0
    Als erstes macht mich stutzig, dass der Interrupt auch permanent ausgeführt wird, wenn keine Taste gedrückt wird. Clock und Data sind aber nicht vertauscht, ich habe es vorher durchgepiepst.

    Dann kriege ich als Ergebnis im MyAvr QuickProg (externer Quarz ist aktiviert) die im Anhang gezeigten Tasten. Innerhalb des roten Kastens habe ich nur die Taste a (97) gedrückt. Innerhalb des blauen Kasten nur die Taste u (85). Beide erscheinen auch mehrfach, wobei u hier als U dargestellt wird.


    Die Tastatur selbst funktioniert unter Windows einwandfrei. Hat da jemand ne Idee? Ärger mich da jetzt schon ein paar Tage mit rum. Der Chip selbst ist was Int0 betrifft auch in Ordnung, da ich inzwischen testweise nen Programm zum Ein- und Auschalten einer LED mit Interrupt erstellt hab.

    Gruß
    Demian
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tastatur_204.jpg  

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress