void handl_i2c_message(void) { if (stat.numr == 0) return; if(stat.is_tran == I2C_Direction_Transmitter) { switch (stat.bufr[0]) { case START_ADC: start_ADC(); break; case STOP_ADC: orders_to_stop(); break; case START_SPI0: *spi3 = 5; ++spi3Start; break; case START_SPI1: *spi1 = 3; ++spi1Start; break; case START_TEST: start_test(); break; case STOP_TEST: orders_to_stop_test(); case ENABLE_MONITORING: driver_stat.enable_monitoring = 1; break; case DISABLE_MONITORING: driver_stat.enable_monitoring = 0; break; case SET_GAIN: if(stat.numr == 5) setGainOut(&stat.bufr[1]); break; case CLEAR_SET_OVERLOAD: clear_set_debug(); break; } stat.numr = 0; } 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) { } }