示例#1
0
//ISR del T5
//void _ISR _T5Interrupt(void){
void __attribute__((__interrupt__, auto_psv)) _T5Interrupt(void){
    //printf("ISR T5\n");
    unsigned long i;
    int sens1, sens2;

    //convert ADC_SCAN_AN11
    ConvertADC10();
    for(i=0;i<0x0000000F;i++){}

    //convert ADC_SCAN_AN13
    ConvertADC10();
    for(i=0;i<0x0000000F;i++){}

    sens2=ReadADC10(0);
    sens1=ReadADC10(1);

    #if (_FISICA_VERBOSE_ISR_T5>=2)
        printf("sens1 = %d\n", sens1);
        printf("sens2 = %d\n", sens2);
    #endif

    sens_buff[sens_buff_ind]=sens1;
    sens_buff_ind++;
    sens_buff[sens_buff_ind]=sens2;
    sens_buff_ind++;

    #if (_FISICA_VERBOSE_ISR_T5>=2)
        printf("sens_buff_ind=%d\n", sens_buff_ind);
    #endif

    if(sens_buff_ind>=(FIS_SENS_BUFF_LEN)){
        #if (_FISICA_VERBOSE_ISR_T5>=2)
            con_printf("ISR T5: sens_buff_ind == FIS_SENS_BUFF_LENGTH\r\n");
        #endif
        fis_stop_expFis();
        //fis_save_sens_buff();
    }
    
    T5_Clear_Intr_Status_Bit;
}
示例#2
0
UINT16 read_adc(UINT8 channel) {
    if (channel == A1)
        AD1CHS = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN4;
    else if (channel == A0)
        AD1CHS = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN2;
    else
        return 0;
    int i;
    for (i = 0; i < 10; i++); // small delay (may not be needed but w/e)
    AcquireADC10();
    for (i = 0; i < 100; i++); // Wait for sampling to complete
    ConvertADC10();
    while(!BusyADC10());
    //AcquireADC10();
    return ReadADC10(0);
}
示例#3
0
CPU_INT16U  ADC_GetVal (CPU_INT08U channel_to_convert)
{
    CPU_INT08U  buffer;
    CPU_INT32U  config;   

	switch (channel_to_convert)
		{
		case 0: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN0; break;
		case 1: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN1; break;
		case 2: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN2; break;
		case 3: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN3; break;
		case 4: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN4; break;
		case 5: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN5; break;
		case 6: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN6; break;
		case 7: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN7; break;
		case 8: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN8; break;
		case 9: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN9; break;
		case 10: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN10; break;
		case 11: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN11; break;
		case 12: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN12; break;
		case 13: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN13; break;
		case 14: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN14; break;
		case 15: config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN15; break;
		config  = ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN0;
		}

	SetChanADC10(config);
	//pour le changement de voie en entrée de l'adc, il faudra prévoir un temps pour que la tension se
	//stabilise entre la comutation et l'échantillonnage. Le top se serait de changer de voie à la fin de la conversion précédente. 
	//Ce qui laisse du temps avant la conversion suivante.    CBE
	OSTimeDlyHMSM(0, 0, 0, 5);
	
	ConvertADC10(); 
    while (!BusyADC10());	// timeout ?? !!
    buffer = 8 * (~ReadActiveBufferADC10() & 0x1);                      /* Select non active buffer                                 */
    
    return (ReadADC10(buffer));                                         /* Return ADC reading                                       */
}