aalleexxaa » 08 июл 2013, 02:55
у голых данных хотя бы должна быть закономерность, к примеру если направить одну из ось X на север, то в младшем байте Y будет 0; если на запад или восток, то у X младшего байта будет что-то ближе к 256. И, как я понимаю, второй байт для 5 Gain 390LSB/Gauss) долэен быть или 0 или 255, и менять значения на границе перехода частей света(север-юг, запад-восток), а у меня в одной стороне держится градусов на 150. Попробовал сделать Self test, данные привожу
Mode 01: x[0]=1; x[1]=211; y[0]=1; y[1]=182; z[0]=1; z[1]=165.
Mode 10: x[0]=254; x[1]=50; y[0]=254; y[1]=68; z[0]=254; z[1]=92.
По расчетам для 5Gain значения должны лежать в пределах L=243*390/390=243, H=575*390/390=575. Как все-таки рассчитывается полное значение X?. и для чего Self test? Чтобы просто сравнить, находятся ли значения в этом рассчитаном диапазоне? Если нет, то как корректировать?
Далее вопрос задам по расчету полного значения X и двух байт для 5Gain. Как я понял, используется всегда 12 бит, причем 12-й - это знак +-. А остальной полубайт x[0] забивается тем же значением что и 12-бит? Имеем, к примеру x[0]=0, x[1]=160, получаем X=160. А если x[0]=255(11111111) x[1]=160, получаем X=1952, я думал, что следующее за 255 значения должен получать в диапазоне 256-511, а тут сразу скачек. в чем у меня проблема? почему я так все спрашиваю, потому что у меня не Ardunio, и нет готовых библиотек под PIC, а математика какая-то мутная в библиотеках Ardunio, я в ней разобраться не смог.
Сейчас задача: разоброаться как работает и выдает информацию кампас, а выбор конечного прибора будет позднее.