Hallo zusammen
Ich wollte mal etwas machen mit LED multiplexen, low power und cap
touch. An der Schule habe ich einen Prototypen-Print gelasert, dieser
funktionierte ohne Probleme. Nun habe ich das Layout nochmals
überarbeitet und verkleinert, um es bei OSH Park in Produktion zu geben
(Siehe Bilder oben). Die finale Schaltung funktioniert soweit. Ich habe
aber folgendes Problem: Am Debugger wird das betätigte Touchpad erkannt,
nicht jedoch ab Batterie.
Die Abfrage des Touchpads sieht folgendermassen aus:
1 | int touchPressed() {
|
2 | static unsigned int oldState, start, end, difference;
|
3 | oldState = P1IN & TOUCH_MEASURE; // Abspeichern des alten Ladezustands
|
4 | start = TA0R;
|
5 | P1OUT ^= TOUCH_CHARGE; // Umladen starten
|
6 | while((P1IN&TOUCH_MEASURE) == oldState){} // Warte bis Kondi bei V_IH/V_IL
|
7 | end = TA0R; // Messende
|
8 | difference = end-start;
|
9 | if(start > end) // OF abfangen
|
10 | difference=65536-start+end; // z.B. 65'536 - 65'500 + 50 = 86 Steps
|
11 | return (difference > 42);
|
12 | }
|
Speise ich mit dem Launchpad, zähle ich bei nicht gedrücktem Pad auf 40,
bei gedrücktem auf deutlich mehr (siehe Bilder 4 und 5). Die Betätigung
mit einem Finger reicht völlig aus. Wenn das ganze ab Batterie läuft,
muss ich jedoch den Print mit zwei Fingern ins Sandwich nehmen oder gar
R2 berühren, damit mein Finger erkannt wird.
Mir ist bewusst, dass eine Knopfzelle nicht für meine Belastung mit LEDs
ausgelegt ist. Jedoch spricht touchPressed() auch nicht an, wenn ich aus
dem LPM3 (I < 3 uA) heraus den DCO kurz auf 8 MHz aufstarte, und sie
(die Funktion) aufrufe. Somit fällt "Überbelastund der Knopfzelle" schon
mal weg.
Hat jemand eine Idee, woran das liegen könnte?