Forum: Mikrocontroller und Digitale Elektronik AVR PS/2 Bits verwerten ?


von Müller Mark (Gast)


Lesenswert?

Guten tag,
ich versuche gerade eine PS/2 Tastatur an meinem Atmega644-PA-PU zum 
laufen zu bringen. Mein Problem ist wie ich aus den Bytes den Scanncode 
heraus finden kann ? Zum Beispiel für a = 1C

Hier mein bisheriger Code:
1
/*
2
 * keyboard.c
3
 *
4
 * Created: 23.07.2013 14:47:48
5
 *  Author: repac3r
6
 */ 
7
8
9
#include <avr/io.h>
10
#include <avr/interrupt.h>
11
12
uint8_t bCounter;
13
uint8_t bStatus;  //1->Start, 2->Data, 3->Pairty, 4->Stop
14
char kbd_data[8];
15
16
ISR(PCINT0_vect)
17
{    
18
  if(bStatus == 0)
19
  {
20
    if(PINC &(1<<PC4))
21
    {
22
      bStatus = 1;  //Startbit
23
    }
24
  }
25
  else if(bStatus == 1 || bStatus == 2)
26
  {
27
    if(bCounter <= 7)
28
    {
29
      if((PINC &(1<<PC2)))
30
      {
31
        kbd_data[bCounter] = 1;
32
        bCounter++;
33
      }
34
      else
35
      {
36
        kbd_data[bCounter] = 0;
37
        bCounter++;
38
      }
39
      
40
    }
41
    else
42
    {
43
      bStatus = 3;
44
    }
45
  }
46
  else if(bStatus == 3)
47
  {
48
    //Pairty witd nicht benutzt
49
    bStatus == 4;
50
  }
51
  else if(bStatus == 4)
52
  {
53
    bStatus = 0;
54
    bCounter = 0;
55
  }
56
}
57
58
int main(void)
59
{
60
  bStatus = 0;
61
  bCounter = 0;
62
  
63
  sei();  //Interrupts aktivieren
64
  
65
  PCICR |= (1<<PCIE0);  //Pin Change Interrupt 0 aktivieren
66
  PCMSK0 |= (1<<PCINT0);  //Interrupt auf PCINT0
67
  
68
  DDRA &= ~((1<<PA0) | (1<<PA1));  //Ausgänge definieren (externe 4,7k Pullups aktiv)
69
    while(1)
70
    {
71
        //TODO:: Please write your application code 
72
    }
73
}

von Müller Mark (Gast)


Lesenswert?

Ups bei PC4 und PC2 sollte eigentlich PA0 und PA1 stehen.

An PA0 ist Clock und an PA1 Data

von spess53 (Gast)


Lesenswert?

Hi

Da gab es mal eine AppNote von ATMEL (allerdings für AT-Keyboards). Such 
mal nach AVR313.

MfG Spess

von Müller Mark (Gast)


Lesenswert?

Würde der Code so gehen ? Kann es leider nicht testen, warte aber schon 
auf meine PS/2 Tastatur :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.