Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: KMA200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
ControllerZ
Помогите документацией по программированию КМА200.

По датащиту понял, что для входа в режим команд мод необходимо до подачи питания подать 0 на вывод cs затем подать питание ждать 4мс, затем можно слать команды чтения записи. Затем для записи в еепром нужно воспользоваться командой 0x30.

Уже написана программа для пик контроллера, но пока не на чем проверить в связи отсутствия кма200, хотел бы узнать тонкости работы с ним. Кто располагает практикой работы с данным датчиком отзовитесь, буду благодарен.
evhen
Цитата(ControllerZ @ Jan 4 2008, 08:58) *
Помогите документацией по программированию КМА200.

По датащиту понял, что для входа в режим команд мод необходимо до подачи питания подать 0 на вывод cs затем подать питание ждать 4мс, затем можно слать команды чтения записи. Затем для записи в еепром нужно воспользоваться командой 0x30.

Уже написана программа для пик контроллера, но пока не на чем проверить в связи отсутствия кма200, хотел бы узнать тонкости работы с ним. Кто располагает практикой работы с данным датчиком отзовитесь, буду благодарен.


А по подробнее на тему как прога написана... У меня она тоже под PIC16F877. Датчик этот можно выковырять из калужского бесконтактного ДПДЗ. Важно! Найди даташит который подревнее, файл вроде на 4 заканчивается, а новый на 6... Так вот там, ты обнаружишь, что каждые 100мс происходит автоматический сброс и тебя выкидывает из командного режима. Поэтому надо читать всё сразу и как можно быстрее. Вот записать мне ещё ничего не удалось... Я хочу перевести его в цифровой режим. По осциллографу есть импульс напряжения до 12В, но после сброса ячейка памяти не изменяется, хотя бит защиты от записи не установлен. Будет успех - скажи как добился..
Vasily_A
Цитата(evhen @ Feb 13 2008, 02:27) *
А по подробнее на тему как прога написана... У меня она тоже под PIC16F877. Датчик этот можно выковырять из калужского бесконтактного ДПДЗ. Важно! Найди даташит который подревнее, файл вроде на 4 заканчивается, а новый на 6... Так вот там, ты обнаружишь, что каждые 100мс происходит автоматический сброс и тебя выкидывает из командного режима. Поэтому надо читать всё сразу и как можно быстрее. Вот записать мне ещё ничего не удалось... Я хочу перевести его в цифровой режим. По осциллографу есть импульс напряжения до 12В, но после сброса ячейка памяти не изменяется, хотя бит защиты от записи не установлен. Будет успех - скажи как добился..


он там безвозвратно зашит на аналоговый режим, тот что стоит в изделии - перешить нельзя.
принцип работы такой - берем чистый датчик, пишем в озу конфигурацию, смотрим что получилось - если устраивает - зашиваем образ озу е епром. навсегда sad.gif
я для этого ДПДЗ на завод адптер для стенда под эти датчики делал (на ат89с2051).
evhen
Цитата(Vasily_A @ Feb 15 2008, 10:23) *
он там безвозвратно зашит на аналоговый режим, тот что стоит в изделии - перешить нельзя.
принцип работы такой - берем чистый датчик, пишем в озу конфигурацию, смотрим что получилось - если устраивает - зашиваем образ озу е епром. навсегда sad.gif
я для этого ДПДЗ на завод адптер для стенда под эти датчики делал (на ат89с2051).


Сранно, но когда я читаю ОЗУ, то там бит отвечающий за невозможность перепрошивки стоит в состоянии разрешения. Т.е. Ctrl1=4046h прям как с завода.
По поводу стенда: схемку можно, если не секрет? И ещё, как реализовали подачу напряжения программирования? В догонку: а даташитов полных, со всеми диаграммами работы нет случайно? А то, тот в котором это всё есть ещё оочень древний..
Vasily_A
прошу прощения у всех, кто в личку писал... только щас смог ответить.
вот схема, по которой работает (ну по крайней мере пару лет работал) стендик на заводе, где датчики положения заслонки выпускают. ключик - оптореле телефонное, просто делал на том, что под руками было.
в приложенной пдф-ке, все что достаточно для работы.
были проблемы с рассчетом црц, чем завершилось - не помню, давно было.
evhen
А можно по подробнее про CRC? А в документации нигде не написано, что оно ДОЛЖНО быть рассчитано и записано в память... Записал EEPROM, но теперь датчик в режиме ошибки - напряжения на выходах >95%Vdd (CRC перед записью не рассчитывал и не писал..). Нашёл, что можно вычислять CRC-16 1001 способом... А Каким надо? Калькулятор тут http://www.zorc.breitbandkatze.de/crc.html ( стоит заметить что тутр при вводе hex надо перед каждым байтом ставить % )
Vasily_A
Цитата(evhen @ Jun 25 2008, 03:54) *
А можно по подробнее про CRC? А в документации нигде не написано, что оно ДОЛЖНО быть рассчитано и записано в память... Записал EEPROM


при записи в епром чип сам считает црц, и при том правильно smile.gif
как я помню, црц была нужна при имитации работы без записи в епром.

идея работы стенда была такая: определить нули и максимумы при повороте, рассчитать поправки, записать, убедиться что при нужном угле поворота считывается нужное значение (пока работа в цифре идет) и записать епром, если все точно. дальше датчик грели, морозили, трясли - и проверяли работу в аналоговом режиме.

для описанных операций црц не нужен.

комповую часть программы найти не могу, а црц она считала - то ли инициирующее значение надо было подбирать, толи в полином не тот изначально использовался - щас не помню.
evhen
Цитата(honda @ Jul 29 2008, 04:07) *

Видел я этот документ. Наличие реле и прочих элементов наводит на мысль о том, что оно не доработано. К этому можно отнести и то, что там не указано время необходимое на программирование датчика.
oleh800
Помогите, каким образом можно считать КМА200 с помощью например JDM программатора. Или возможные варианты.
Vasily_A
Цитата(oleh800 @ Sep 4 2008, 18:03) *
Помогите, каким образом можно считать КМА200 с помощью например JDM программатора. Или возможные варианты.

я к свой схемке попытаюсь прошивку найти (давно дело было...), как найду -выложу сюда.
oleh800
Цитата(Vasily_A @ Sep 4 2008, 17:14) *
я к свой схемке попытаюсь прошивку найти (давно дело было...), как найду -выложу сюда.

а под какую софтину сей чудо девайс, я так понимаю схема выше по посту прилагается.
evhen
Цитата(oleh800 @ Sep 4 2008, 18:28) *
а под какую софтину сей чудо девайс, я так понимаю схема выше по посту прилагается.

А у вас еть исходники к JDM программатору? Ибо там надо выдерживать тайминги. У меня всё сделано на PIC16F877 без интерфейса к компу. Т.е. я программирую контроллер, а он делает то, что мне надо. Из "-" - для произвольного изменения содержимого датчика, надо его перепрошивать. Но мне это не критично.
oleh800
Цитата(evhen @ Sep 5 2008, 11:36) *
А у вас еть исходники к JDM программатору? Ибо там надо выдерживать тайминги. У меня всё сделано на PIC16F877 без интерфейса к компу. Т.е. я программирую контроллер, а он делает то, что мне надо. Из "-" - для произвольного изменения содержимого датчика, надо его перепрошивать. Но мне это не критично.


исходников на JDM программатор нет.
Я так понимаю пик записывает себе в еепром данные с КМА, а потом с пика можно все проанализировать в компе, и в обратном порядке. Вопрос, а pic16f873 не подойдет у меня их просто несколько валяется или есть свои нюансы. И еще вопрос КМА снятое с датчика прошить можно, нет или только считать?
Vasily_A
Цитата(oleh800 @ Sep 4 2008, 18:28) *
а под какую софтину сей чудо девайс, я так понимаю схема выше по посту прилагается.


схема в 5-м сообщении, прошивку и исходник прилагаю. шить в at89c2051 или любой х51 совместимый процик
терминалом на 9600 8n1 цепляемся, и работаем.
виндовая софтина работала теми же командами, но ее я найти пока не смог.

команды смотреть в исходнике...

написано кое-как, но успешно работало (а может и щас работает) на производстве.
evhen
Цитата(oleh800 @ Sep 5 2008, 14:48) *
исходников на JDM программатор нет.
Я так понимаю пик записывает себе в еепром данные с КМА, а потом с пика можно все проанализировать в компе, и в обратном порядке. Вопрос, а pic16f873 не подойдет у меня их просто несколько валяется или есть свои нюансы. И еще вопрос КМА снятое с датчика прошить можно, нет или только считать?

У меня сделано по-другому. Я читаю и отображаю данные на индикаторе 7х4. От всей системы мне нужно только перевести в цифровой режим. Подойдут любые контроллеры со встроенным SPI, или тогда надо реализовывать программно, но вопрос в частотах. Вообще мне кажеться более удобен контроллер от Amel, т.к. у него разделены модули SPI и RS-232 (как раз для того чтобы сразу общаться с компом, без промежуточной записи в eeprom). Снятое с датчика прошить можно было, по крайней мере я прошивал. Но кто знает как сейчас, может выставили защиты от записи. Если возьмётесь - отпишитесь.
К сожалению, я забросил это и не довёл до конца - всё шьётся, но он теперь не работает ни в каком режиме, но данные в память писать-читать можно. Куплю датчик попробую продолжить. Они когда-то были в сети магазинов Лорд на жд платформе Новогиреево.
Vasily_A
Цитата(evhen @ Sep 6 2008, 13:04) *
Подойдут любые контроллеры со встроенным SPI, или тогда надо реализовывать программно, но вопрос в частотах. Вообще мне кажеться более удобен контроллер от Amel, т.к. у него разделены модули SPI и RS-232 (как раз для того чтобы сразу общаться с компом, без промежуточной записи в eeprom).

аппаратный SPI там не нужен, проще с программым все делать. посмотри мой С-исходник, на любой камешек можно переделать (в том числе и на пик). на 2051 делал исходя из желания заказчика, они у них применялись тогда, а этот стендик был в нескольких экземплярах.

Цитата(evhen @ Sep 6 2008, 13:04) *
Снятое с датчика прошить можно было, по крайней мере я прошивал. Но кто знает как сейчас, может выставили защиты от записи.
Если возьмётесь - отпишитесь.
К сожалению, я забросил это и не довёл до конца - всё шьётся, но он теперь не работает ни в каком режиме, но данные в память писать-читать можно.

не знаю как сейчас, но раньше датчики обязательно прошивали навсегда, и из изделия (по крайней мере Калужской Автоэлектронники) его использовать повторно было невозможно. хотя могут из за разгильдяства прошивать неправильно smile.gif

<<Если возьмётесь - отпишитесь.>> это к чему относится?
evhen
Цитата(Vasily_A @ Sep 6 2008, 17:53) *
аппаратный SPI там не нужен, проще с программым все делать. посмотри мой С-исходник, на любой камешек можно переделать (в том числе и на пик). на 2051 делал исходя из желания заказчика, они у них применялись тогда, а этот стендик был в нескольких экземплярах.
не знаю как сейчас, но раньше датчики обязательно прошивали навсегда, и из изделия (по крайней мере Калужской Автоэлектронники) его использовать повторно было невозможно. хотя могут из за разгильдяства прошивать неправильно smile.gif

<<Если возьмётесь - отпишитесь.>> это к чему относится?


Просто мне интересно было использовать именно железный SPI. Про содержимое бита защиты - в самых первых сообщениях топика. "Отпишитесь" - это к тому, что я видимо угробил датчик - тоже описано в моем сообщении выше, т.е. оно прошивается и читается всё правильно, но угол ни в аналоге ни в цифре не выдаёт.
oleh800
Цитата(Vasily_A @ Sep 6 2008, 09:11) *
схема в 5-м сообщении, прошивку и исходник прилагаю. шить в at89c2051 или любой х51 совместимый процик
терминалом на 9600 8n1 цепляемся, и работаем.
виндовая софтина работала теми же командами, но ее я найти пока не смог.

команды смотреть в исходнике...

написано кое-как, но успешно работало (а может и щас работает) на производстве.

Во вложенном файле С требуются следующие библиотеки, которых я так понимаю нет
#include <reg51.h>
#include <port51.h>
я в С не силен, но за алгоритм большое СПС, буду на PIC переводить. Вопрос только во времени, которого всегда нет.
Vasily_A
Цитата(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 компилятора.
evhen
Последний новости грустные: в датчиках ДПДЗ теперь используются аналоговые аналоги KMA200 (вроде KMA199).
Cтac
Народ, не могу перевести KMA200 в командный режим sad.gif

Вроде бы делаю всё по алгоритму из даташита.

Прикрутил к м/к ATMega128 на аппаратный SPI.
MOSI с MISO запараллелены, на время чтения данных с линии DDR_MOSI отключается.

Короче ситуация непонятная, сначала вроде бы заработало, считывались какие-то значения из RAM, а потом всё перестало читаться.

Пробовал менять микросхемы датчиков - результат один и тот же,
проверил интерфейс меги, временные задержки - всё в норме.

Что за чудеса - не понятно.

Может у кого какие грабли при подключении были похожие?
Cтac
В общем, что удалось выяснить:
из десяти подряд попыток перевести КМА200 в командный режим и считать все 16 адресов RAM удаётся только 1-3раза.

Вот такая примерно непонятная статистика.
Cтac
Наконец-то удалось разобраться с командным режимом этого устройства.
Подбором необходимых таймингов в разных местах и величин напряжений удалось добиться стабильной инициализации устр-ва и даже запрограммировать его на цифровой выход.

Но вот только в режиме цифрового выхода с датчика, почему-то, читаются только 0xFF
Cтac
Цитата(evhen @ Jun 25 2008, 02:54) *
А можно по подробнее про CRC?
Нашёл, что можно вычислять CRC-16 1001 способом... А Каким надо? Калькулятор тут http://www.zorc.breitbandkatze.de/crc.html

CRC датчик считает и записывает себе сам.
Причём условия расчёта CRC16 таковы:
полином=8005h;
начальное значение CRC=0;
биты сдвигаются через регистр ВЛЕВО (то есть старшим вперед);
слова из ячеек RAM начиная с адреса 0x00 двигаются через регистр старшим байтом вперёд.

НО!
Обнаружена интересная особенность:
датчик при одних и тех же значениях всех ячеек RAM может рассчитывать и записывать в EEPROM разные значения CRC16.
Так вот, когда он записал себе неверную CRC16, то работать в нормальном режиме он потом отказывается!!!

И так до тех пор, пока операциями записи EEPROM не добиться установки правильного значения CRC16 (контролируя его после каждого "прожига")
Boris_R
Господа, поделитесь, пожалуйста, опытом программирования КМА200. Нигде не могу найти внятной информации. PDF не помогает. Сначала хочу прочитать EEPROM, чтобы случайно не затереть калибровочные константы.
Последовательность действий :
1 вхожу в режим команд (видимо здесь начинаются проблемы),
2 отправляю команду чтения (для первой ячейки – 0001000),
3 читаю 16 бит (1-я ячейка)
Может кто-нибудь опытным путем нашел оптимальное соотношение задержек.
Еще вопрос – как задать угловой диапозон работы датчика? Константы для начальной и конечной угловых точек должны находиться в ячейках 2 и 3, но что туда писать? Как задать напряжение в начальной точке при определенном положении магнита – опытным путем ? Не могу понять smile.gif
kreml
Цитата(Boris_R @ Oct 17 2009, 01:05) *
Господа, поделитесь, пожалуйста, опытом программирования КМА200. Нигде не могу найти внятной информации. PDF не помогает. Сначала хочу прочитать EEPROM, чтобы случайно не затереть калибровочные константы.
Последовательность действий :
1 вхожу в режим команд (видимо здесь начинаются проблемы),
2 отправляю команду чтения (для первой ячейки – 0001000),
3 читаю 16 бит (1-я ячейка)
Может кто-нибудь опытным путем нашел оптимальное соотношение задержек.
Еще вопрос – как задать угловой диапозон работы датчика? Константы для начальной и конечной угловых точек должны находиться в ячейках 2 и 3, но что туда писать? Как задать напряжение в начальной точке при определенном положении магнита – опытным путем ? Не могу понять smile.gif


В этой теме есть схема с прошивкой, 100% работает, сам проверял...
Особенность есть, при аереводе в командный режим, датчик автоматом выходит из него через кажеться 100мс. Чтобы отрубить режим автовыхода надо программировать Ctrl байт датчика. В той прошивке есть команда init, по ней датчик прошивается на spi и отрубается автовыход из ком. режима, после чего можно уже спокойно в ручном режиме переводить датчик в ком. режим, читать писать озу программировать пзу...
По поводу углов, а что там непонятно? в пдфке даже формула приведена для расчета значений этий байтов.
Ну например если нужен диапазон в 60 град: ang_rng[byte_03] = 60/0.00275 = 21818 [553Ah]
Boris_R
Цитата(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 мС –разве этого не достаточно, чтобы прочитать память? До углов поворота еще не добрался.
kreml
Цитата(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 это адрес.
Boris_R
Разобрался с чтением памяти КМА200.Хочу поделиться опытом.Информацию вывожу на ЖКИ, кнопкой на одном из портов просто "листаю" ячейки КМА,PIC16F876A, аппаратный SPI.Прилагаю часть программы где показаны инициализация и чтение ячейки. Пока не удается записать данные в память КМА.Кто разобрался с записью,поделитесь информацием.
Boris_R
Запись данных в КМА200. Аппаратный SPI на PIC16F876A. Изучаем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.