capsense.c File Reference

Capacitive sense driver. More...

#include "em_device.h"
#include "capsense.h"
#include <stdint.h>
#include <stdbool.h>
#include "em_emu.h"
#include "em_acmp.h"
#include "capsenseconfig.h"
Include dependency graph for capsense.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void TIMER0_IRQHandler (void)
 TIMER0 interrupt handler.
uint32_t CAPSENSE_getVal (uint8_t channel)
 Get the current channelValue for a channel.
uint8_t CAPSENSE_getSegmentChannel (uint8_t capSegment)
 Get the channelValue for a sensor segment.
uint8_t CAPSENSE_getButtonChannel (void)
 Get the channelValue for a sensor segment.
uint32_t CAPSENSE_getNormalizedVal (uint8_t channel)
 Get the current normalized channelValue for a channel.
bool CAPSENSE_getPressed (uint8_t channel)
 Get the state of the Gecko Button.
int32_t CAPSENSE_getSliderPosition (void)
 Get the position of the slider.
void CAPSENSE_Sense (void)
 This function iterates through all the capsensors and reads and initiates a reading.
void CAPSENSE_Init (void)
 Initializes the capacative sense system.

Variables

static volatile uint8_t currentChannel
 The current channel we are sensing.
static const bool channelsInUse [ACMP_CHANNELS] = CAPSENSE_CH_IN_USE
 A bit vector which represents the channels to iterate through.
static volatile uint32_t channelValues [ACMP_CHANNELS] = { 0, 0, 0, 0, 0, 0, 0, 0 }
 This vector stores the latest read values from the ACMP.
static volatile uint32_t channelMaxValues [ACMP_CHANNELS] = { 1, 1, 1, 1, 1, 1, 1, 1 }
 This stores the maximum values seen by a channel.

Detailed Description

Capacitive sense driver.

Author:
Energy Micro AS
Version:
3.20.0

License

(C) Copyright 2012 Energy Micro AS, http://www.energymicro.com

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. 4. The source and compiled code may only be used on Energy Micro "EFM32" microcontrollers and "EFR4" radios.

DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no obligation to support this Software. Energy Micro AS is providing the Software "AS IS", with no express or implied warranties of any kind, including, but not limited to, any implied warranties of merchantability or fitness for any particular purpose or warranties against infringement of any proprietary rights of a third party.

Energy Micro AS will not be liable for any consequential, incidental, or special damages, or any other relief, or for any claim by any third party, arising from your use of this Software.

Definition in file capsense.c.


Function Documentation

void TIMER0_IRQHandler ( void   ) 

TIMER0 interrupt handler.

When TIMER0 expires the number of pulses on TIMER1 is inserted into channelValues. If this values is bigger than what is recorded in channelMaxValues, channelMaxValues is updated. Finally, the next ACMP channel is selected.

Definition at line 74 of file capsense.c.

References channelMaxValues, channelValues, and currentChannel.


Variable Documentation

volatile uint32_t channelMaxValues[ACMP_CHANNELS] = { 1, 1, 1, 1, 1, 1, 1, 1 } [static]

This stores the maximum values seen by a channel.

Parameters:
ACMP_CHANNELS Vector of channels.

Definition at line 64 of file capsense.c.

Referenced by CAPSENSE_getNormalizedVal(), CAPSENSE_getPressed(), CAPSENSE_getSliderPosition(), and TIMER0_IRQHandler().

const bool channelsInUse[ACMP_CHANNELS] = CAPSENSE_CH_IN_USE [static]

A bit vector which represents the channels to iterate through.

Parameters:
ACMP_CHANNELS Vector of channels.

Definition at line 52 of file capsense.c.

Referenced by CAPSENSE_Sense().

volatile uint32_t channelValues[ACMP_CHANNELS] = { 0, 0, 0, 0, 0, 0, 0, 0 } [static]

This vector stores the latest read values from the ACMP.

Parameters:
ACMP_CHANNELS Vector of channels.

Definition at line 58 of file capsense.c.

Referenced by CAPSENSE_getNormalizedVal(), CAPSENSE_getPressed(), CAPSENSE_getSliderPosition(), CAPSENSE_getVal(), and TIMER0_IRQHandler().

volatile uint8_t currentChannel [static]

The current channel we are sensing.

Definition at line 46 of file capsense.c.

Referenced by CAPSENSE_Sense(), and TIMER0_IRQHandler().