hier mal der code aus der m32 LIB nur eben mit meinen werten
Code:
// KeyLeiste:
uint8_t getPressedKeyNumberLeiste(void)
{
 uint16_t keysLeiste;
 keysLeiste = readADC(ADC_7);
 if(keysLeiste < 1020) {
  nop();
  nop();
  nop();
  keysLeiste += readADC(ADC_7);
  keysLeiste >>= 1;
 }
 // das ist der Teil der mit 1x5 Tastatur funktioniert
 if(keysLeiste < 50)       // gemessener Wert 0
  return 1;
 if(keysLeiste < 580)      // gemessener Wert 510
  return 2;
 if(keysLeiste < 700)      // gemessener Wert 682
  return 3;
 if(keysLeiste < 790)      // gemessener Wert 767
  return 4;
 if(keysLeiste < 830)      // gemessener Wert 818
  return 5;
 return 0;
// 1x5 Code ENDE
 
 
 
// Das ist der 4x4 Code, der nicht funktioniert
 /*
 
 if(keysLeiste < 210)       // gemessener Wert 208
  return 1;
 if(keysLeiste < 223)      // gemessener Wert 221
  return 2;
 if(keysLeiste < 235)      // gemessener Wert 233
  return 3;
 if(keysLeiste < 248)      // gemessener Wert 246
  return 4;
 if(keysLeiste < 262)      // gemessener Wert 260
  return 5;
 
 
 if(keysLeiste < 283)      // gemessener Wert 281
  return 6;
 if(keysLeiste < 304)      // gemessener Wert 302
  return 7;
 if(keysLeiste < 325)      // gemessener Wert 323
  return 8;
 if(keysLeiste < 361)      // gemessener Wert 359
  return 9;
 if(keysLeiste < 402)      // gemessener Wert 399
  return 10;
 if(keysLeiste < 444)       // gemessener Wert 442
  return 11;
 if(keysLeiste < 492)      // gemessener Wert 490
  return 12;
 if(keysLeiste < 550)      // gemessener Wert 548
  return 13;
 if(keysLeiste < 647)      // gemessener Wert 645
  return 14;
 if(keysLeiste < 768)      // gemessener Wert 766
  return 15;
 if(keysLeiste < 922)      // gemessener Wert 920
  return 16;
  */
 return 0;
 
}
//-----------------------------------------------------------------------
uint8_t checkPressedKeyEventLeiste(void)
{
 static uint8_t pressed_keyLeiste = 0;
 if(pressed_keyLeiste) {
  if(!getPressedKeyNumberLeiste()) 
   pressed_keyLeiste = 0;
 }
 else {
  pressed_keyLeiste = getPressedKeyNumberLeiste();
  if(pressed_keyLeiste)
   return pressed_keyLeiste;
 }
 return 0;
}
//-----------------------------------------------------------------------
uint8_t checkReleasedKeyEventLeiste(void)
{
 static uint8_t released_keyLeiste= 0;
 if(released_keyLeiste) {
  if(!getPressedKeyNumberLeiste()) {
   uint8_t tmp = released_keyLeiste;
   released_keyLeiste = 0;
   return tmp;
  }
 }
 else
  released_keyLeiste = getPressedKeyNumberLeiste();
 return 0;
}
hier die Programmfunktion, wo ich auf die Tasten reagiere

Code:
 
void tasterzwei(void)
{
  uint8_t keyLeiste = getPressedKeyNumberLeiste(); 
 
  if(keyLeiste) // If a key is pressed... (key != 0)
 {
 
  while(getPressedKeyNumberLeiste());
  switch(keyLeiste)
  {
   case 1: 
      setLEDs(0b0001);
   clearLCD(); 
   showScreenLCD("Leiste", "Taste 1","",""); 
 
   break;
   case 2: 
    setLEDs(0b0010);
   clearLCD(); 
   showScreenLCD("Leiste", "Taste 2","",""); 
 
   break;
   case 3: 
    setLEDs(0b0100); 
   clearLCD(); 
   showScreenLCD("Leiste", "Taste 3","",""); 
 
 
u.s.w
Liest du also die Keys deiner 4x4 und der 1x5 parallel ein?
Nein, entweder 4x4 oder 1x5

statt den ADC0 2 mal zu belegen?
zum lesen benutze ich den ADC 7 und nur dafür, sonst wird der Port nicht benutzt

Du sprachst von Wert (ADC) 920 .. das klingt mir immer noch als sehr hoch... bist du sicher das nicht eine der Tasten klebt?
Erzeugen alle Keys 920 ?
Und wie bist du an die Werte um 230 gekommen wenn die Tastatur nun 920 produziert?
also ich habe zuerst alle Tasten eingelesen. So kam ich auf 16 Werte so auch auf 233 und jeweils immer 2 dazu auf 235. Diese Werte habe ich dann in die LIB eingetragen. Das eine Taste klebt kann ich ausschliessen (gemessen)
Nein es ist nur eine Taste gewesen und ist jetzt auch nicht mehr nachvollziehbar, da die Tastatur mit der Abfrage garnicht mehr reagiert. Wenn ich als Test die ADC Werte abfrage bekomme ich genau wieder die Werte die ich zuerst bekommen habe.

mfG TrainMen