I'm not sure what sort of "fall" you are trying to detect. But lets start with the basic theory, which is fairly straightforward, and then move into the non-idealities and the implementation details. I'm assuming you have a 3-axis accelerometer.
An accelerometer measures acceleration. Gravity acts on an accelerometer at rest and appears as a force of 1G. If there is a free fall, the measured gravity vector will reduce to 0. So as a first pass, you can threshold the 3-d norm of the acceleration vector. If the 3-d norm falls below the threshold, you're in a free-fall. Because you are simply looking at the magnitude of the vector, orientation does not matter.
When will this "first order" approach fail? I can think of two situations on first glance...
- It will fail if there is some additional acceleration during a fall (maybe a jumping/diving fall??)
- Or, it might fail if the fall is not quite a free fall (perhaps someone manages to catch himself halfway, or let himself down gently)
As some additional ideas for a second order approach: You could try to look at the magnitude profile. We would expect to see a free fall region, maybe around 0.3G, then a spike above 1G when the person hits the ground, followed by approximately a 1G period of being on the ground. The other poster is correct- it will likely take some experimentation to quantify repeatable behavior during falls.
Finally, implementation details: If the accelerometer outputs analog values, your ADC converts analog to digital which you see as 241, 314, 102, etc. Look at the accelerometer datasheet for conversion values, probably something in units of Volts/G. Then, make sure you know your ADC conversion, likely in units of integers/Volts. This should be enough to convert your result into units of G.