Naja, 20 Abfragen sind vielleicht etwas viel, aber der Ansatz ist richtig. Eine weitere Verbesserung kann die "Kallibrierung" der Tasten bringen. In asuro.c, am Ende von PollSwitch(), steht die Formel nach der die gemessene Spannung in den Rückgabewert umgeformt wird. Bei mir funktioniert die letzte Zeile wunderbar:
Code:
//return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5));
//return ((10240000L/(long)i-10000L)*61L+5000L)/10000;
return ((10240000L/(long)i-10000L)*63L+5000L)/10000;
0b000011 ist die binäre Schreibweise von 3. Manche Kompilerversionen können das aber leider nicht übersetzen. Die bitweise Darstellung ist praktisch wenn man, wie hier bei der Tastenabfrage, bestimmte Bits prüfen möchte. Im Rückgabewert von PollSwitch() ist jede Taste einem Bit zugeordnet, Bit0 (mit Wert 1) ist K6, Bit5(32) ist K1. 0b000011 prüft dann auf 3 (1+2=K5+K6), 0b001100 prüft auf 12 (4+8=K3+K4) und 0b110000 auf 48 (16+32=K1+K2). Wenn dein Kompiler also mit 0bxxxxxx nichts anfangen kann, dann ändere die betreffenden Stellen auf die dezimale Darstellung der Werte. Das sollte ja eigentlich nur eine Anzeige für die eingelesenen Tastenwerte sein....
Gruß
mic
Lesezeichen