?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 32

?prevdifflink? - Blame - ?getfile?


/*****************************************************************************
 * FileName:            mTouchCap_CtmuAPI.h
 * Dependencies:
 * Processor:           PIC18, PIC24
 * Compiler:                    C18, C30
 * Linker:              MPLINK,MPLAB LINK30
 * Company:             Microchip Technology Incorporated
 *
 * Software License Agreement
 *
 * Copyright © 2009 Microchip Technology Inc.  
 * Microchip licenses this software to you solely for use with Microchip products, according to the terms of the  
 * accompanying click-wrap software license.  Microchip and its licensors retain all right, title and interest in 
 * and to the software.  All rights reserved. This software and any accompanying information is for suggestion only.  
 * It shall not be deemed to modify Microchip’s standard warranty for its products.  It is your responsibility to ensure 
 * that this software meets your requirements.

 * SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, 
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT 
 * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP OR ITS LICENSORS BE LIABLE 
 * FOR ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT LIMITED TO INCIDENTAL, 
 * SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, 
 * COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, OR ANY CLAIMS BY THIRD PARTIES 
 * (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.  
 * The aggregate and cumulative liability of Microchip and its licensors for damages related to the use of the software 
 * will in no event exceed $1000 or the amount you paid Microchip for the software, whichever is greater.

 * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS AND 
 * THE TERMS OF THE ACCOMPANYING CLICK-WRAP SOFTWARE LICENSE.
 * 
 *
 * Author                               Date                                    Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Naveen. M                                14 Apr 2009                         Version 1.0 Initial Draft
 * Sasha. M     / Naveen. M                     4 May 2009                      Version 1.0 Initial Draft
 * Sasha. M     / Naveen. M                     11 Nov 2009                     Version 1.0 Initial Draft
 * Sasha. M     / Nithin.                       10 April 2010                   Version 1.20 Release
 *****************************************************************************/
#ifndef _mTOUCH_CAP_CTMU_API_H
#define _mTOUCH_CAP_CTMU_API_H
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~        Includes        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
#include        "Config.h"      
#include        "GenericTypeDefs.h"
#include        "HardwareProfile.h" 

#ifdef __PIC24F__
                #include "mTouchCap_PIC24_CTMU_Physical.h"
#else
                #include "mTouchCap_PIC18_CTMU_Physical.h"
#endif

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~        Enums      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

enum
{
        NO,
        YES
};
enum
{
        NOT_AN_ACTIVE_CHANNEL = -1,
        KEY_NOT_PRESSED,
        KEY_PRESSED     
};

enum
{
        CHANNEL_NOT_DETECT =0,
        CHANNEL_DETECT  
};

enum
{
        FAILED = -1,
        PASSED = 1      
};

enum
{
        NEGATIVE_EDGE_POL=0,
        POSITIVE_EDGE_POL
};

enum
{
        CURRENT_SRC_DISABLED=0,
        CURRENT_RANGE_BASE_CURRENT,
        CURRENT_RANGE_10XBASE_CURRENT,
        CURRENT_RANGE_100XBASE_CURRENT
};

enum
{
        TRIGGER_SOURCE_TIMER1=0,
        TRIGGER_SOURCE_OC,
        TRIGGER_SOURCE_EXTERNAL2,
        TRIGGER_SOURCE_EXTERNAL1
};


enum
{
        OUTPUT=0,
        INPUT
};

enum
{
        LOW=0,
        HIGH
};

enum
{
        DISABLE=0,
        ENABLE
};

enum
{
        RELEASE=0,
        PRESS
};

enum 
{
        CHANNEL_AN0 ,
        CHANNEL_AN1 ,
        CHANNEL_AN2 ,
        CHANNEL_AN3 ,
        CHANNEL_AN4 ,
        CHANNEL_AN5 ,
        CHANNEL_AN6 ,
        CHANNEL_AN7 ,
        CHANNEL_AN8 ,
        CHANNEL_AN9 ,
        CHANNEL_AN10 ,
        CHANNEL_AN11 ,
        CHANNEL_AN12 
        #if defined(__PIC24F__) //NC3
        ,CHANNEL_AN13 ,         // for PIC24. Not available in PIC18
        CHANNEL_AN14 ,          // for PIC24. Not available in PIC18
        CHANNEL_AN15            // for PIC24. Not available in PIC18
    #if defined(__PIC24FJ_DAXXX__)      
        ,CHANNEL_AN16 ,         // for DA210
         CHANNEL_AN17 ,         // for DA210
         CHANNEL_AN18 ,         // for DA210
         CHANNEL_AN19 ,         // for DA210
         CHANNEL_AN20 ,         // for DA210
         CHANNEL_AN21 ,         // for DA210
         CHANNEL_AN22 ,         // for DA210
         CHANNEL_AN23           // for DA210
        #endif 
        #endif 
        
};


/* chFilterType[ChannelNum] 
        Filter type methods. If the order is changed here, change the condition in the function "mTouchCapPhy_AverageData"

        FilterType - Filter type selection
                     *  0 - Slow moving average 1/20
                     *  1 - Gated average (as soon as the press stop averaging)
                     *  2 - Fast average (average every sample)   
 */

enum
{
        FILTER_METHOD_SLOWAVERAGE=0,
        FILTER_METHOD_GATEDAVERAGE,
        FILTER_METHOD_FASTAVERAGE
};



/*  
                - The decoding method used
                     *  0 - most pressed
                     *  1 - multiple presses detected at the same time
                     *  2 - press-and-release asserts the press
                     *  3 - press it self assert the press
                        *       4 - key press freezes the key board, until it is released

Filter type methods. If the order is changed here, change the condition in the function "mTouchCapPhy_AverageData" 
*/
enum
{
        DECODE_METHOD_MOST_PRESSED,             /* Future exapansion pending */
        DECODE_METHOD_MULTIPLE_PRESS,           /* Future exapansion pending */
        DECODE_METHOD_PRESS_AND_RELEASE,        /* Future exapansion pending */
        DECODE_METHOD_PRESS_ASSERT                      /* Implemented */
//      DECODE_METHOD_KEY_PRESS_FREEZ           /* Future exapansion pending */
};

/* Return values of the API "mTouchCapAPI_SetUpChannel" */
enum
{
        SETUP_SUCCESS,          /* The setup process is successfull */
        SETUP_ERROR             /* There is some kind of error in Setup */
};
          
enum
{
        TWO_CHANNEL_SLIDER = 2,         // A two channel Slider
        FOUR_CHANNEL_SLIDER =4          // A four channel Slider
};
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~        Constants / Macros ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

#define AUTO_ADJUST_STEP_SIZE                   3       //Fix the appropriate value


#define CURRENT_SOURCE_TRIM_BITS_MAX_POSITIVE   0x1F
#define CURRENT_SOURCE_TRIM_BITS_MIN_POSITIVE   0x01
#define CURRENT_SOURCE_TRIM_BITS_NOMINAL        0x00
#define CURRENT_SOURCE_TRIM_BITS_MIN_NEGATIVE   0x3F
#define CURRENT_SOURCE_TRIM_BITS_MAX_NEGATIVE   0x21

#define CURRENT_SOURCE_TRIM_BITS_POSITIVE_RANGE_MASK    0x3F
#define CURRENT_SOURCE_TRIM_BITS_NEGATIVE_RANGE_MASK    0x1F


#define         ADC_UNTOUCHED_VALUE_10_BIT      0x3FF   //Untouched value for a 12-bit ADC


#define MATRIX_SINGLE_KEY_CH  2         // 2 channels are multiplexed to form a single Matrix key
#define FOUR_CH_SLIDER            4             // 4 channels are used in a 4 channel slider
#define TWO_CH_SLIDER             2             // 2 channels are used in a 2 channel slider

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~        Variables       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
// Structure which stores the members associated with the Direct Key


typedef struct{
        
                        BYTE Channel_Num;                              // Channel Used by the Directkey
                                WORD TripValue;                                 // Trip value for each channel
                                WORD hystValue;                                                  // Hystersis value 
                        BYTE FilterType;                          //  Stores Filter for each channel
                        BYTE DecodeMethod;                         //  Decode Method for each Channel
        
}DirectKey;

// Structure which stores the members associated with the Matrix key.

typedef struct{
        
                        BYTE Channel_Num[MATRIX_SINGLE_KEY_CH];               // Channel Used by the Matrixkey
                                WORD TripValue;                         // Trip value for each key( includes 2 channels)
                                WORD hystValue;                                         // Hystersis value for each key( includes 2 channels)
                        BYTE FilterType;                //  Stores Filter for each key( includes 2 channels)
                        BYTE DecodeMethod;              //  Decode Method for each key( includes 2 channels)
        
}MatrixKey;

// Structure which stores the members associated with the 2 channel sliders.
typedef struct{
        
                        BYTE Channel_Num[TWO_CH_SLIDER];               // Channel sUsed by the Sliders
                                WORD TripValue;                         // Trip value for each key( includes 2 channels)
                                WORD hystValue;                                         // Hystersis value for each key( includes 2 channels)
                        BYTE FilterType;                //  Stores Filter for each key( includes 2 channels)
                        BYTE DecodeMethod;              //  Decode Method for each key( includes 2 channels)
        
}Slider2Ch;

// Structure which stores the members associated with the 4 channel sliders.

typedef struct{
        
                        BYTE Channel_Num[FOUR_CH_SLIDER];               // Channel sUsed by the Sliders
                                WORD TripValue;                         // Trip value for each key( includes 2 channels)
                                WORD hystValue;                                         // Hystersis value for each key( includes 2 channels)
                        BYTE FilterType;                //  Stores Filter for each key( includes 2 channels)
                        BYTE DecodeMethod;              //  Decode Method for each key( includes 2 channels)
        
}Slider4Ch;


extern WORD ScanChannels[MAX_ADC_CHANNELS]; 
extern BYTE ScanChannelIndex;  // store the index of the channels that has to be scanned


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* ~~~~~~~~~~~~~~~~~~~~~        Function Prototypes  ~~~~~~~~~~~~~~~~~~~~~~~~~~         */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

BYTE mTouchCapAPI_SetUpChannel (WORD ChannelNum, BYTE TripThreshold, BYTE DecodeMethod, BYTE FilterType);
void mTouchCapAPI_SetUpCTMU_Default(WORD ChannelNum);
void mTouchCapAPI_SetUpCSM_Default(WORD ChannelNum);
WORD mTouchCapAPI_CTMU_GetChannelReading (WORD ChannelNum);
CHAR mTouchCapAPI_AutoAdjustChannel (WORD ChannelNum, WORD AdcValueToAchieve);
void mTouchCapAPI_CTMU_SetupCurrentSource (BYTE CurrentSourceRange, BYTE TrimValue);
void mTouchCapAPI_CSM_SetCurrentSource (BYTE CurrentSourceRange);
WORD mTouchCapAPI_ScanChannelIterative (WORD ChannelNum, BYTE SampleCount);
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
BYTE mTouchCapAPI_SetUpChannelDirectKey(DirectKey *Button,BYTE Channel_number, WORD Trip_Value, WORD Decode_Method, WORD Filter_Method);
BYTE mTouchCapAPI_GetStatusDirectButton (DirectKey *Button);
BYTE mTouchCapAPI_SetUpChannelMatrixKey(MatrixKey *Button,BYTE Row_Channel_Number,BYTE Col_Channel_number, WORD Trip_Value, WORD Decode_Method, WORD Filter_Method);
BYTE mTouchCapAPI_GetStatusMatrixButton (MatrixKey *Button);
BYTE mTouchCapAPI_SetUpChannelSlider2Ch(Slider2Ch *Slider, BYTE Slider_Channel1_Number,BYTE Slider_Channel2_Number, WORD Trip_Value, BYTE Decode_Method, BYTE Filter_Method);
SHORT mTouchCapAPI_GetStatusSlider2Ch (Slider2Ch* Slider);
BYTE mTouchCapAPI_SetUpChannelSlider4Ch(Slider4Ch *Slider, BYTE Slider_Channel1_Number,BYTE Slider_Channel2_Number, BYTE Slider_Channel3_Number,BYTE Slider_Channel4_Number,WORD Trip_Value, BYTE Decode_Method, BYTE Filter_Method);
SHORT mTouchCapAPI_GetStatusSlider4Ch (Slider4Ch* Slider);
BYTE mTouchCapAPI_getChannelTouchStatus(WORD ChIndex, BYTE Decode_Method);
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
void LoadChannelNumber (BYTE Channel_Number_Passed);
void mTouchCap_Init(void);
void SetChannelBit(WORD,BYTE);
void InitAvgDelay(void);
 #ifdef         USE_STATIC_TRIP_VALUE
 void mTouchCap_UpdateStaticTripValue(void);
#endif

#ifdef USE_SLIDER_2CHNL
extern WORD mTouchCapApp_TwoChannelSliderLogic(Slider2Ch *Slider);
#endif

#ifdef USE_SLIDER_4CHNL
extern WORD mTouchCapApp_FourChannelSliderLogic(Slider4Ch *Slider);
#endif

#endif  // _mTOUCH_CAP_CTMU_API_H


{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3