Свежие обсуждения
Микроконтроллеры

Как электрически согласовать 2 микропроцессора-мастера шины i2c с 1 eeprom 24lcxx, если обе линии шины в нуле?

1 2

Есть устройство на микропроцессоре филипс и памятью 24хх. Нужно иметь доступ к памяти с другого микроконтроллера - чтение и запись. На линиях шины постоянно стоят нули, филипс только когда ему нужно, отпускает их, производит свои операции и снова устанавливает в 0. Подскажите, как можно реализовать доступ к шине в те моменты, когда главный мк молчит? Врезать компоненты возможность есть.

 

Ну поставьте в разрыв каждой линии 2ИЛИ и творите любой беспредел. Это что, защита у них такая? Вроде бы стандартно на линиях должен быть ОК или ОС.

 

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

added: если есть доступ к коду, то сделать нормальный мультимастер.

 

GM:
Ну поставьте в разрыв каждой линии 2ИЛИ и творите любой беспредел.
Извиняюсь, что-то не совсем идею понял. Как в двунаправленную линию поставить 2ИЛИ?

 

Можно попробовать на вовремя обращения от дополнительного контроллера на основной (филипс) подать сигнал RESET.

 

AlexM: Можно попробовать на вовремя обращения от дополнительного контроллера на основной (филипс) подать сигнал RESET.
1. Вряд-ли нужно прерывать работу его программы.
2. Не факт, что он ноги отпустит

 

1. А как вы определяете моменты "молчания" главного МК? По наличию нулей на шинах? Так они и в процессе обмена могут в такое состояние попадать. И вообще, как протокол i2c может работать с нулями на шинах? Как такое вообще может быть? Как он старт-последовательность будет ловить?
2. А если в процессе обмена между памятью и другим микроконтроллером Филипс "проснется"? Что вы ему ответите? И как он на ваш ответ отреагирует? Те, кто писал для него прогу, наверняка не предполагали, что такое возможно. Или есть гарантия, что такого случая не может быть?
3. А просто скопировать содержимое EEPROM нельзя? Нужно непременно разделяемую память?

 

chav1961: И вообще, как протокол i2c может работать с нулями на шинах?

Засадил мастер на ноль - всем молчать. как только отпустит, сразу генерит стартовое условие. Конечно, так не пишут, но это вполне будет работать.

chav1961: А если в процессе обмена между памятью и другим микроконтроллером Филипс "проснется"? Что вы ему ответите?

Кешированное своим контроллером значение.

chav1961: А просто скопировать содержимое EEPROM нельзя? Нужно непременно разделяемую память?

Примерно так я и предложил. Типа прозрачного прокси.

 

Gregory: GM:Ну поставьте в разрыв каждой линии 2ИЛИ и творите любой беспредел.
Извиняюсь, что-то не совсем идею понял. Как в двунаправленную линию поставить 2ИЛИ?

Вы правы, не то сказал, хотя I2C не совсем двунаправленная. Считается, что клоки идут от мастера к слейву, хотя на самом деле в мастере стоит ОК и в слейве стоит приёмник клоков. Далее, считается, что данные могут идти от мастера к слейву и наоборот. На самом деле на шине данных имеется ОК в мастере и ОК в слейве и приемник с пуллап резистором на входе. При передаче данных в слейв ОК слейва отключен от линии, при передаче данных из слейва - отключен ОК мастера.

Так что 2ИЛИ можно подключить в разрез только шины клоков, а в шину данных надо врезать двунаправленный мультиплексор.

 

4053 и не париться с кодом только подтяжка на каждом выходе и выходах своя по10-15к пулап