Exemplo n.º 1
0
Arquivo: main.c Projeto: Alvw/Ads8Hc05
__interrupt void TimerA_ISR(void)
{ 
  TACTL &= ~TAIFG;
  if(rfResetCntr == 0x01){
    P3OUT |= BIT7;//BT reset pin hi
    rfResetCntr = 0;
  }
  if(isRecording){
    if(resetTimeout){
      pingCntr++;
      if(pingCntr > resetTimeout){//no signal from host for ~ resetTimeout * 4 seconds
        P3OUT &= ~BIT7; //BT reset pin lo
        if (rfResetCntr == 0)rfResetCntr = 1;
        pingCntr = 0;
      }
    }
  }else{//if not recording
    long new_data[4];
    ADC10_Read_Data(&new_data[0]);
    addBatteryData(new_data[3]);
    ADC10_Measure();
  }
  if(!(BIT5 & P2IN)){// if power button pressed
      btnCntr++;
  }else{
      btnCntr = 0;
  }
  if(BIT0 & P1IN){// if rf connected
      rfConStat = 1;
  }else{
      rfConStat = 0;
  }
  if(!(BIT4 & P2IN)){// if charge plug connected
    if(shutDownCntr == 0){
      shutDownCntr = 1;
      rf_send(chargeShutDownMessage,5);
    }
  }
  if(btnCntr >= (4)){ //1 сек задержка перед выключением
        led(1);
        P1OUT &= ~BIT6; //power hold pin
        while(1){} //ждем отпускания кнопки
  }
  
  if(!lowBatteryMessageAlreadySent){    
      if(sumBatteryVoltage < BATT_LOW_TH){
        lowBatteryMessageAlreadySent = 1;
        rf_send(lowBatteryMessage,7);
        if (shutDownCntr == 0) shutDownCntr = 1;
      }
  }
  if(shutDownCntr){
    shutDownCntr++;
    if(shutDownCntr > 4){//wait 1 second before shut down
      P1OUT &= ~BIT6; //power hold pin
    }
  }
  if(powerUpCntr){
    powerUpCntr++;
    if(powerUpCntr >= 2400){//забыли выключить питание (не стартует запись в теечение ~10 минут)
      P1OUT &= ~BIT6; //отключаем питание
    }
    if(powerUpCntr%2){
      led(1);
    }else{
      led(0);
    }
  }
  if(rf_delete_unfinished_incoming_messages()){
    rf_send(unfinishedIncomingMsgError,7);
  }
  if(rf_tx_fail_flag){//debug information maybe delete
    rf_tx_fail_flag = 0;
    rf_send(txFailError,7);
  }
}
Exemplo n.º 2
0
__interrupt void TimerA_ISR(void)
{
  TACTL &= ~TAIFG;

  if (rfResetCntr == 0x01)
  {
    P3OUT |= BIT7;  // BT reset pin hi
    rfResetCntr = 0;
  }

  if (isRecording && rfConStat)
  {
    if (resetTimeout)
    {
      pingCntr++;
      if (pingCntr > resetTimeout)
      { // no signal from host for ~ resetTimeout * 4 seconds
        P3OUT &= ~BIT7;  // BT reset pin lo
        if (rfResetCntr == 0) rfResetCntr = 1;
        pingCntr = 0;
      }
    }
  }
  else
  { // if not recording
    long new_data[4];
    ADC10_Read_Data(&new_data[0]);
    addBatteryData(new_data[3]);
    ADC10_Measure();
  }

  if (BIT0 & P1IN)  // if rf connected
    rfConStat = 1;
  else
    rfConStat = 0;

  if (!lowBatteryMessageAlreadySent)
  {
    if (sumBatteryVoltage < BATT_LOW_TH)
    {
      lowBatteryMessageAlreadySent = 1;
      rf_send(lowBatteryMessage, 7);

      if(shutDownCntr == 0)
        shutDownCntr = 1;
    }
  }

  if (powerUpCntr)
  {
    powerUpCntr++;

    if (powerUpCntr >= 2400)  // забыли выключить питание (не стартует запись в теечение ~10 минут)
    {
      if (shutDownCntr == 0)
        shutDownCntr = 1;
    }

    if (powerUpCntr % 2)
      led(1);
    else
      led(0);
  }

  if (shutDownCntr)
  {
    shutDownCntr++;
    if (shutDownCntr > 4)
    { // wait 1 second before shut down
      AFE_StopRecording();
      P3OUT &= ~BIT7;  // BT reset pin low
      TACCR0 = 0x00;
      led(0);
    }
  }

  if (rf_delete_unfinished_incoming_messages())
    rf_send(unfinishedIncomingMsgError, 7);

  if(rf_tx_fail_flag)
  { // debug information maybe delete
    rf_tx_fail_flag = 0;
    rf_send(txFailError, 7);
  }
}