A method for performing a demodulation of an analog FSK signal received from a field device by a micro-controller having a built-in software-implemented FSK modem function, the method comprising: receiving an FSK analog signal; converting, with an analog-to-digital converter, the FSK analog signal into a digital value at a predetermined digital sample rate; determining the frequency of the digital value; and providing (128,130) a digital binary signal based on the determined frequency of the digital value, characterised in that said determining the frequency of the digital value signal further comprises: determining a sum average of zero crossings per time unit; comparing the sum average with a predetermined decision point value; and determining (128,130) a value of the digital binary signal based on the result of the above comparison step; and wherein determining a sum average of zero crossings per time unit includes: measuring output of the analog-to-digital converter; comparing the measured output to a predetermined center point value; when the measured output is greater than the predetermined center point value, increasing the center point value by a predetermined increment; when the measured output is less than the predetermined center point value, decreasing the center point value by a predetermined decrement; and determining a sum average of zero crossings per time unit based on the determined center point value. receiving an FSK analog signal; converting, with an analog-to-digital converter, the FSK analog signal into a digital value at a predetermined digital sample rate; determining the frequency of the digital value; and providing (128,130) a digital binary signal based on the determined frequency of the digital value, characterised in that said determining the frequency of the digital value signal further comprises: determining a sum average of zero crossings per time unit; comparing the sum average with a predetermined decision point value; and determining (128,130) a value of the digital binary signal based on the result of the above comparison step; and wherein determining a sum average of zero crossings per time unit includes: measuring output of the analog-to-digital converter; comparing the measured output to a predetermined center point value; when the measured output is greater than the predetermined center point value, increasing the center point value by a predetermined increment; when the measured output is less than the predetermined center point value, decreasing the center point value by a predetermined decrement; and determining a sum average of zero crossings per time unit based on the determined center point value. determining a sum average of zero crossings per time unit; comparing the sum average with a predetermined decision point value; and determining (128,130) a value of the digital binary signal based on the result of the above comparison step; and wherein determining a sum average of zero crossings per time unit includes: measuring output of the analog-to-digital converter; comparing the measured output to a predetermined center point value; when the measured output is greater than the predetermined center point value, increasing the center point value by a predetermined increment; when the measured output is less than the predetermined center point value, decreasing the center point value by a predetermined decrement; and determining a sum average of zero crossings per time unit based on the determined center point value. measuring output of the analog-to-digital converter; comparing the measured output to a predetermined center point value; when the measured output is greater than the predetermined center point value, increasing the center point value by a predetermined increment; when the measured output is less than the predetermined center point value, decreasing the center point value by a predetermined decrement; and determining a sum average of zero crossings per time unit based on the determined center point value.