Контрольный байт для связи с акселерометром MMA7455L
|
|
somlich |
Дата: Сб, 18.08.2012, 02:13 | Сообщение # 16 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
35
Замечания:
±
На сайте с 23.02.2009
Статус:
Offline
|
Quote (DAlexV) Спокойствие, только спокойствие Так как малехо напутал, придется расхлебывать. Попробую написать имитатор MMA7455L пару-тройку активных регистров для отладки, тем паче что нашел библиотеку для работы I2C Slave. Сейчас изучаю, и ломаю. Так что могет и получится. Блин респект от меня. Жду с нетерпением.
|
|
|
|
DAlexV |
Дата: Сб, 18.08.2012, 11:56 | Сообщение # 17 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (DAlexV) Попробую написать имитатор MMA7455L пару-тройку активных регистров для отладки, тем паче что нашел библиотеку для работы I2C Slave. Сидел до глубокой ночи. Написал прием, отправку. Все было вроде замечательно. Адрес слейва $22. При замене на $1D начались проблемы. Слейв процессор не отправляет ACK. То есть если 0 бит приема (отправки) в slave =0 то ack формируется формируется, если 1 - нет. Забавно. + флаг прерывания по приему не сбрасывается, что то же вызывает сомнения. Будем полностью переписывать библиотеку на свой лад. Сегодня еще время есть. Желаю себе удачи
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
somlich |
Дата: Сб, 18.08.2012, 13:45 | Сообщение # 18 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
35
Замечания:
±
На сайте с 23.02.2009
Статус:
Offline
|
Quote (DAlexV) Желаю себе удачи Блин, я тоже желаю
|
|
|
|
DAlexV |
Дата: Сб, 18.08.2012, 23:37 | Сообщение # 19 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Вынос мозга гарантирован . Все банально просто оказалось. Где то далеко закрадывалось сомнение, что с адресацией что то намудрено, но не придал этому значения . Сравним рисунки, а именно протокол I2C и то что предлагает производитель акселя. здесь все стандартно, start, 6 бит адрес, R/W. ACK здесь вроде то же все стандартно, start, 6 бит адрес, R/W. ACK. Но при записи адреса($1D) происходит смещение и в итоге получается S 00011101 N, где последний бит получается 1 (R/W бит), и как следствие вместо записи адреса происходит чтение. А если взять число $1E (7 бит отправки - 0), тогда сигнал ACK нормально формируется. Вывод из этого - нестандартная адресация. Для чтения к адресу 11101($OD) добавить 0. Получиться 111010($3А) Для записи $3B соответственно.
Забавнее всего что промучился с этим вчера полночи, и сегодня почти весь день. Допер все таки сам, а надо было просто в Гугл залезть. http://www.ccsinfo.com/forum/viewtopic.php?t=38728 здесь указана правильная последовательность записи - чтения. somlich, если имитатор все таки будет нужен, свистни, завтра за день накидаю, теперь проблем точно не будет. А на сегодня все. Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
anatol |
Дата: Сб, 18.08.2012, 23:42 | Сообщение # 20 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (DAlexV) Берем кусок мануала на MMA7455L SINGLE BYTE WRITE To start a write command, the Master transmits a start condition (ST) to the MMA7455L, slave address ($1D) А картинку далее внимательно смотрел? Разряды адреса 6:0 и бит записи , т.е. как уже заметил phenomen на ..радиокоте http://radiokot.ru/forum/viewtopic.php?f=20&t=40352 Quote Есть одно НО! Адрес устройства в даташите надо ссунуть на 1 влево, поскольку в 0bXXXXXXXX биты - адрес устройства, а бит - флаг чтения или записи. И адрес устройства будет не 0x1D а 0x3A.
Сообщение отредактировал
anatol - Вс, 19.08.2012, 00:49
|
|
|
|
DAlexV |
Дата: Сб, 18.08.2012, 23:58 | Сообщение # 21 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (anatol) А картинку далее внимательно смотрел? Разряды адреса 6:0 и бит записи Да смотрел, думал что все прекрасно. Пока в адрес слейв устройства не установил $1D, от сюда и вся чехарда пошла. Приложил картинки. Они все объяснят. Adress $1D Adress $1E Не может 8 бит адреса быть 1. Это бит R/W. Нашел еще пару мест где указан именно адрес $3A и $3B. Ссылки привести ??? И ссылка на Кота не рабочая anatol
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
DAlexV |
Дата: Вс, 19.08.2012, 00:10 | Сообщение # 22 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
P/S. Маленькие дополнения. Еще один рисуночек добавлю
А вот и код
While true I2C.Start I2C.WriteByte($3A) I2C.WriteByte($03) I2C.WriteByte($aa) I2C.Stop DelayuS(50) Wend
И ссылка на адресацию I2C устройств от NXP http://www.classic.nxp.com/acrobat....IDE.PDF
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Вс, 19.08.2012, 00:23
|
|
|
|
anatol |
Дата: Вс, 19.08.2012, 00:54 | Сообщение # 23 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Ссылка на радиокот неправильно конвертировалась. А по битам 1D=00011101 Старший бит не используется = 0011101 добавляем младший бит (чтения или записи) и получим 00111010=3A 00111011=3B
|
|
|
|
DAlexV |
Дата: Вс, 19.08.2012, 07:25 | Сообщение # 24 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (anatol) 00111010=3A 00111011=3B Можно конечно и так. Главное результат. В последнее время все чаще и чаще попадаются описания с вот такими подвохами. Такое впечатление что с китайского переводили, они любят не заостряться на подробном описании протокола. Ведь если бы изначально правильно указали адрес (как например это делает Microchip), то меньше бы заморочек было. А по идеи производителю веришь
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
somlich |
Дата: Вс, 19.08.2012, 08:44 | Сообщение # 25 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
35
Замечания:
±
На сайте с 23.02.2009
Статус:
Offline
|
Спасибо за помощь, копаюся дальше
|
|
|
|