Measuring Tilt using a Three Axis Solution
In order to define the angles of the accelerometer in three dimensions the pitch, roll and theta are sensed using all three outputs of the accelerometer. Pitch (ρ) is defined as the angle of the X-axis relative to ground. Roll (ϕ) is defined as the angle of the Y-axis relative to the ground. Theta (θ) is the angle of the Z axis relative to gravity.

http://www.freescale.com/files/senso...ote/AN3461.pdf
Here is the meat of the code:
solveangle:
'**********Solve for x angle ********************************************
if xresult < yresult + zresult then 
    dummy = 5000   'when x is smaller the following equation works best
    xlong = (dummy * xresult) /(sqr((yresult*yresult) + (zresult*zresult)))
else  'keeps results accurate at near 0 and near 90 degree values
    dummy =30      'when x is larger the following equation works best
    xlong = (dummy * xresult*xresult) / ((yresult*yresult)+(zresult*zresult))
endif
y = xlong
x = dummy 'Assign x and y values for atan2 function
call atan2
xangle = 9000 - y
if yresult < xresult + zresult then 
    dummy = 5000  'when y is smaller the following eqauation works best
    ylong = (dummy * yresult) / (sqr((xresult*xresult) + (zresult*zresult)))
else
    dummy =30 'when y is larger the following equation works best
    ylong = (dummy * yresult*yresult) / ((xresult*xresult)+(zresult*zresult))
endif 
y = ylong
x = dummy '
call atan2
yangle = 9000 - y


 Menu
 Menu 
			
			
 
			 
			 
			
Re: 16F690 MCLR as Input
many thanks Henrik to clarify this post.
jackberg1 - 27th October 2025, 20:42that make more sense to me now with further test, when the pin RA3
has nothing connected to it, the input is floating thus
when adding a pulldown it's...