HM55B compass for Atom Pro and FATAN2 function

Hello,

This is my sample for HM55B compass, but I dont understand why
“fatan2 tofloat x\tofloat y, fangle” fangle = 0 when y = 0
I need workaround with “fatan2 tofloat x\tofloat y + 0.1, fangle” to get correct compass bearing.


pdata con p0
pclock con p1
penable con p2

reset con %0000
measure con %1000
report con %1100

status var nib
ready con %1100

x var sword
y var sword
fangle var float
angle var word

debut

high penable
low penable

shiftout pdata, pclock, msbfirst, [reset\4]

high penable
low penable

shiftout pdata, pclock, msbfirst, [measure\4]

status = 0
repeat
	high penable
	low penable
	shiftout pdata, pclock, msbfirst, [report\4]
	shiftin pdata, pclock, msbpost, [status\4]
until status = ready

shiftin pdata, pclock, msbpost, [x\11, y\11]

high penable

if(x.bit10 = 1) then
	x = x - %11111111111
endif
if(y.bit10 = 1) then
	y = y - %11111111111
endif

fatan2 tofloat x\tofloat y + 0.1, fangle
angle = toint((fangle / 3.1416) * 180.0) + 179

serout s_out, i38400, "X = ", sdec x, " Y = ", sdec y, " Angle = ", dec angle, 13]
pause 200

goto debut