Exemplo n.º 1
0
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) {
	}
}