void adcInterrupt(void) { //ADC_ClearFlag(ADC1, ADC_FLAG_EOC); *spi3 = adc12[0]; //__DSB(); *spi3 = adc12[1]; /*while(!(ADC3->ISR & ADC_IT_EOC));*/ /*if(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == SET) cSetFlag++;*/ /*ADC_ClearFlag(ADC3, ADC_FLAG_EOC);*/ *spi1 = adc34[0]; //__DSB(); *spi1 = adc34[1]; if(driver_stat.statusAdc == DURING_STOP_ADC) stop_ADC(); return; }
int main(void) { init_ADC(); // Schalte ADC ein // korrekte Parameterwerte eADCRUNMODE runmode = SINGLESHOT; // Eine Messung start_ADC(runmode); // Messung starten eADCRES res = BIT8; // Auflösung des Digitalwertes unsigned short result; result = read_ADC(res); // 512 bei 50 % bei 10 Bit // 128 bei 50 % bei 8 Bit stop_ADC(); unsigned long a = 835; unsigned long * p = &a; unsigned char b; b = ulong2bcd_unpk(p); // b=5 - richtig & a=83 - richtig // Sonderfall Parameter = 0 unsigned long a2 = 0; unsigned long * p2 = &a2; unsigned char b2; b2 = ulong2bcd_unpk(p2); // b2=0 - richtig & a2=0 - richtig unsigned char c; c = ulong2bcd_pk(89); // Wird 1000 1001 - richtig // inkorrekter Parameterwert unsigned char c2; c2 = ulong2bcd_pk(5); // Wird 0 - richtig unsigned char c3; c3 = ulong2bcd_pk(100); // Wird 0 - richtig while (1) { } }