На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 52,
участников - 12 [ SLB_MN, ra3tmo, СЦБист, xman, Pavlik, Dubai, genius, sibirjac, Атлас, wazzoo, sasha555, gladiator]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Главный раздел —› Разъём DATA IN в Sangean ATS 909. Информация -> Идеи -> Решения? 
Новая линейка радиостанций Hytera в нашем магазине


Hytera TC-320
руб.

Hytera TC-508
руб.

Hytera TC-580
руб.

Hytera PD-355
руб.

Hytera X1E
руб.
Автор Сообщение
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:46:27 · Поправил: siarzhuk (15 Сен 2012 19:02:13) #  

Добрый вечер, дорогие радиослушатели!

В сегодняшней передаче мне хотелось бы поговорить о подключении радиоприёмников Sangean ATS 909 к компьютеру используя гнездо DATA IN A/B. Гнездо это, нужно признать, интригует владельцев аппарата уже добрый десяток лет. Полагаю всем и так уже известно, что предназначено оно для перепрограммирования списка радиостанций на предприятии-изготовителе, что обмен идёт по протоколу I2C, и что даже была когда-то возможность покупки такого кабеля вкупе с программой-загрузчиком от испанского мастера Томаса Рамиреса (Tomas Ramirez) сайт которого, к сожалению, на данный момент больше недоступен. Впрочем подробности этого варианта мы обсудим немного позже а сейчас пару слов о том, почему и зачем я решил создать эту тему. Надеюсь администрация учтёт важность вопроса и некоторую полезность нижеприведенной информации для сообщества и оставит тему в живых. ;-)
Пару недель назад решил я докопаться до причин температурно-зависимых отключений полезного сигнала на АМ диапазонах. Отключения эти мучили меня каждое лето. Полторы недели поисков, замеров, постукиваний, почёсываний затылка и изучения сервисного руководства всё-же привели меня к успеху. Злостный конденсатор-электролит в цепи АРУ был выпаян, залужен и туго запаян обратно. Такое вразумление пошло ему на пользу а меня высвободило для приятных грёз о том как обновлённый список станций будет заливаться в EEPROM приёмника одним щелчком мыши.
И вот как-то в пятницу вечером, прихватив с работы монитор шины I2C Tracii 2.0 XL и собрав для него соединительный кабель из старого хвоста PS/2 мышки, двух скрепок и трёхмиллиметрового аудио-штеккера (чтобы добыть «землю» из Line-In), приступил я к наблюдениям. Воздавая хвалу создателям замечательной железяки и получая удовольствие от распутывания следов в EEPROM-е я кое что выяснил о том как и где хранятся названия станций, частоты и всякая мелочь вроде будильников. Также удалось выяснить что происходит при отработке DATA IN/DATA OUT запросов и на чём основана работа уже упомянутого ATS 909 Programmer-а. Полученная информация показалась мне достаточно полезной, чтобы быть обнародованной. Надеюсь и вы найдёте её интересной. И хотя она не дает нам пока готового решения – я очень надеюсь, что эта публикация и вероятное её обсуждение позволит выработать реальный вариант решения проблемы. В том числе и на основе вашего опыта.

В цикле заметок я собираюсь осветить следующие вопросы

1. Исходные данные экспериментов
2. Структура EEPROM
3. Выгрузка и загрузка дампа EEPROM
4. Эксперименты в режиме I2C Master
5. Мысли вслух о реализации интерфейсного кабеля

1.Исходные данные экспериментов
Наблюдение производилось над классическим приемником Sangean ATS 909 приобретённым в июле 2002 года в Германии. Это не модель 909w и не 909Х – их владельцам следует иметь ввиду, что структура EEPROM может зависеть от версии прошивки микроконтроллера и любая модификация чревата. Также не нужно доверять надписям SCL / SDA в схеме из сервисного мануала – они перепутаны местами, соответственно A это тактовая линия SCL а B – линия данных SDA. Если не верите - присмотритесь к надписям у соответствующих выходов IC309. Кроме того в моём экземпляре приемника в качестве микросхемы EEPROM используется CSI 24WC0116J а не Xicor x24164. И ещё – сигнал низкого уровня на линии SCL несколько завышен – так что для устойчивого распознавания данных пришлось поднастраивать программу-монитор шины I2C.

Продолжение следует ...
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:48:29 · Поправил: siarzhuk (15 Сен 2012 18:58:26) #  

2.Структура EEPROM
Прошу учесть, что нижеследующее описание не следует строго тому порядку в каком блоки данных находятся в памяти EEPROM. Я намеренно сгруппировал информацию по признаку использования блоков данных для более ясного описания, хотя общая последовательность блоков в EEPROM выдержана. Впрочем, для тех, кто знаком с С-подобными языками программирования будет, видимо, проще обратиться к чёткому описанию структуры EEPROM, что находится в заголовке EEPROM.h по адресу
http://dotmatrix4beos.cvs.sourceforge.net/viewvc/dotmatrix4beos/ATS909Hog/ . Там же можно найти и примеры данных EEPROM, реконструированных из логов i2c трассировщика. Кстати аts909-org.bin содержит одигинальную немодифицированную версию EEPROM.

2.1 Имена станций и страниц SW диапазона

0х000-0х24F: Первый блок данных содержит имена станций. Под каждое отводится 8 байт. В именах станций используются символы: от A до Z (0х41-0х5А), от 0 до 9 (0х30 – 0х39) а также апостроф (0х27), запятая(0х2C), тире (0х2D), точка(0х2E), косая черта(0х2F) и символ @ (0х40). Последний интерпретируется приемником как пробел и используется в качестве пробела – например при редактировании названия города задаваемого пользователем. Блоки имён идут в следующем порядке и без пропусков: 18 имён для FM, 18 имен для MW, 29 имён для названий страниц SW, 9 имён для LW.

2.2 Частоты
0х250 – 0х274: Массив из 18 частот диапазона FM по два байта на каждую. Формат Low Endian. Шаг 10 кГц.
0х280 – 0х2А4: Массив из 18 частот диапазона MW по два байта на каждую. Формат Low Endian. Шаг 1 кГц.
0х2B0 – 0х2C2: Массив из 9 частот диапазона LW по два байта на каждую. Формат Low Endian. Шаг 1 кГц.
0х300 – 0х692: Массив из 29 страниц с частотами диапазона SW. Каждая частота представлена двумя байтами. Формат Low Endian. Шаг 1 кГц. Каждая страница – массив из 9 частот, за которым следует 14 байт заполненых нулями – для выравнивания по 16-байтовой границе – видимо для упрощения доступа.

2.2.1 Частота

Частота хранится в двух байтах в Low Endian формате. Для AM диапазонов шаг 1 кГц, для FM диапазона – 10 кГц. Бит 15 (верхний) установлен если частота залочена и сброшен если не залочена.

2.3 Информация о SSB режиме и точной настройке частот AM диапазонов
0x2D0 – 0x2D9: Массив из 9 байт для каждой сохраненной станции диапазона LW.
0x2E0 – 0x2F2: Массив из 18 байт для каждой сохраненной станции диапазона MW.
0x6A0 – 0x7A5: 29 массивов по 9 байт каждый для станций диапазона SW.

2.3.1 Информация о SSB и смещении точной настройки
Каждый байт данных из предыдущего раздела может содержать:
Биты 5 – 0: смещение точной настройки. 24 (25?) шага по 46(6) (40?) Hz каждый. Полной ясности как это работает пока нет – прокручивание валкодера «вверх» уменьшает шаг. Соответственно значение счетчика меняется от 0x18 до 0x00. Значение по умолчанию 0xC.
Бит 7: 1 - SSB режим включен, 0 – SSB выключен.
Бит 6: 1 - USB режим, 0 – LSB режим.
Бит 5: предназначение пока неизвестно, но для чего-то видимо используется – поскольку встречался у меня в дампе EEPROM.

Продолжение следует ...
Реклама
Google
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:51:56 · Поправил: siarzhuk (15 Сен 2012 18:59:20) #  

2.4 Часовые пояса
0x7B0 – 0x7BE: 15 байт хранящие имя часового пояса заданного пользователем.
0x7BF: 1 байт: бит 4:1 – используется часовой пояс World, 0 – часовой пояс Home.
0x7C6: 1 байт – индекс часового пояса для World.
0x7C7: 1 байт – индекс часового пояса для Home.
0х7CA – 0x7CF: 6 байт: битовый массив хранящий настройку летнего времени для каждого из 43 часовых поясов.

2.4.1 Индексы часовых поясов

Название: индекс // смещение в часах
USERCITY: 0 // пояс задаваемый пользователем
ADELAIDE: 1 // +9:30
AMSTERDAM: 2 // +1
ANCHORAGE: 3 // -4
ATHENS: 4 // +2
AUCKLAND: 5 // +12
BANGKOK: 6 // +7
BEIJING: 7 // +8
BERLIN: 8 // +1
BUENOSAIRES: 9 // -3
CAIRO: 10 // +2
CARACAS: 11 // -4
CHICAGO: 12 // -6
COLOMBO: 13 // +5:30
DACCA: 14 // +6
DENVER: 15 // -7
DUBAI: 16 // +4
HONGKONG: 17 // +8
HONOLULU: 18 // -10
JEDDAH: 19 // +3
KARACHI: 20 // +5
LONDON: 21 //
LOSANGELES: 22 // -8
MADRID: 23 // +1
MEXICO: 24 // -6
MOSCOW: 25 // +3
NEWDELHI: 26 // +5:30
NEWYORK: 27 // -5
NOUMEA: 28 // +11
PARIS: 29 // +1
ROME: 30 // +1
SAOPAULO: 31 // -3
SEOUL: 32 // +9
SINGAPORE: 33 // +8
STOCKHOLM: 34 // +1
SYDNEY: 35 // +10
TAIPEI: 36 // +8
TEHRAN: 37 // +3:30
TOKYO: 38 // +9
TORONTO: 39 // -5
VANCOUVER: 40 // -8
VIENNA: 41 // +1
ZURICH: 42 // +1

2.5 Таймеры и приоритетная станция
0x7C0 – 0x7C5: время таймеров: 3 блока по два байта каждый. Первый байт блока – минуты, второй – часы.
0x7D0 – 0x7DB: массив из трёх элементов по 4 байта каждый, хранящие соответсвенно настройки для трёх таймеров.
0x7DC – 0x7DF: 4 байта: настройки приоритетной станции.

2.5.1 Структура настроек таймера
Первые два байта – частота. Подробнее смотрите раздел 2.2.1.
Затем следует байт SSB режима и смещения. Подробнее смотрите раздел 2.3.1.
Завершающий байт содержит настройки таймера:
Биты 1-0: диапазон: 00b (0) – LW, 01b (1) – FM, 10b (2) – MW, 11b (3) – SW.
Бит 7: 1 – таймер активен, 0 – таймер не активен.
Бит 6: 1 – используется радио-таймер, 0 – используется тональный будильник (buzzer)
Бит 3: 1 – частота таймера находится в пределах вещательного диапазона, 0 – частота вне пределов вещательного диапазона. Фактически этот бит может быть сброшен только в SW диапазоне на частотах, находящихся вне вещательных диапазонов.

2.5.2 Структура настройки приоритетной станции
В диапазонах LW, MW, FM аналогична настройкам таймера за исключением того, что бит «частота в вещательном диапазоне» всегда сброшен. Подробнее смотрите описание в разделе 2.5.1. Для SW диапазона байт «SSB режима и смещения» хранит номер одной из 29-ти страниц SW диапазонов (смотрите раздел 2.1).

2.6 Другая информация EEPROM

Следующие блоки содержат информацию, предназначение которой на данный момент остается мне неизвестным. Однако содержимое этих блоков восстанавливается микроконтроллером в процессе выполнения процедуры RESET. Т.е. какую-то роль они всё же играют. Но обращения к ним в процессе моих экспериментов с трассировщиком i2c траффика не замечено.
0x7F0 – 0x7FF: Содержит строку «SANGEANATS909». Вероятно является индикатором модели приемника.
0x7C8 – 0x7C9: Предназначение неизвестно.
0x7E0 – 0x7EE: Предназначение неизвестно.

2.6.1 Пустые блоки EEPROM

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

Продолжение следует ...
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:52:46 · Поправил: siarzhuk (15 Сен 2012 18:59:53) #  

3 Выгрузка и загрузка EEPROM.
Настойчиво рекомендую прочесть этот раздел до конца прежде чем пробовать описанные в ней манипуляции! В противном случае вы рискуете быть сильно раздосадованым тем фактом, что кропотливо собираемые в течение многих лет настройки станций будут утеряны безвозвратно. Этим я хочу сказать, что за последствия бездумного использования нижеприведенной информации «редакция» ответственности не несёт!

3.1 Адресация EEPROM

В радиоприемнике используется EEPROM на 2048 байт организованных в 8 страниц по 256 байт каждая. Базовый адрес на шине i2c 0x50. Таким образом адресное пространство данных 0х5000 – 0х57FF.

3.2 Выгрузка EEPROM

Если вы читали описание ATS909 Programmer-а то могли заметить, что для своей работы он требует нажать определённые последовательности кнопок. Согласно http://www.davidmoisan.org/radio/sangean/909memory.html для того, чтобы сгрузить данные EEPROM нужно:
1. Перейти на диапазон FM;
2. Одновременно нажать кнопки FM и Light (подсветка). Возможно несколько раз;
3. На дисплее приемника появится надпись: DATA OUT;
4. В течение двух секунд вы должны нажать кнопку Enter (ввод);
5. Через некоторое время на дисплее появится надпись VERIFY;
6. Затем появится надпись FAILED.

По информации i2c трассировщика этапу DATA OUT (после нажатия Enter) соответствует чтение страниц EEPROM с первой (0x5000) по восьмую (0x5700) и запись их по адресам от 0х5800 до 0x5F00 соответственно. Т.е. сначала читается страница из EEPROM радиоприемника, затем она записывается на т.н. «внешний» EEPROM который предполагается подключенным к шине через контакты DATA A/B и имеющим адресное пространство 0x5800 – 0x5F00. Эта операция повторяется для всех восьми страниц памяти. Вероятно у вас возникнет резонный вопрос – а как собственно оно пишет на несуществуюший EEPROM. Данный факт меня тоже озадачивает и к его рассмотрению мы ещё вернёмся. Как бы то ни было – трассировщик показывает нам, что вся «запись» проходит успешно.
На этапе VERIFY происходит чтение страниц из EEPROM радиоприемника и из «внешнего» EEPROM и сравнение содержащихся в них данных. Если сравнение прошло успешно – операция повторяется для следуюших страниц, в противном случае высвечивается надпись FAILED. Замечу что данное утверждение было подтверждено экспериментально – на i2c трассировщике был включен т.н. Slave Mode memory emulation для 256 байт с базовым адресом 0х58. Сравнение первой страницы прошло успешно. В штатном же режиме с этого несуществующего «внешнего» EEPROM «читаются» страницы заполненные байтами со значением 0xFF – т.е. пустые.

Продолжение следует ...
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:53:47 · Поправил: siarzhuk (15 Сен 2012 19:00:25) #  

3.3 Загрузка EEPROM
А вот эта операция реально опасна для коллекции частот в вашем приёмнике – не применяйте её, по крайней мере пока не найден способ эмуляции «внешнего» EERPOM или ещё какой способ сохранить резервную копию. А дорогая «редакция» в очередной раз умывает руки.
Согласно http://www.davidmoisan.org/radio/sangean/909memory.html для того, чтобы зарузить данные в EEPROM вашего приёмника нужно:
1. Перейти на диапазон LW;
2. Одновременно нажать кнопки LW и Light (подсветка);
3. На дисплее приемника появится надпись: DATA IN;
4. В течение двух секунд вы должны нажать кнопку Enter (ввод);
5. Через некоторое время на дисплее последовательно появятся надписи VERIFY, OK, ROM DUMP, VERIFY, ROM OK;

К сожалению сопоставить надписи с траффиком на i2c шине в этом случае значительно сложнее, но некоторые догадки можно сделать. Хотя впрочем это и не так важно.
Итак, после нажатия Enter, DATA IN процесс начинается чтением страниц памяти с «внешнего» EEPROM с адресов, 0x5800, 0x5900, .., 0x5F00 и записью их соответственно по адресам 0x5000, 0x5100, .., 0x5700 в EEPROM приёмника. Как я уже описал выше, в моем случае при чтении с «внешнего» EEPROM полученные данные представляют из себя байты со значением 0xFF. Таким образом в результате такой операции EEPROM радиоприемника оказывается зачищен и все данные с него утеряны безвозвратно.
Затем производится проверка, аналогичная уже описанному в предыдущем разделе этапу VERIFY и, поскольку на «внешнем» EEPROM и на EEPROM приёмника всё заполнено байтами 0xFF – то и процедура завершается сообщением OK.
После этого по адресу 0x57F0 (EEPROM приёмника) читается 12 байт – то, что мы в разделе 2.6 назвали идентификатором приемника. Читается два раза. В обоих случаях там байты 0xFF. Вероятно, контроллер наконец понимает, что данные ЕЕПРОМ либо некорректны, либо EEPROM пуста и перезаписывает все 8 страниц информацией по умолчанию, очевидно хранящейся где-то в его (микроконтроллера) памяти. Полагаю это и есть операция идентифицируемая как ROM DUMP.
Затем следует очередная верификация (VERIFY) – данные из EEPROM вновь читаются постранично и, судя по всему, сравниваются с копией из микроконтроллера – поскольку трассировщик дает информацию лишь о чтении по адресам с 0x5000 по 0x5700. Проверка завершается сообщением ROM OK.

3.4 Что-же делал ATS909 Programmer?
Опираясь на вышеприведенную реконструкцию можно с большой долей уверенности утверждать, что аппаратный комплекс ATS909 Programmer от Томаса Рамиреса играл роль «внешнего» EEPROM на 2048 байт с базовым адресом 0x5800. И задачу воссоздания его на современной аппаратной базе можно формализовать как «реализацию I2C Slave устройства с EEPROM-подобным интерфейсом ёмкостью 2048 байт с возможностью чтения и модификации этой памяти с ПК.» К сему предполагается ПО с возможностью считать блок данных EEPROM, изменить сообразно вкусам пользователя и записать его обратно в устройство.

4. Эксперименты в режиме I2C Master
Кроме варианта эмуляции «внешнего» EEPROM сам собой напрашивается способ непосредственной работы с чипом памяти по интерфейсу I2C. В этом случае внешнее устройство должно выступать в режиме Master. I2C трассировщик, который я использовал в своих экспериментах имеет некоторые рудиментарные возможности по управлению устройствами в режиме мастера. Попробовал и я почитать EEPROM непосредственным к нему обращением. К сожалению дальше посылки байта адреса устройства дело не пошло - мой мастер не получал требуемого подтверждения (ACK) от чипа EEPROM как будто на шине его нет. Ни подбор частоты и напряжения, ни закорачивание резисторов R373, R374 к успеху не привели – чип упорно не желает общаться с моим мастером. Я, впрочем, надеюсь что виной всему особенности генерации сигналов i2c трассировщиком и с другим железом взаимодействие станет возможным. Время покажет.
Тут самое время вспомнить о той странности, о которой я обещал рассказать описывая процесс выгрузки дампа EEPROM в разделе 3.2. Дело в том, что согласно спецификации I2C каждый переданный байт должен быть подтверждён приемником (ACK) – путём удержания последним линии SDA на низком уровне в течение девятого такта SCL. И вот при записи данных по адресам «внешнего» EEPROM (0x5800 – 0x5FFF) всё выглядело так, что линия SDA оставалась в низком состоянии в этом случае – как будто устройство и на самом деле дает подтверждение. Но такового устройства в моём случае не было. Отсюда я склонен сделать вывод, что этот псевдо-ACK есть результат работы самого контроллера который в логе трассировщика выглядит как нормальное здоровое подтверждение (ACK).
Таким образом вопрос возможности непосредственной работы с EEPROM в режиме мастера остается открытым.

Окончание следует ...
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 15 Сен 2012 18:56:53 · Поправил: siarzhuk (15 Сен 2012 19:01:02) #  

5. Мысли вслух о реализации интерфейсного кабеля
Хочу предупредить, что схемотехнику я не изучал и профильное образование у меня вообще в другой области. Потому нижеследующие суждения и предлагаемые решения покажутся скорее всего неквалифицированными и наивными за что заранее прошу вашего снисхождения. Да и как я уже писал, цель этого цикла заметок не описание готового решения, а инициирование дискуссии в ходе которой подобное решение может быть выработано коллективным разумом.

5.1 Вариант эмуляции «внешнего» EEPROM.

Насколько я помню, в ATS909 Programmer-е использовался кабель для LPT порта, что на современном фоне развития техники уже неактуально просто в силу исчезновения подобных интерфейсов из современных ПК. Варианты с переходниками USB-LPT также маловероятны в силу того, что работа в режиме I2C Slave требует достаточно быстрой реакции системы, чего при USB интерфейсе добиться, как мне кажется, сложно. Да и непосредственно управлять линиями на LPT под современными операционными системами вряд-ли возможно. В голову приходит автономный вариант на микроконтроллере, имеющем на борту место для промежуточного хранения 2 килобайт данных и некий интерфейс (USB?) для доступа к этим данным с ПК.
Ваши варианты?

5.2 Вариант с непосредственным доступом к EEPROM по шине I2C
Сулит большую гибкость в использовании, сохранение ресурса перезаписи EEPROM и не напрягает пользователя требованиями нажимать комбинации кнопок на радиоприёмнике. К сожалению пока даже теоретическая возможность этого способа находится под вопросом. Но я надеюсь, что приведенная информация всё-же сподвигнет кого-нибудь ещё попытать счастья на шине I2C с другим типом контроллера.

Спасибо за внимание!

15.09.2012
При перепечатке просьба ссылаться на Siarzhuk Zharski <imker@gmx.li>
siarzhuk
Участник
Offline1.1
с апр 2006
Berlin-Minsk
Сообщений: 14

Дата: 10 Мар 2015 14:28:17 · Поправил: siarzhuk (10 Мар 2015 14:29:08) #  

И снова здравствуйте!

Сам спрашивал, сам-же и отвечаю. :-)

5.1 Вариант эмуляции «внешнего» EEPROM.
Насколько я помню, в ATS909 Programmer-е использовался кабель для LPT порта, что на современном фоне развития техники уже неактуально просто в силу исчезновения подобных интерфейсов из современных ПК. Варианты с переходниками USB-LPT также маловероятны в силу того, что работа в режиме I2C Slave требует достаточно быстрой реакции системы, чего при USB интерфейсе добиться, как мне кажется, сложно. Да и непосредственно управлять линиями на LPT под современными операционными системами вряд-ли возможно. В голову приходит автономный вариант на микроконтроллере, имеющем на борту место для промежуточного хранения 2 килобайт данных и некий интерфейс (USB?) для доступа к этим данным с ПК.


Подобный вариант реализован вашим покорным слугой с использованием готовой платы расширения Devantech USB-GPIO12 на Microchip PIC18F14K50 с заменой двух пуллап резисторов на линиях I2C. Использованный микроконтроллер не имеет достаточного объёма RAM для хранения всего буффера потому обеспечивает лишь промежуточный буфер для приёма одного блока (256 байт страницы EEPROM) данных от радиоприёмника и передаёт его по USB интерфейсу программе-редактору на ПК. Проект с открытым кодом - все материалы доступны для загрузки на его домашней странице: http://ats909hoggy.sourceforge.net

5.2 Вариант с непосредственным доступом к EEPROM по шине I2C
Сулит большую гибкость в использовании, сохранение ресурса перезаписи EEPROM и не напрягает пользователя требованиями нажимать комбинации кнопок на радиоприёмнике. К сожалению пока даже теоретическая возможность этого способа находится под вопросом. Но я надеюсь, что приведенная информация всё-же сподвигнет кого-нибудь ещё попытать счастья на шине I2C с другим типом контроллера.


Не прошло и два года как я всё-таки полез с тестером в цепи подключения МС EEPROM и обнаружил что схема подключения из сервис-мануала несколько подвирает: http://ats909hoggy.sourceforge.net/909memory-rev-sz.gif - т.е. между выходами A/B лежит не одна пара резисторов а две - и "уложить" соотвествующие линии I2C интерфейса на землю если процессор этого не хочет - судя по всему проблематично. Проброс линий непосредственно на входы микросхемы EEPROM конечно-же позволил общаться с ней напрямую - но модификация приёмника не входила в число допустимых условий решаемой задачи.

Некоторые высянившиеся по ходу разбирательств дополнения:

2.6 Другая информация EEPROM
Следующие блоки содержат информацию, предназначение которой на данный момент остается мне неизвестным. Однако содержимое этих блоков восстанавливается микроконтроллером в процессе выполнения процедуры RESET. Т.е. какую-то роль они всё же играют. Но обращения к ним в процессе моих экспериментов с трассировщиком i2c траффика не замечено.
0x7F0 – 0x7FF: Содержит строку «SANGEANATS909». Вероятно является индикатором модели приемника.
0x7C8 – 0x7C9: Предназначение неизвестно.
0x7E0 – 0x7EE: Предназначение неизвестно.


Байты 0x7C8 и 0x7C9 хранят соотвественно длину строки пользовательского часового пояса и его смещение заданное в полу-часах. Отрицательные смещения задаются добавлением +24.

Спасибо за внимание!
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.019; miniBB ®