Implementacja obsługi klawiatur pojemnościowych w LPC17xx firmy NXP

W następnym etapie programu wykonywana jest kalibracja (funkcja calibrateAllChannels()). Polega ona na oszacowaniu przybliżonej wartości napięcia w każdym z aktywnych kanałów przetwornika A/C w stanie nienaciśnięcia przycisku. Odczyt każdego kanału wykonywany jest 200 razy, po czym obliczana jest wartość średnia pomiaru (listing 3, listing 4).

 

Listing 3. Wykonywana w pętli kalibracja aktywnych kanałów przetwornika A/C

 

Listing 4. Proces kalibracji pojedynczego kanału przetwornika A/C

Po wykonaniu powyższej konfiguracji mikrokontroler rozpoczyna etap pracy właściwej. Polega on na przejściu układu w tryb uśpienia, z którego cyklicznie jest budzony (co 10 ms) pod wpływem przerwania od licznika systemowego Systick (listing 5).

 

Listing 5.

W momencie wybudzenia mikrokontrolera z trybu uśpienia wywoływana jest funkcja od przerwania – SysTick_Handler() (listing 6).

 

Listing 6.

Umieszczona tam funkcja processChannels() odczytuje wartość napięcia z wyprowadzeń podłączonych do obwodów RC przycisków pojemnościowych. Odczytane wartości zapisywane są do tabeli reading[] (listing 7).

 

Listing 7.

Do pobrania

O autorze