__interrupt void Port1_ISR(void) { if (P1IFG & AFE_DRDY_PIN) { P1IFG &= ~AFE_DRDY_PIN; // Clear DRDY flag long new_data[12]; AFE_Read_Data(&new_data[0]); loffStat = AFE_getLoffStatus(); ADC10_Read_Data(&new_data[8]); addBatteryData(new_data[11]); ADC10_Measure(); if(packetAddNewData(new_data)){ packetDataReady = 1; __bic_SR_register_on_exit(CPUOFF); // Не возвращаемся в сон при выходе } } }
__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); } }
__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); } }