Other Parts Discussed in Thread: HALCOGEN
Tool/software: Code Composer Studio
I have 3 temperature measurements to make that are presented as frequency inputs to the system. The nominal frequency @ 25degC is 28kHz with a gain of -0.8Hz/degC.
I’d like to be able to measure -30degC to +70degC resulting in an expected frequency range of 28,044Hz to 27,964Hz.
During development, I’m injecting an external 28kHz signal from a function generator into the HET1[4] pin and have used HalCoGen to set this pin to all CAPn registers for test purposes.
Starting with a code example I found posted titled: 1512.NHET PWM generation and Capture using HALCoGen; I modified the example to be compatible with a newer version of HalCoGen and CCS. (I am using CCS Ver 7.2.0.00013, and HalCoGen Ver 4.07.00) My hope is that by utilizing the function capGetSignal() I can easily obtain the period value for the signal. So far, I have not been able to read anything because the function is only returning a value of zero. Something is missing.
A few questions:
What am I doing wrong?
Is NHET a good choice for this measurement or would something like ECAP be more appropriate?
Does anyone have a working code example of making frequency measurements from external signals? There seems to be plenty of examples how to generate PWM signals with the HET.
Attached are the project files for review.
Any help is greatly appreciated.
Thanks,
-Steve
/** @file HL_sys_main.c
* @brief Application main file
* @date 07-July-2017
* @version 04.07.00
*
* This file contains an empty main function,
* which can be used for the application.
*/
/*
* Copyright (C) 2009-2016 Texas Instruments Incorporated - 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.
*
*/
/* USER CODE BEGIN (0) */
/* USER CODE END */
/* Include Files */
#include "HL_sys_common.h"
/* USER CODE BEGIN (1) */
#include "HL_het.h"
/* USER CODE END */
/** @fn void main(void)
* @brief Application main function
* @note This function is empty by default.
*
* This function is called after startup.
* The user can use this function to implement the application.
*/
/* USER CODE BEGIN (2) */
hetSIGNAL_t Duty_Period1,Duty_Period2,Duty_Period3,Duty_Period4 ;
het_config_reg_t het_config;
/* USER CODE END */
int main(void)
{
/* USER CODE BEGIN (3) */
int i;
for(i=0;i<0x10000;i++); // Simple Delay
capGetSignal(hetRAM1,cap1,&Duty_Period1);
/* Initialize HET driver */
hetInit();
het1GetConfigValue(&het_config,CurrentValue);
for(i=0;i<0x20000;i++); // Simple Delay
capGetSignal(hetRAM1,cap1,&Duty_Period2);
for(i=0;i<0x30000;i++); // Simple Delay
capGetSignal(hetRAM1,cap1,&Duty_Period3);
for(i=0;i<0x40000;i++); // Simple Delay
capGetSignal(hetRAM1,cap1,&Duty_Period4);
/* Run forever */
while(1);
/* USER CODE END */
return 0;
}
/* USER CODE BEGIN (4) */
/* USER CODE END */