#pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers' property */ /* is set to 'yes' (#pragma interrupt saveall is generated before the ISR) */void BTB_OnInterrupt(void){ ADCA__Enable(); ADCA__EnableEvent();}
void ADCA__OnEnd(void){ byte store; word valores[8]; word threshold = 16384; //32768/2 (Max_ADC_Resolution_divided_by_two) //============================== Frac16 canal0, canal1, canal2, canal3; store = ADCA__GetValue16(valores); canal0 = (Frac16)((long)valores[0] - 32768); canal1 = (Frac16)((long)valores[1] - 32768); canal2 = (Frac16)((long)valores[2] - 32768); canal3 = (Frac16)((long)valores[3] - 32768); if(canal0 < threshold) { led3_NegVal(); } else { led5_NegVal(); }}
void AD1_OnEnd(void){/*########### Variaveis internas da função ############*/ byte store, i = 0, j =0, k; word valores[8]; word threshold = 16384; //(32768/2) Metade da resolução total do ADC Frac16 canal[8];/*######################################################*/ store = AD1_GetValue16(valores); if(store == ERR_OK) { /* Armazena os valores lidos dos adc's no vetor canal */ for(k = 0; k < 8; k++) { canal[k] = (Frac16)((long)valores[k] - 32768); } // /* Coloca os valores no struct global pacote */ for (j = 0; j < 8; j++) { pct.ad1_canalValores[i] = (byte)canal[j]; pct.ad1_canalValores[i++] = canal[j] >> 8; //soma mais 1 na varivel i para pular para a proxima posição do vetor i++; } // if(canal[0] > threshold) { led2_NegVal(); } } else { Xmodem_SendError(AD1, store); } AD1_Measure(FALSE);}