Миландр
http://forum.milandr.ru/

Микросхема преобразователь угол-код для СКВТ
http://forum.milandr.ru/viewtopic.php?f=57&t=2431
Страница 17 из 17

Автор:  Storoj [ 2019-мар-28 20:27 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Столкнулись с такой ситуацией, при использовании микросхемы в режиме Coord_resolution = 0 формируем посылку SPI в виде:
2р(квадрант)+16р(угол). = 18 разрядов данных.
Когда проходим границу 360->0 градусов, видим в данных значения из квадрантов 1 и 2, хотя переход 360->0 должен включать значения только из квадрантов 0 и 3.
Открыть
Изображение
Закрыть

Данные семплируются
MODE_InitStructure.Sample_src=2;
В цикле 2 мс, перед посылкой SPI идет формирование сигнала семпла, потом чтение регистров координаты и статуса:

PORT_ResetBits(MDR_PORTA, PORT_Pin_0); //сигнал SAMPLE в «0»
delay_us(1); //фактически 1,5 мкс
PORT_SetBits(MDR_PORTA, PORT_Pin_0); //сигнал SAMPLE в «1»

REG_1310_GetData16(ADR_C1Coord, &Coord_1_Array[0]); //читаем угол
REG_1310_Get_CxStat(ADR_C1Stat,&DATA1); //читаем статус, выделяем биты квадранта…

Как будто защелкиваются данные из разных циклов расчета или не защелкиваются вообще. А если даже из разных, то почему появляются квадранты 1 и 2?
Синхросигнал EXI стабилен.
Подскажите, куда копать чтобы исправить работу.

Автор:  prostoRoman [ 2019-мар-29 09:33 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

С сигналом SAMPLE были какие-то глюки - поищите по форуму. Вероятно это никак не относится к Вашей проблеме (емнип, устанавливался бит внутренней ошибки ECC_err или типа того), но всяко может быть.
UPD: вот, три страницы назад viewtopic.php?p=22831#p22831

Автор:  Storoj [ 2019-мар-29 18:28 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Ошибку ECC_err не читал, игнорируем программно. Тут больше даже вопрос к тому, откуда появляются квадранты 1 и 2 в данных, если переход 360-0 находится в квадрантах 0 и 3 ?

Автор:  Alex1 [ 2019-апр-01 11:40 ]
Заголовок сообщения:  Re: Микросхема преобразователь угол-код для СКВТ

Действительно, есть такая проблема с битами квадрантов. Защелкиваются в регистр не одинаково с C_Coord. Будем исправлять, в еррату запишем. По обходу ситуации могу только предложить повторное сэмплирование и считывание регистров, на основе предыдущего значения.

Как получаются квадранты 1 и 2 - до конца не ясно. Предположу, что мы тут наблюдаем все же значения 0x3FFFF (262143), 0x30000 (196608), 0x0FFFF (65535), 0x0000 (0).

Страница 17 из 17 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/