Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.05.2012, 14:46
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
AMIS-30624
Здравствуйте. Не могу разобраться с AMIS-30624.
В английском не силен, поэтому очень сложно разбирать даташит.
есть несколько вопросов.
1. Во-первых как определить адрес этого устройства на шине i2с?
2. Высокоуровневые команды типа SetMotorParam или GetFullStatus1. Их можно давать напрямую как-то по шине i2c? или просто отправлять байт команды?
Или сами команды просто написаны для понимания процесса?
3. Какой формат команды? Просто последовательность байт в шину?
Не понятно как выбирать Vmax Vmin из таблицы и главное, что такое SecPos с его 11 битами.
Использую arduino в качестве контроллера.
Извините очень много вопросов. Я начинающий.
Спасибо!
Вот ссылка на даташит
http://www.onsemi.ru.com/pub/Collateral/30624-D.PDF
|
|
|
Сказали "Спасибо" nefilim
|
|
|
03.05.2012, 19:47
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: AMIS-30624
HW нога микросхемы нужна для:
1. Задания младшего бита для I2C адреса
2. AMIS-3062 проверяет состояние HW ноги на обрыв, то есть если сначала было соединение в землёй или питанием для лог0 или лог1, то при обрыве, например, кабеля управления нога HW подвиснет в воздухе, и это тут же зафиксируется AMIS-3062.
В случае обрыва ноги HW мотор возвращается в безопасное положение SecPos, 11 битов регистра SecPos определяют старшие биты безопасного положения Pos[15:0]
Величины Vmin и Vmax задаются командой SetMotorParam, байт Data4. Конкретные скорости берутся из таблицы 7, например Vmax=0x00 соответствует скорости 99 шагов в секунду, а Vmax=0x0f - 973 шагов в сек.
Последний раз редактировалось Yurkin2007; 03.05.2012 в 20:10.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
|
|
|
04.05.2012, 00:08
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Уважаемый Yurkin2007, спасибо за разъяснения. Хоть на одном форуме нормально, на пальцах получил ответ.
Если Вам не сложно, у меня еще будет масса вопросов. Не сочтите за сложность помочь разобраться в этом девайсе.
Все-же по поводу команд. Это просто записи для понимания, а данные шлем по шине исходя из битовых комбинаций, или можно как-то высокоуровнево давать команды с параметрами?
Скажем GetFullStatus1 - шлем по шине 0x81 и получаем в ответ 8 байт. Или можно дать команду GetFullStatus1 ? Извините. Очень сложно с нуля...
Вот кусок кода для Arduino:
Wire.beginTransmission(0);
Wire.write(0x89); // Команда SetMotorParm
Wire.write(0xff);
Wire.write(0xff);
Wire.write(0xfe); // Irun / Ihold
Wire.write(0xff); // Vmax / Vmin (не разобрался как выбирать)
Wire.write(0xff); // SecPos / Shaft/ ACC
Wire.write(0xff); // SecPos
Wire.write(0xff); // остальное
Wire.endTransmission();
Еще раз спасибо за разъяснения!!!!!
|
|
|
Сказали "Спасибо" nefilim
|
|
|
04.05.2012, 02:07
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: AMIS-30624
Сообщение от nefilim
|
Все-же по поводу команд. Это просто записи для понимания, а данные шлем по шине исходя из битовых комбинаций,
|
Именно так. Команда в данном случае - это набор действий, которые надо совершить.
Если хотите, то можете оформить каждую команду в виде высокоуровневой процедуры.
Например, адрес Вашей AMIS-3062 есть DEVICEADDRESS. Тогда функция чтения статуса
PHP код:
|
void MyGetFullStatus1() { int itmp;
Wire.beginTransmission(DEVICEADDRESS); Wire.write(0x81 ); // код команды GetFullStatus1 Wire.endTransmission();
delay(5);
Wire.requestFrom(DEVICEADDRESS, 8); if (Wire.available()) Wire.read(); // первый байт - возвращает свой адрес DEVICEADDRESS if (Wire.available()) itmp = Wire.read(); Ihold = itmp & 0x0f; Irun = itmp ›› 4;
if (Wire.available()) itmp = Wire.read(); Vmin = itmp & 0x0f; Vmax = itmp ›› 4;
и т.д. }
|
Ну, а потом вызывайте эту созданную Вами функцую MyGetFullStatus1() на высоком уровне, где нужно, уже не думая о протоколе I2C и байтах. Эта функция будет обновлять значения переменных Irun, Ihold, Vmin и Vmax, например.
Последний раз редактировалось Yurkin2007; 04.05.2012 в 02:15.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
|
|
|
04.05.2012, 15:38
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Yurkin2007, Спасибо большое за ответы. С программированием проблем вроде нет, а вот по поводу даташита думаю будет еще масса вопросов.
Большое вам спасибо за помощь.
|
|
|
Сказали "Спасибо" nefilim
|
|
|
04.05.2012, 23:40
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Yurkin2007, Скажите пожалуйста. Для того чтобы проверить работу чипа достаточно записать значения Irun и Ihold, после чего дать команду Runvelocity?
Я правильно понял. Это необходимый минимум. Отальные параметры по умолчанию. И должен крутить?
Но что-то молчит моторчик. Правда я питание взял с Ардуны. Может ему мало?
|
|
|
Сказали "Спасибо" nefilim
|
|
|
05.05.2012, 01:23
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: AMIS-30624
Сообщение от nefilim
|
достаточно записать значения Irun и Ihold, после чего дать команду Runvelocity?
|
А с какой скоростью ему крутиться? Vmin и Vmax записали?
Попробуйте записать новую позицию SetPosition(). Должен переехать на новую позицию и остановиться.
Сообщение от nefilim
|
Правда я питание взял с Ардуны. Может ему мало?
|
Я не знаю, мне отсюда не видно.
|
|
|
Сказали "Спасибо" Yurkin2007
|
|
|
10.05.2012, 01:26
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Ув. Yurkin2007, снова нужна ваша помощь.
команда GetFullStatus1 имеет какое-то ключевое значение?
Какие-то странности. Если не дать команду GetFullStatus1 то двигатель не вращается, регистры не обновляются.
Runvelocity не работает без команды GetFullStatus1
Даже GetFullStatus2 показывает значения нулевые, если перед ней не дать GetFullStatus1. Это так нужно?
И еще. SetPosition устанавливает сразу 2 значения: TagPos и ActPos. Соответственно мотор не вращается.
Спасибо.
|
|
|
Сказали "Спасибо" nefilim
|
|
|
25.05.2012, 00:19
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Ребята помогите разобраться со SetStallParam.
Не могу разобраться как правильно выбирать значения
MinSamples AbsThr DelThr
А назначения FS2StallEn DC100StEn PWMJEn вообще понять не могу.
|
|
|
Сказали "Спасибо" nefilim
|
|
|
26.05.2012, 12:26
|
|
Частый гость
Регистрация: 03.05.2012
Сообщений: 10
Сказал спасибо: 3
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: AMIS-30624
Неужели ни кто просто перевести не может?
Уперся в эти переменные и ....
Ув, Yurkin2007, где же вы?
|
|
|
Сказали "Спасибо" nefilim
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:57.
|
|