/******************************************************************************* * * structure.c * * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ******************************************************************************/ //****************************************************************************** // structure.c // // 4 elements configured as a wheel. // 1 element configured as a button. [Center Button] // 1 element configured as a proximity sensor. // This file contains the structure names and the variable assingments. // // Revision 1.00 Baseline // Developed with IAR 5.10.4 [Kickstart] (5.10.4.30168) // // 09/24/10 Rev1.00 Pre-Alpha Version. Added "max_cnts" slider variable in // CT_Handler object. // // 09/29/10 0.02 Update naming convention for elements and sensors. // // 10/11/10 0.03 Update // //****************************************************************************** #include "structure.h" //PinOsc Volume down P2.2 const struct Element volume_down = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT2, // measured for a 1Mhz SMCLK .maxResponse = 121+655, // actual measure was 980 .threshold = 121 }; //PinOsc forward right P2.3 const struct Element right = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT3, // 1Mhz SMCLK .maxResponse = 113+655, .threshold = 113 }; //PinOsc Volume up, P2.4 const struct Element volume_up = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT4, // 1Mhz SMCLK .maxResponse = 118+655, .threshold = 118 }; //PinOsc reverse left P2.1 const struct Element left = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT1, // 1Mhz SMCLK .maxResponse = 111+655, .threshold = 111 }; //PinOsc Wheel: middle button P2.5 const struct Element middle_element = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT5, // When using an abstracted function to measure the element // the 100*(maxResponse - threshold) < 0xFFFF // ie maxResponse - threshold < 655 .maxResponse = 350+655, .threshold = 350 }; //PinOsc proximity: P2.0 const struct Element proximity_element = { .inputPxselRegister = (uint8_t *)&P2SEL, .inputPxsel2Register = (uint8_t *)&P2SEL2, .inputBits = BIT0, .maxResponse = 200, .threshold = 130 }; //*** CAP TOUCH HANDLER *******************************************************/ // This defines the grouping of sensors, the method to measure change in // capacitance, and the function of the group const struct Sensor wheel = { //.halDefinition = fRO_PINOSC_TA0_SW, .halDefinition = RO_PINOSC_TA0_WDTp, .numElements = 4, .points = 64, .sensorThreshold = 75, .baseOffset = 0, // Pointer to elements .arrayPtr[0] = &volume_up, // point to first element .arrayPtr[1] = &right, .arrayPtr[2] = &volume_down, .arrayPtr[3] = &left, // Timer Information //.measGateSource= GATE_WDT_SMCLK, // 0->SMCLK, 1-> ACLK //.accumulationCycles= WDTp_GATE_32768 //32768 .accumulationCycles= WDTp_GATE_8192 // 8192 //.accumulationCycles= WDTp_GATE_512 //512 //.accumulationCycles= WDTp_GATE_64 //64 //.accumulationCycles = 32 }; const struct Sensor middle_button = { .halDefinition = RO_PINOSC_TA0_WDTp, .numElements = 1, .baseOffset = 4, // Pointer to elements .arrayPtr[0] = &middle_element, // point to first element // Timer Information .measGateSource= GATE_WDT_SMCLK, // 0->SMCLK, 1-> ACLK //.accumulationCycles= WDTp_GATE_32768 //32768 .accumulationCycles= WDTp_GATE_8192 // 8192 //.accumulationCycles= WDTp_GATE_512 //512 //.accumulationCycles= WDTp_GATE_64 //64 }; const struct Sensor proximity_sensor = { .halDefinition = RO_PINOSC_TA0_WDTp, .numElements = 1, .baseOffset = 5, // Pointer to elements .arrayPtr[0] = &proximity_element, // point to first element // Timer Information .measGateSource= GATE_WDT_SMCLK, // 0->SMCLK, 1-> ACLK //.accumulationCycles= WDTp_GATE_32768 //32768 .accumulationCycles= WDTp_GATE_8192 // 8192 //.accumulationCycles= WDTp_GATE_512 //512 //.accumulationCycles= WDTp_GATE_64 //64 };