|
Эмулятор I2C eeprom на AVR, можно такое замутить? |
|
|
|
Dec 9 2009, 06:25
|

Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798

|
Есть микра NVP2010 в видеокамере, которая грузит настройки из внешней I2c епромки 24c16, дык вот есть идея заменить епромку на AVR в режиме i2c slave и меняя значения байт по указ. адресам в AVR, изменять настройки при старте главной микры. Можно такое организовать? Киньте примером, пожалуйста, если есть...
Прикрепленные файлы
NVP2010.rar ( 621.64 килобайт )
Кол-во скачиваний: 5508
--------------------
Разработчик
|
|
|
|
|
Dec 9 2009, 08:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
На вопрос "Можно ли", отвечу, можно сделать на АВР эмуляцию I2C еепром, примера дать не могу, скажу лишь, что проект был реализован с АтТини12, I2C делался софтово, написано было на асме.
Но у меня есть вопрос, а зачем такой изврат делать? Этот процессор судя по приаттаченному даташиту может управляться по I2C от внешнего контроллера, это и надо использовать. Только думаю, что надо более подробный даташит поискать где описан протокол.
--------------------
|
|
|
|
|
Dec 9 2009, 13:26
|

Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798

|
В том-то и дело, что это единственный ДШ с описанием регистров, сегодня, кстати уже успел поиграться с программированием ячеек 24c16 - поигрался с кучей настроек картинки (негатив, позитив, гамма, цветность, контрастность и еще куча). В описании на микру нигде не нашел, как перевести ее в I2C Slave (а хотелось бы, тогда все упрощается)
SasaVitebsk можете поделиться кодом, пожалуйста?
--------------------
Разработчик
|
|
|
|
|
Dec 9 2009, 14:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Можно обратиться к производителю с просьбой об даташите. На документах с сайта производителя нарисован опциональный 8бит контроллер на шине I2C. Да и в вашем описании написано что интерфей ЕЕПРОМ когда нет MICOM - это видимо какой то интерфейс. Я бы попробовал убрать ЕЕПРОМ и попробовать обратиться к чипу как к памяти, вот только в I2C протоколе предусмотрено поле для идентификатора устройства, оно дополняется полем адреса. А вот это значение то нам и неизвестно, но можно попробовать перебором, там всего 4 или 5 бит, если мне память не изменяет. Цитата В описании на микру нигде не нашел, как перевести ее в I2C Slave (а хотелось бы, тогда все упрощается) Подозреваю, что он после включения пытается прочитать ЕЕПРОМ, а в ней первые 4 байта должны содержать последовательность 0хАА, 0х55, 0хАА, 0х55. Есть вероятность что если он такой последовательности не примет, то он переключится в Слейв. P.S. Приаттаченный файл будет более интересен в плане понимания, там говорится о некоем адаптере и программке для ПК для выполнения настроек. P.P.S. Приаттачить не удалось. Ссылка на файл http://www.spectrum.com.tw/products%5Cnext...%5CNVP2000A.pdf
--------------------
|
|
|
|
|
Dec 10 2009, 13:05
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Попытался обрезать и упростить по максимуму. Естественно перенос, обрезание, правка "на живую", объединение из нескольких файлов в 1 немогло не сказаться.  Но в целом принцип должен быть понятен. Сам I2C Slave работал и на меге8, но у меня там ещё куча всего было, в том числе RC5, и, по-моему, таймеров не хватало. Поэтому - финишбыл на м88. У Вас для полной эмуляции памяти адрес должен быть, естественно, 0xA0.
Прикрепленные файлы
slv88.zip ( 1.81 килобайт )
Кол-во скачиваний: 86
|
|
|
|
|
Dec 11 2009, 08:57
|

Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798

|
Попробывал сегдня один фокус: отпаял епромку, подрубил мегу, в мегу залил код по перебору адресов и по входному ACK отлавливал, хто у меня на I2C шине сидит.....  Код for (var=0; var<255; var++) { iic_start(); addr = iic_send(var); iic_stop(); if (addr) printf("ACK at: %u\r\n", var); } Видео-микра, не найдя еепромки, перешла в слейв и ответила по след. адресам (знач. десятич) Код ACK at: 138 ACK at: 139 ACK at: 140 ACK at: 141 ACK at: 142 ACK at: 143 ACK at: 144 ACK at: 145 ACK at: 146 ACK at: 147 тобиш все четные адреса - это непосредственно адреса микры на запись, но почаму их так много? может это банки, как в еепроме?
--------------------
Разработчик
|
|
|
|
|
Dec 11 2009, 13:24
|

Местный
  
Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798

|
Попробывал сегодня писать в регистры видео-микрухи (в отсутствии еепром она Slave)... значение регистра почему-то устанавливается только с третьего раза и данные надо передавать сразу после сброса видео-микры, иначе она их потом не ловит... c задержками I2C игрался - один фих вот так можно записать регистр, но это фмефно... Код RST_LOW(); delay_ms(10); RST_HIGH(); for (i=0;i<3;i++){ iic_start(); iic_send(0x8A); //адрес микры iic_send(0x3F); // регистр тестовой картинки iic_send(0b01000000); //вывести тестовое изображение iic_stop(); }
Сообщение отредактировал Ivan Kuznetzov - Dec 11 2009, 13:25
--------------------
Разработчик
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|