|
|
  |
KMA200, Помогите документацией. |
|
|
|
Sep 6 2008, 09:04
|
Группа: Новичок
Сообщений: 8
Регистрация: 12-02-08
Пользователь №: 34 993

|
Цитата(oleh800 @ Sep 5 2008, 14:48)  исходников на JDM программатор нет. Я так понимаю пик записывает себе в еепром данные с КМА, а потом с пика можно все проанализировать в компе, и в обратном порядке. Вопрос, а pic16f873 не подойдет у меня их просто несколько валяется или есть свои нюансы. И еще вопрос КМА снятое с датчика прошить можно, нет или только считать? У меня сделано по-другому. Я читаю и отображаю данные на индикаторе 7х4. От всей системы мне нужно только перевести в цифровой режим. Подойдут любые контроллеры со встроенным SPI, или тогда надо реализовывать программно, но вопрос в частотах. Вообще мне кажеться более удобен контроллер от Amel, т.к. у него разделены модули SPI и RS-232 (как раз для того чтобы сразу общаться с компом, без промежуточной записи в eeprom). Снятое с датчика прошить можно было, по крайней мере я прошивал. Но кто знает как сейчас, может выставили защиты от записи. Если возьмётесь - отпишитесь. К сожалению, я забросил это и не довёл до конца - всё шьётся, но он теперь не работает ни в каком режиме, но данные в память писать-читать можно. Куплю датчик попробую продолжить. Они когда-то были в сети магазинов Лорд на жд платформе Новогиреево.
|
|
|
|
|
Sep 6 2008, 13:53
|
Участник

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957

|
Цитата(evhen @ Sep 6 2008, 13:04)  Подойдут любые контроллеры со встроенным SPI, или тогда надо реализовывать программно, но вопрос в частотах. Вообще мне кажеться более удобен контроллер от Amel, т.к. у него разделены модули SPI и RS-232 (как раз для того чтобы сразу общаться с компом, без промежуточной записи в eeprom). аппаратный SPI там не нужен, проще с программым все делать. посмотри мой С-исходник, на любой камешек можно переделать (в том числе и на пик). на 2051 делал исходя из желания заказчика, они у них применялись тогда, а этот стендик был в нескольких экземплярах. Цитата(evhen @ Sep 6 2008, 13:04)  Снятое с датчика прошить можно было, по крайней мере я прошивал. Но кто знает как сейчас, может выставили защиты от записи. Если возьмётесь - отпишитесь. К сожалению, я забросил это и не довёл до конца - всё шьётся, но он теперь не работает ни в каком режиме, но данные в память писать-читать можно. не знаю как сейчас, но раньше датчики обязательно прошивали навсегда, и из изделия (по крайней мере Калужской Автоэлектронники) его использовать повторно было невозможно. хотя могут из за разгильдяства прошивать неправильно  <<Если возьмётесь - отпишитесь.>> это к чему относится?
|
|
|
|
|
Sep 6 2008, 19:36
|
Группа: Новичок
Сообщений: 8
Регистрация: 12-02-08
Пользователь №: 34 993

|
Цитата(Vasily_A @ Sep 6 2008, 17:53)  аппаратный SPI там не нужен, проще с программым все делать. посмотри мой С-исходник, на любой камешек можно переделать (в том числе и на пик). на 2051 делал исходя из желания заказчика, они у них применялись тогда, а этот стендик был в нескольких экземплярах. не знаю как сейчас, но раньше датчики обязательно прошивали навсегда, и из изделия (по крайней мере Калужской Автоэлектронники) его использовать повторно было невозможно. хотя могут из за разгильдяства прошивать неправильно  <<Если возьмётесь - отпишитесь.>> это к чему относится? Просто мне интересно было использовать именно железный SPI. Про содержимое бита защиты - в самых первых сообщениях топика. "Отпишитесь" - это к тому, что я видимо угробил датчик - тоже описано в моем сообщении выше, т.е. оно прошивается и читается всё правильно, но угол ни в аналоге ни в цифре не выдаёт.
|
|
|
|
|
Sep 8 2008, 12:22
|
Группа: Новичок
Сообщений: 4
Регистрация: 4-09-08
Пользователь №: 40 002

|
Цитата(Vasily_A @ Sep 6 2008, 09:11)  схема в 5-м сообщении, прошивку и исходник прилагаю. шить в at89c2051 или любой х51 совместимый процик терминалом на 9600 8n1 цепляемся, и работаем. виндовая софтина работала теми же командами, но ее я найти пока не смог.
команды смотреть в исходнике...
написано кое-как, но успешно работало (а может и щас работает) на производстве. Во вложенном файле С требуются следующие библиотеки, которых я так понимаю нет #include <reg51.h> #include <port51.h> я в С не силен, но за алгоритм большое СПС, буду на PIC переводить. Вопрос только во времени, которого всегда нет.
|
|
|
|
|
Oct 2 2008, 17:08
|
Участник

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957

|
Цитата(oleh800 @ Sep 8 2008, 16:22)  Во вложенном файле С требуются следующие библиотеки, которых я так понимаю нет #include <reg51.h> #include <port51.h> я в С не силен, но за алгоритм большое СПС, буду на PIC переводить. Вопрос только во времени, которого всегда нет. чудеса интернета - сегодня пришло уведомление о новом ссобщении... содержание port51.h ------------------------------------------------------ /* P0 */ /* P1 */ /* P2 */ /* P3 */ at 0xB7 sbit P3_7 ; at 0xB6 sbit P3_6 ; at 0xB5 sbit P3_5 ; at 0xB4 sbit P3_4 ; at 0xB3 sbit P3_3 ; at 0xB2 sbit P3_2 ; at 0xB1 sbit P3_1 ; at 0xB0 sbit P3_0 ; ------------------------------------------------------ reg51.h у меня щас нет, он либах компилятора для х51 на другом компе, но он должен быть в составе любого х51 компилятора.
|
|
|
|
|
Feb 10 2009, 18:02
|
Группа: Новичок
Сообщений: 8
Регистрация: 12-02-08
Пользователь №: 34 993

|
Последний новости грустные: в датчиках ДПДЗ теперь используются аналоговые аналоги KMA200 (вроде KMA199).
|
|
|
|
|
Sep 15 2009, 06:57
|
Группа: Участник
Сообщений: 10
Регистрация: 27-01-09
Из: Omsk
Пользователь №: 44 032

|
Народ, не могу перевести KMA200 в командный режим  Вроде бы делаю всё по алгоритму из даташита. Прикрутил к м/к ATMega128 на аппаратный SPI. MOSI с MISO запараллелены, на время чтения данных с линии DDR_MOSI отключается. Короче ситуация непонятная, сначала вроде бы заработало, считывались какие-то значения из RAM, а потом всё перестало читаться. Пробовал менять микросхемы датчиков - результат один и тот же, проверил интерфейс меги, временные задержки - всё в норме. Что за чудеса - не понятно. Может у кого какие грабли при подключении были похожие?
|
|
|
|
|
Sep 16 2009, 10:08
|
Группа: Участник
Сообщений: 10
Регистрация: 27-01-09
Из: Omsk
Пользователь №: 44 032

|
В общем, что удалось выяснить: из десяти подряд попыток перевести КМА200 в командный режим и считать все 16 адресов RAM удаётся только 1-3раза.
Вот такая примерно непонятная статистика.
|
|
|
|
|
Sep 18 2009, 09:12
|
Группа: Участник
Сообщений: 10
Регистрация: 27-01-09
Из: Omsk
Пользователь №: 44 032

|
Наконец-то удалось разобраться с командным режимом этого устройства. Подбором необходимых таймингов в разных местах и величин напряжений удалось добиться стабильной инициализации устр-ва и даже запрограммировать его на цифровой выход.
Но вот только в режиме цифрового выхода с датчика, почему-то, читаются только 0xFF
|
|
|
|
|
Sep 22 2009, 09:57
|
Группа: Участник
Сообщений: 10
Регистрация: 27-01-09
Из: Omsk
Пользователь №: 44 032

|
Цитата(evhen @ Jun 25 2008, 02:54)  А можно по подробнее про CRC? Нашёл, что можно вычислять CRC-16 1001 способом... А Каким надо? Калькулятор тут http://www.zorc.breitbandkatze.de/crc.htmlCRC датчик считает и записывает себе сам. Причём условия расчёта CRC16 таковы: полином=8005h; начальное значение CRC=0; биты сдвигаются через регистр ВЛЕВО (то есть старшим вперед); слова из ячеек RAM начиная с адреса 0x00 двигаются через регистр старшим байтом вперёд. НО! Обнаружена интересная особенность: датчик при одних и тех же значениях всех ячеек RAM может рассчитывать и записывать в EEPROM разные значения CRC16. Так вот, когда он записал себе неверную CRC16, то работать в нормальном режиме он потом отказывается!!! И так до тех пор, пока операциями записи EEPROM не добиться установки правильного значения CRC16 (контролируя его после каждого "прожига")
|
|
|
|
|
Oct 16 2009, 18:05
|
Группа: Участник
Сообщений: 4
Регистрация: 16-10-09
Пользователь №: 53 010

|
Господа, поделитесь, пожалуйста, опытом программирования КМА200. Нигде не могу найти внятной информации. PDF не помогает. Сначала хочу прочитать EEPROM, чтобы случайно не затереть калибровочные константы. Последовательность действий : 1 вхожу в режим команд (видимо здесь начинаются проблемы), 2 отправляю команду чтения (для первой ячейки – 0001000), 3 читаю 16 бит (1-я ячейка) Может кто-нибудь опытным путем нашел оптимальное соотношение задержек. Еще вопрос – как задать угловой диапозон работы датчика? Константы для начальной и конечной угловых точек должны находиться в ячейках 2 и 3, но что туда писать? Как задать напряжение в начальной точке при определенном положении магнита – опытным путем ? Не могу понять
|
|
|
|
|
Oct 25 2009, 14:06
|
Группа: Новичок
Сообщений: 2
Регистрация: 12-02-09
Пользователь №: 44 765

|
Цитата(Boris_R @ Oct 17 2009, 01:05)  Господа, поделитесь, пожалуйста, опытом программирования КМА200. Нигде не могу найти внятной информации. PDF не помогает. Сначала хочу прочитать EEPROM, чтобы случайно не затереть калибровочные константы. Последовательность действий : 1 вхожу в режим команд (видимо здесь начинаются проблемы), 2 отправляю команду чтения (для первой ячейки – 0001000), 3 читаю 16 бит (1-я ячейка) Может кто-нибудь опытным путем нашел оптимальное соотношение задержек. Еще вопрос – как задать угловой диапозон работы датчика? Константы для начальной и конечной угловых точек должны находиться в ячейках 2 и 3, но что туда писать? Как задать напряжение в начальной точке при определенном положении магнита – опытным путем ? Не могу понять  В этой теме есть схема с прошивкой, 100% работает, сам проверял... Особенность есть, при аереводе в командный режим, датчик автоматом выходит из него через кажеться 100мс. Чтобы отрубить режим автовыхода надо программировать Ctrl байт датчика. В той прошивке есть команда init, по ней датчик прошивается на spi и отрубается автовыход из ком. режима, после чего можно уже спокойно в ручном режиме переводить датчик в ком. режим, читать писать озу программировать пзу... По поводу углов, а что там непонятно? в пдфке даже формула приведена для расчета значений этий байтов. Ну например если нужен диапазон в 60 град: ang_rng[byte_03] = 60/0.00275 = 21818 [553Ah]
Сообщение отредактировал kreml - Oct 25 2009, 14:12
|
|
|
|
|
Oct 25 2009, 19:45
|
Группа: Участник
Сообщений: 4
Регистрация: 16-10-09
Пользователь №: 53 010

|
Цитата(kreml @ Oct 25 2009, 17:06)  В этой теме есть схема с прошивкой, 100% работает, сам проверял... Особенность есть, при аереводе в командный режим, датчик автоматом выходит из него через кажеться 100мс. Чтобы отрубить режим автовыхода надо программировать Ctrl байт датчика. В той прошивке есть команда init, по ней датчик прошивается на spi и отрубается автовыход из ком. режима, после чего можно уже спокойно в ручном режиме переводить датчик в ком. режим, читать писать озу программировать пзу... По поводу углов, а что там непонятно? в пдфке даже формула приведена для расчета значений этий байтов. Ну например если нужен диапазон в 60 град: ang_rng[byte_03] = 60/0.00275 = 21818 [553Ah] Нужно реализовать на аппаратном SPI, PIC16F876A, информацию вывожу на ЖКИ. Прогу cмотрел, но извините, в С не силен. C процедурой инициализации там просто: 1 задержка после включения 250 мС, 2 DATA_=1, CLK_=0, CS_=1, 3 вкл. питания, 4 пауза 10 мС, 5 CLK_=1; 6 пауза 5 мС, Не разобрался для чего процедуры: void read_ee(void), start_ee(void), start_ram(void). Насколько я понял, по PDF, чтобы прочитать ячейку: CS=0, отправляем байт адреса, CS=1,пауза 1 мс, затем CS=0, читаем 2 байта, CS=1. Отправляю адрес, PIC возвращает по шине этот-же байт; или инициализации нет, или я с протоколом не разобрался. По поводу 100 мС –разве этого не достаточно, чтобы прочитать память? До углов поворота еще не добрался.
|
|
|
|
|
Oct 26 2009, 11:01
|
Группа: Новичок
Сообщений: 2
Регистрация: 12-02-09
Пользователь №: 44 765

|
Цитата(Boris_R @ Oct 26 2009, 02:45)  Нужно реализовать на аппаратном SPI, PIC16F876A, информацию вывожу на ЖКИ. Прогу cмотрел, но извините, в С не силен. C процедурой инициализации там просто: 1 задержка после включения 250 мС, 2 DATA_=1, CLK_=0, CS_=1, 3 вкл. питания, 4 пауза 10 мС, 5 CLK_=1; 6 пауза 5 мС, Не разобрался для чего процедуры: void read_ee(void), start_ee(void), start_ram(void). Насколько я понял, по PDF, чтобы прочитать ячейку: CS=0, отправляем байт адреса, CS=1,пауза 1 мс, затем CS=0, читаем 2 байта, CS=1. Отправляю адрес, PIC возвращает по шине этот-же байт; или инициализации нет, или я с протоколом не разобрался. По поводу 100 мС –разве этого не достаточно, чтобы прочитать память? До углов поворота еще не добрался. read_ee() хз, остальные вроде вообще не используются. По чтению ram, отпралять надо не адрес, а 1n (hex), где n это адрес.
|
|
|
|
|
Nov 1 2009, 19:34
|
Группа: Участник
Сообщений: 4
Регистрация: 16-10-09
Пользователь №: 53 010

|
Разобрался с чтением памяти КМА200.Хочу поделиться опытом.Информацию вывожу на ЖКИ, кнопкой на одном из портов просто "листаю" ячейки КМА,PIC16F876A, аппаратный SPI.Прилагаю часть программы где показаны инициализация и чтение ячейки. Пока не удается записать данные в память КМА.Кто разобрался с записью,поделитесь информацием.
Сообщение отредактировал Boris_R - Nov 1 2009, 19:44
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|