All pastes #97801 Raw Edit

Mine

public text v1 · immutable
#97801 ·published 2006-07-24 02:17 UTC
rendered paste body
void Sample_Gyro(void)

{

	ADCSRA |= (1 << ADSC);

	while(!(ADCSRA & 0x10));



	gyro_reading	=	ADCH;	// Get the high 8 bits of the results [218]



	// Every result is multiplied by 1,000 so that we do not have to result to using

	// floating point math. 64 bit math on an 8 bit microcontroller is pretty bad.

	if(gyro_reading > GYRO_NEUT) // If we are moving to the right, add to heading

	{

		current_heading += ((gyro_reading - GYRO_NEUT) * 2); // Multiply difference by two to account for sampling time



		// 14800 is 360 degrees, make it so it can only be between 0 and 360 degrees

		if(current_heading > 14800)

		{

			current_heading -= 14800;

		}

	}

	else if(gyro_reading < GYRO_NEUT) // If we are moving to the left, subtract from heading

	{

		current_heading -= ((GYRO_NEUT - gyro_reading) * 2);



		if(current_heading > 14800)

		{

			current_heading = (14800 - (65535 - current_heading));

		}



	}



}