This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/MSP430G2553: Trying to find the time between max pulses so I can caluculate heart beats per minute

Part Number: MSP430G2553

Tool/software: Code Composer Studio

This code successfully gets 10 pulse readings from the pulse sensor, but I'm trying to write code that will find the time between the max/peak pulses so I can calculate heart beats per minute. Can anyone help me write 
this code, because I'm really struggling. The pulse sensor gives out an analog value of about 500 when nobody is touching the sensor, but when somebody is touching the sensor, a peak value is about 700 - which indicates a heart beat.
Can anybody help me write this code?

#include  "msp430g2253.h"
 
// Variables
int adc[50] = {0}; //Sets up an array of 10 integers and zero's the values
int avg_adc = 0;
 
// Function prototypes
void adc_Setup();
void adc_Sam10();
 
void main()
{
      WDTCTL = WDTPW + WDTHOLD;         // Stop WDT
      adc_Setup();                      // Fucntion call for adc_setup
 
      while(1)
      {
          long adctot = 0;
          adc_Sam10();      // Function call for adc_samp
          // Add all the sampled data and divide by 10 to find average
          int i = 0;
          for(i = 0; i <= 49; i++){
              adctot = adctot + adc[i];
          }
          avg_adc = adctot/50;
      }
}
 
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
  __bic_SR_register_on_exit(CPUOFF);        // Clear CPUOFF bit from 0(SR)
}
 
// ADC set-up function
void adc_Setup()
{
    ADC10CTL1 = CONSEQ_2 + INCH_0;                      // Repeat single channel, A0
    ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;   // Sample & Hold Time + ADC10 ON + Interrupt Enable
    ADC10DTC1 = 0x32;                                  // 1000 conversions
    ADC10AE0 |= 0x01;                                   // P1.0 ADC option select
}
 
// ADC sample conversion function
void adc_Sam10()
{
    ADC10CTL0 &= ~ENC;              // Disable Conversion
    while (ADC10CTL1 & BUSY);       // Wait if ADC10 busy
    ADC10SA = (int)adc;             // Transfers data to next array (DTC auto increments address)
    ADC10CTL0 |= ENC + ADC10SC;     // Enable Conversion and conversion start
    __bis_SR_register(CPUOFF + GIE);// Low Power Mode 0, ADC10_ISR
}

**Attention** This is a public forum