Автор Тема: Почему на некоторых ККМ не работают ЭКЛЗ от "Научные приборы"  (Прочитано 29650 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Народ, кто имеет возможность посмотреть схемы ККТ на которых НП-ЭКЛЗ не работает.
Посмотрите, не сидит ли на этой-же i2c шине другое устройство самой ККТ.
Похоже НП-ЭКЛЗ вылазит со своей информацией не в своё время.
Т.е. когда ККТ общается с другим устройством и в информации присудствует код "05н", ЭКЛЗушка начинает сеанс ответа, и соответственно загаживает шину.
Вот такие подозрения.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Подозрения не новы, часто не только НП, но и безантовские клизмы, бывает,  работают из-за этого некорректно, Торквадер тоже об этом писал. Но можно сравнить для примера Орион 100К и Орион 110К. На Орион 100К НП-ЭКЛЗ прекрасно работает, хотя на одной шине сидят таймер, фискалка и ЭКЛЗ. На Орионе 110К на шине тоже сидят и ЭКЛЗ, SEEPROM и ФП, но здесь этот интерфейс реализован аппаратно, что (учитывая упрощения программной реализации I2C - по крайней мере, на Орион 100К так и есть) дает больше гарантий корректной работы.
В доке (на странице 71) на uPSD3234 (процессор платы управления Орион 110К) об I2C говорится, что "система в своем роде уникальна, поскольку передача данных,  частотная генерация, распознавание адреса и шинный арбитраж контролируется аппаратно.".
Дополнительное преимущество еще и в том, что процессор не отвлекается на обслуживание интерфейса, и система автономна от всей программы.

Интерфейс работает по DDC2B протоколу (он исползуется в DVI Video для идентификации монитора), который строго основан на спецификации Филипс.
"Прием входящих данных в режиме записи или обновление исходящих данных режиме чтения должны быть завершены в пределах заданого лимита времени. Если программа на стороне слэйва не в состоянии отреагировать на команду мастера за время, оговоренное IIC-протоколом, линия SCL может быть удержана (stretched - что такое?) в низком уровне для сдерживания дальнейшего действия от мастера. Трансакция может быть возобновлена как в формате байтовой передачи, так и в формате пакетной передачи данных (страницы?). (посмотрите на стр. 81 чтоб поточнее перевести)
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Т.е. когда ККТ общается с другим устройством и в информации присудствует код "05н", ЭКЛЗушка начинает сеанс ответа, и соответственно загаживает шину.
Мне кажется, это просто нереально. С чего бы это без старт-условия и адреса устройства ЭКЛЗ будет отзываться на случайный байт 05h?

Да, кстати, Орион 110К вобще не включался с НП-ЭКЛЗ, хотя программа далеко не сразу обращается к ЭКЛЗ после включения, должна че-нить пропикать и вывести на индикатор признаки самотестирования, притом, что индикатор I2C там не использует. Так что получается, что проблема в чем-то поглубже. Да и не нам ее решать.
« Последнее редактирование: 12/05/2011 19:02:15 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Провел серию экспериментов "на скорую руку", пока не вывел закономености, но очевидно, что от содержания пакета данных перед кодом "05" влияет на то, влезет ЭКЛЗ в сеанс или нет.
ККМ не включается скорее всего из-за того, что повисает в протоколе из-за некорректных ответов утройств, при их первом тестировании.
Нужно осциллографом посмотреть шину i2c есть там чегось, или просто занято...
Орион 200Ф с тех-процом тоже без дисплея покупателя не включался.
 

Оффлайн Master X

  • Глобальный модератор
  • Эксперт
  • ****
  • Сообщений: 1710
  • Похвалили: 103 раз(а)
  • Искать тут: 282255340@qip.ru
  • Откуда: г.Горький
    • АРХИВ_Профсоюза
Извиняюсь конечно, НО не по теме!!!
SkaT А Вы про какую ККМ речь задвигаете???(Телепатов среди нас НЕМА!!!) Еже-ли это ОРИОН, то...
Пишите пожалуйста в соответствующей теме
ЗЫ: Там и Модератор(тех. поддержки) грамотно ответит... может быть
ЗЗЫ: Зачем грешить на контрольные ленты !? А?
Linux is working. The future is open(Ц)IBM
Если найдёте ошибки в форуме пишите мне в личку -исправлю!
Я тут главный шут, тролль и хейтер :)
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Вопрос у меня сначала был о том, сидит ли ЭКЛЗ на одной шине с другими i2c устройствами. Т.к. у меня нет схем на ККТ в которых НП-ЭКЛЗ не работает.
Про Орион 200Ф я вспомнил, что он якобы "не включается" с тех.процом без дисплея покупателя, также как и Орион 110К с НП-ЭКЛЗ, скорее всего.
То, что он не пищит и на экране пусто это не значит, что он ничего не делает. Скорее всего на опросе оборудования висит, либо программный либо аппаратный недочет - некорректная обработка конфликтных ситуаций.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Разъясню, что произошло.
Я собрал "блокнот". Это проц, ПЗУ, дислей и две кнопки, для просмотра информации из ПЗУшки. Когда он заработал, подумал, правильно ли подобрал "подтягивающие" резисторы на шине i2c, потянет ли еще одну ПЗУ...
Но из i2c устройств под рукой оказались только старые "ЭКЛЗ". Подключил, и получил результат, информация искажается, проверил осциллогафом, сигналы на шине "красивые" не искаженные. Подключил Безантовскую, искажений нет, НП- снова получил искажения информации. Заметил, что искажается после кода "05h". Вот такая предыстория.
 

Оффлайн Bit

  • Администратор
  • Эксперт
  • *******
  • Сообщений: 1559
  • Похвалили: 85 раз(а)

Про Орион 200Ф я вспомнил, что он якобы "не включается" с тех.процом без дисплея покупателя...
Это была Астра 200Ф. Абсолютно иной разработчик. Железо - СПЗ, ПО - Штрих-М.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Скорее всего действительно Астра, точно помню только 200Ф, давно это было, при "паспортизации" и касс таких у нас было всего 2 или 3 на обслуживании.

На счет закономерности с кодом 05 в потоке данных. Все просто.
Если код 05 стоит на четном месте НП-ЭКЛЗ встревает в сеанс, если на нечетном - не реагирует. Причем заполнил массив кодами 05, ЭКЛЗ влазила в сеанс постоянно, несколько раз передавала одну и ту-же информацию, за один сеанс работы с ПЗУшкой. Возможно четность/нечетность зависит от скорости работы шины, но пробовал с длинными потоками данных, сдвигов вроде не наблюдается.
Если считать от Старт-условия, то перед данными стоит адрес ПЗУ, значит от Старта значимым является нечетный код 05.
« Последнее редактирование: 13/05/2011 12:27:45 от SkaT »
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Разъясню, что произошло.
Я собрал "блокнот". Это проц, ПЗУ, дислей и две кнопки, для просмотра информации из ПЗУшки. Когда он заработал, подумал, правильно ли подобрал "подтягивающие" резисторы на шине i2c, потянет ли еще одну ПЗУ...
Но из i2c устройств под рукой оказались только старые "ЭКЛЗ". Подключил, и получил результат, информация искажается, проверил осциллогафом, сигналы на шине "красивые" не искаженные. Подключил Безантовскую, искажений нет, НП- снова получил искажения информации. Заметил, что искажается после кода "05h". Вот такая предыстория.
Честно говоря, лично я ничего не понял.
Можно поподробнее - какой проц, какой дисплей? Что за "еще одна" ПЗУ? (можете набросать схемку? Можно в Пойнтбраше, если нет других возможностей). И еще желательно было бы Вашу программу, хотя бы на псевдокоде).
Что у Вас за осциллограф? Как "искажается" информация - нарушается форма импульсов (как конкретно) или искажается сам передаваемый (куда, кстати) байт? Если у Вас осциллограф электронный, то желательно вложить осциллограммы.
Как объясняете тот факт, что на подавляющем большинстве ККТ НП-ЭКЛЗ нормально работает, если она такая странная?
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Да, с формулировками у меня туговато... :(
И в данном случае опускал "не принципиальные" по моему подробности.
Проц 89с2051, дисплей от Микро 103Ф (с последовательным интерфейсом).
ПЗУ ат24с04 с интерфейсом i2c. Кварц на процессор 24МГц.
С шиной i2c я раньше не сталкивался, но знаю что на ней можно параллельно подключить несколько устройств, если каждое со своим адресом. Вот и подумал, подключить параллельно уже подключенной ПЗУ, еще одну, такую-же. Но небыл уверен в правильности подбора подтягивающих резисторов. И начал эксперементы с ЭКЛЗ, т.к. ПЗУ "под рукой" не оказалось.
Схема простая, от процессора 2 вывода на дисплей, и 2 вывода на ПЗУ.
Программа на Ассемблере. Но мне кажется это не принципиально.
Осциллограф простой С1-107, вход 35пФ.
Когда при подключении НП-ЭКЛЗ увидел на экране не ту информацию, которая была записана в ПЗУ, то ожидал увидеть на осциллогафе "просадки" или "искажения" на шине данных i2c. Но сигнал оказался нормальным для шины.
Получается что искажения вносились в саму информацию, параллельной информацией. Так и вышло, логическое И для информации ПЗУ и ЭКЛЗ.

В связи с тем, что выявилась закономерность, активизирующая НП-ЭКЛЗ, это нечетное положение кода 05h, считая от Старт-условия, думаю это и влияет.
Может в тех случаях где НП нормально работает код 05 встречается в чётной позиции, я ведь не знаю, только предполагаю.
Выяснить это можно только посмотрев "отсканированную" шину, для рабочих и не рабочих случаев.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
дисплей от Микро 103Ф (с последовательным интерфейсом).
А разве были Микры 103Ф с индикаторами с последовательным интерфейсом? И по какому протоколу они работают? На какой микросхеме реализованы их драйверы, и что должно в их протоколе означать число 05h?

ПЗУ ат24с04 с интерфейсом i2c.
Ну это же не ПЗУ, а РПЗУ.

Программа на Ассемблере. Но мне кажется это не принципиально.
Почему не принципиально? Говорят, дьявол кроется в деталях. ;) Какой тип передачи по I2C Вы применяли?

ожидал увидеть на осциллогафе "просадки" или "искажения" на шине данных i2c. Но сигнал оказался нормальным для шины.
Я истолковал Ваши слова - "Подключил, и получил результат, информация искажается, проверил осциллогафом, сигналы на шине "красивые" не искаженные. Подключил Безантовскую, искажений нет, НП- снова получил искажения информации" - так, что "красивые" и без "искажений" импульсы бывают только с безантовской клизмой, а с НП-шной они "некрасивые". :)

В связи с тем, что выявилась закономерность, активизирующая НП-ЭКЛЗ, это нечетное положение кода 05h, считая от Старт-условия, думаю это и влияет.
Может в тех случаях где НП нормально работает код 05 встречается в чётной позиции, я ведь не знаю, только предполагаю.
Вы думаете, что в Орионе 100К в обмене с ФП число 05h никогда не может встретиться в нечетной позиции? А в РПЗУ (у других касс) к адресам хх05 (LSB адреса там тоже нечетным байтом идут) не бывает обращений?
« Последнее редактирование: 13/05/2011 14:06:01 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Да юыли, еще и с ЖК-индикаторами были, но у меня светодиодный.
Дисплей подключен на другие выводы, не параллельно РПЗУ, там другой интерфейс, не i2c.
На дисплее просто 2 сдвиговых регистра и дешифратор, ну и 8-ми сигментные индикаторы. Но это тоже к ЭКЛЗ отношения не имеет.
Я не мог предположить, что ЭКЛЗ встрянет в чужой сеанс, поэтому сначала и подумал о "искажении" параметров импульсов, пока не увидел, что они "нормальные".
Может быть программно конфликты интерфейса грамотно разрешаются, поэтому и работает.
Вопросы "бывают или не бывают" коды 05 нечетными и почему работает не комне естественно. Я случайно наткнулся на непонятный для меня эффект НП-ЭКЛЗ, решил поделиться, вот и всё.
Могу считать свой вопрос закрытым.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Анализ ряда экспериментов со чтением РПЗУ по интерфейсу i2c и подключённой параллельно НП-ЭКЛЗ показал следующее.

НП-ЭКЛЗ вылазит на линию в следующем случае:
если младший бит в передаваемом байте (переданном перед байтом 05h) равен "1";
если между задним фронтом младшего бита и передним фронтом импульса "Acknowledge" менее 3.5 мкс.

Видимо при интервале между этими фронтами менее 3.5 мкс НП-ЭКЛЗ воспринимает задний срез последнего бита как Старт-условие (несмотря на присутствие "0" на шине SCL в этот момент).

На счет того, что Орион100К работает с НП-ЭКЛЗ. На шине действительно присутствуют коды 05h и НП-ЭКЛЗ на них не реагирует. Но интерфейс у Ориона 100К очень медленный, промежутки между импульсами больше стандартных 5мкс.

Вот.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Вот фрагменты сканов шины i2c ККМ Микро 103К (верхний) и Орион 100К (нижний).
Зеленые - данные, красные - стробы. Масштаб времени одинаковый.
Это я к тому, что я писал, что у Ориона 100К интерфейс "медленный".

 

Оффлайн shipvsv

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 139
Вчера фискалил Samsung ER4615RK с ПТС (общение с ЭКЛЗ по I2C)ЭКЛЗ НП-шная, так вот вместо чека активизации ЭКЛЗ выдал ошибку на индикаторе о1, после нажатия на "СБРОС" напечатал на чеке "Активизация ЭКЛЗ - отмена", но как ни странно и в ФП,  и в ЭКЛЗ всё записалось нормально, аппарат работает.
Подозреваю что у НП какие-то траблы в части I2C .
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Вот фрагменты сканов шины i2c ККМ Микро 103К (верхний) и Орион 100К (нижний).
Зеленые - данные, красные - стробы.


Какие-то странные сканы. Почему у Вас во время присутствия единиц на SDA на линии SCL нет синхроимпульсов? И причем здесь число 05h вообще? Никакой абонент шины I2C не может "вылезать" на шину до получения своего адреса устройства, а по спецификации на ЭКЛЗ, "7-ми битовый адрес  ЭКЛЗ  фиксирован и равен 2"

Цитировать
Анализ ряда экспериментов со чтением РПЗУ по интерфейсу i2c и подключённой параллельно НП-ЭКЛЗ показал следующее.

Ну так Вам жалко что ли дать конкретное описание и программку, чтобы всякий мог повторить эти эксперименты?
« Последнее редактирование: 18/05/2011 20:05:59 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Вот фрагменты сканов шины i2c ККМ Микро 103К (верхний) и Орион 100К (нижний).
Зеленые - данные, красные - стробы.


Какие-то странные сканы. Почему у Вас во время присутствия единиц на SDA на линии SCL нет синхроимпульсов? И причем здесь число 05h вообще? Никакой абонент шины I2C не может "вылезать" на шину до получения своего адреса устройства, а по спецификации на ЭКЛЗ, "7-ми битовый адрес  ЭКЛЗ  фиксирован и равен 2"

Если речь о единицах на SDA в правой части у Микрушки, то это скорее всего ЭКЛЗ занимала линию SCL для обработки принятого байта. А в левой броски на SDA вокруг "подтверждения" это нормально.
А по поводу "...Причем тут 05h..." , 7-ми битный адрес 02h , а восьмой бит??? Продолжать мысль, или не нужно???
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Нет, про 5 не надо. Пока шел домой, мысля сама  дошла.
Ну программу и схему дадите?
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Если речь о единицах на SDA в правой части у Микрушки, то это скорее всего ЭКЛЗ занимала линию SCL для обработки принятого байта. нужно???
Может, перед уходом я плохо рассмотрел схему Микры 103К, но помнится, никаких других абонентов шины параллельно ЭКЛЗ не сидит. Щас поищу схему в инете.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Если речь о единицах на SDA в правой части у Микрушки, то это скорее всего ЭКЛЗ занимала линию SCL для обработки принятого байта. нужно???
Может, перед уходом я плохо рассмотрел схему Микры 103К, но помнится, никаких других абонентов шины параллельно ЭКЛЗ не сидит. Щас поищу схему в инете.
У Микрушки кроме ЭКЛЗ ничего на этой шине не висит. А причем здесь это?
Я выложил скан как пример сравнения скоростей шины Микро и Ориона, и только.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Ну программу и схему дадите?
А дисплей от старой Микрушки с последовательным интерфейсом найдёте, для просмотра результата считывания РПЗУ?
Если дадите описание протокола дисплея для ЭКРки, на русском.
Перепишу программу.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
А дисплей от старой Микрушки с последовательным интерфейсом найдёте, для просмотра результата считывания РПЗУ?
Если дадите описание протокола дисплея для ЭКРки, на русском.
Перепишу программу.
А зачем нам нужен дисплей? Разве по Вашей теории не достаточно просто из программы записывать в РПЗУ нужные последовательности байтов? Садим на шину НП-ЭКЛЗ и пишем в РПЗУ что нам надо. А потом читаем РПЗУ на программаторе и сравниваем с тем, что должно быть. Если информация не совпадает, значит НП-ЭКЛЗ действительно портит шину.
Потом повторяем все без НП-ЭКЛЗ и с безантовской ЭКЛЗ.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Возможно. Только есть пару "НО".
При записи в РПЗУ, "подтверждение" выдается аппаратно микросхемой РПЗУ,
и соответственно я не могу контролировать "срез" на шине SDA. А как выяснилось это важно. При чтении, проц выдает "подтверждение".
Второе, запись в РПЗУ сложнее чтения, есть ограничения длины пакета данных.
И при разной длине записываемого пакета и пакета передаваемого из ЭКЛЗ скорее всего произойдет зависание РПЗУ, а может я и ошибаюсь.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Возможно. Только есть пару "НО".
При записи в РПЗУ, "подтверждение" выдается аппаратно микросхемой РПЗУ,
и соответственно я не могу контролировать "срез" на шине SDA. А как выяснилось это важно. При чтении, проц выдает "подтверждение".
И какие условия нужны, чтобы Вы смогли контролировать этот срез? Мы же с Вами фактически смоделируем процессы, которые проходят в любой кассе, где есть несколько абонентов на одной шине и где ЭКЛЗ должна мешать.
Если нужно именно чтение, то давайте припаяем две РПЗУ, одна с адресом 0 (из нее будем читать), а вторая - с адресом 1 (в нее будем писать). На Микре никто больше эти адреса не занимает. Адрес 2 остается за ЭКЛЗ.
Идет?


Второе, запись в РПЗУ сложнее чтения, есть ограничения длины пакета данных.
И при разной длине записываемого пакета и пакета передаваемого из ЭКЛЗ скорее всего произойдет зависание РПЗУ, а может я и ошибаюсь.
А в чем сложность? Что нам мешает сформировать пакет нужной длины? Или мы должны писать в ЕЕПРОМ целой страницей?
Заглянул в даташиту на AT24C256:
... after the EEPROM acknowledges receipt of the first data word, the microcontroller can transmit up to 63 more data words.
Я так понимаю, что писать можно "более одного слова данных вплоть до 63 штук". Размер пакета определится появлением стоп-условия. Читаем из первого РПЗУ во внутреннее ОЗУ процессора до 128 байтов и потом отправим в другую РПЗУ.

Если же РПЗУ все же каким-то чудом "зависнет", то это будет косвенным свидетельством, что ЭКЛЗ таки вмешалось. Вы только исходник на асме или Си приложите.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
...
А в чем сложность? Что нам мешает сформировать пакет нужной длины? Или мы должны писать в ЕЕПРОМ целой страницей?
Заглянул в даташиту на AT24C256:
... after the EEPROM acknowledges receipt of the first data word, the microcontroller can transmit up to 63 more data words.
Я так понимаю, что писать можно "более одного слова данных вплоть до 63 штук". Размер пакета определится появлением стоп-условия. Читаем из первого РПЗУ во внутреннее ОЗУ процессора до 128 байтов и потом отправим в другую РПЗУ.

Если же РПЗУ все же каким-то чудом "зависнет", то это будет косвенным свидетельством, что ЭКЛЗ таки вмешалось. Вы только исходник на асме или Си приложите.
У меня РПЗУ АТ24с04, в ней длина пакета только 16 байт, потом адрес записи зацикливается.
Сегодня попробую переписать программу на проц 89с51 с частотой 12МГц.
Результат сообщу.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
У меня РПЗУ АТ24с04, в ней длина пакета только 16 байт, потом адрес записи зацикливается.
Ну, хватало же в прежних экспериментах? Никто не зависал от коортких пакетов?

Сегодня попробую переписать программу на проц 89с51 с частотой 12МГц.
Ок. Пишите лучше для 24C128/24C256/24C512, а то 24С04 редко у нас встречается, хорошо? Я бы и сам написал, но Вам же надо контролировать срезы, нюансы какие-то есть.
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Получил Вашу прошивку. Неплохо написана. :) Но - для 24С04. Переделал на 24С256 и для Оки 102, подправил программку так, чтобы писала в фискалку, благо переходник с ФП на программатор под рукой. Повесил параллельно НП-ЭКЛЗ, перевесил контрольный светодиод на P3.0. Считывает-пишет все абсолютно корректно, даже если всю строку заполнить числами 05. Вмешательства ЭКЛЗ пока не наблюдается.
Конечно, остается аргумент, что Ока работает на 12Мг, а Вы наблюдали эффект на 24Мг (тем более, что Орион 110К, не признающий НП-ЭКЛЗ, работает на 24Мг, а то и на всех 40). Но на какой кассе наблюдали эффект Вы?  Если на Микро 103 (с каким-то неизвестным "последовательным индикатором"), то даже на Микро 103К частота процессора 11059,2К.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
...
Но на какой кассе наблюдали эффект Вы?  Если на Микро 103 (с каким-то неизвестным "последовательным индикатором"), то даже на Микро 103К частота процессора 11059,2К.
Я наблюдал этот эффект не на кассе, а на той схеме которую Вам выслал.
Я ведь писал, что столкнулся с этим эффектом абсолютно случайно.
При тестировании отправленной Вам программы, эффект наблюдался стабильно.
НП-ЭКЛЗ последнюю строчку меняет, Безантовская - не меняет.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Чего же у меня она ничего не меняет?
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Чего же у меня она ничего не меняет?
Если эксперимент повторить не удается, значит у меня глюки.
Приношу свои извинения за беспокойство.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Ну не знаю. По теории не должно быть, а в реальности чего только не встретишь.
Может, имеет значение объем РПЗУ? Вы проводили эксперимент с 24С04, а у нас такой нет. Разве что чипованные картриджи принесут. ))) А у 24С256 адрес адресуемого первого байта состоит из двух слов, у 24С04 - из одного.
Корректнее ставить эксперименты с 24С128/256/512, потому что в кассах насколько я знаю, минимум - это 24С64, которые применяются только в старых Меркуриях 115Ф. Кроме того, в программах касс обычно не применяют страничный обмен с РПЗУ, а только обмен одиночным байтом. Странично общаются только с таймером.

Здесь есть еще один важный момент. Есть ведь еще и логический протокол. В  спецификации написано:
Цитировать
3.1   Формат сообщения.
   байт 0: признак начала сообщения - байт STX (код 02h); (!!!)
   байт 1: длина сообщения (N) - ДВОИЧНОЕ число. В длину сообщения не включаются байты 0, LRC и этот байт;
   байт 2: код команды или ответа - ДВОИЧНОЕ  число;
   байты 3 - (N + 1): параметры, зависящие от команды (могут отсутствовать);
   байт N+2 - контрольная сумма сообщения - байт LRC - вычисляется   поразрядным сложением по модулю 2 всех байтов сообщения (кроме байта 0).

Цитировать
3.2   Правила обмена сообщениями

3.2.2 Правила и система квитирования для интерфейса I2C.

3.2.2.1. Инициатором обмена всегда выступает ККМ. ЭКЛЗ, получив запрос от ККМ на сеанс связи в качестве приемника, осуществляет прием сообщения. Сообщение считается принятым, если первый принятый байт является байтом STX

Во всех наших случаях ЭКЛЗ не признает ложной "команды". На этом все ее участие, даже если оно состоится, закончится. А фактически во всех случаях не будет необходимой последовательности и длины сообщения, передаваемого между ККМ и ЭКЛЗ. Вы хорошо знаете физический протокол I2C, и знаете, что после двух слов адреса запрашиваемого байта наступит новое старт-условие (для чтения). Т.е после третьего байта в сеансе (слово адреса устройства и два слова адреса байта), так ? А для ЭКЛЗ это несостоявшийся сеанс, даже если она ложно распознает "свой" адрес девайса - не будет признака начала сообщения (кода 02), не совпадет длина сообщения и не совпадет контрольная сумма, и вместо всего  сообщения в этот момент ККМ выдаст стоп-условие. Интересно, что делает ЭКЛЗ в таком случае, ведь для нее это логический тупик? Она все-таки ответит кодом 01 (некорректный  формат или параметр команды), "наплевав" на отсутствие  признака начала сообщения? Или просто "зависнет"?

А на этот случай -

Из спецификации: По умолчанию ЭКЛЗ работает без таймаута, таким образом, гарантированный выход из сбоя при передаче от ККМ к ЭКЛЗ возможен только сбросом питания.
« Последнее редактирование: 21/05/2011 00:30:46 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
...
А на этот случай -

Из спецификации: По умолчанию ЭКЛЗ работает без таймаута, таким образом, гарантированный выход из сбоя при передаче от ККМ к ЭКЛЗ возможен только сбросом питания.
По умолчанию таймаут в ЭКЛЗ вроде-как 0Ah.
Кстати, единственная команда передаваемая Орионом100К в ЭКЛЗ при включении питания, это установка таймаута,  равным что-то около FFh (под рукой нет записей, всё на работе).
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
По умолчанию таймаут в ЭКЛЗ вроде-как 0Ah.
Это если используется RS232 - тайм-аут 10 мс и скорость обмена 9600, а для I2C тайм-аут устанавливается только после команды установки параметров обмена. А Вы в своей программе же не устанавливали их, а значит, ЭКЛЗ в ней работает "по готовности".

Не знаю, с каким тайм-аутом работает Орион, но кажется я тут немного не про то написал - почитал и выяснил, что в принципе это таймаут для принятия байта. А меня интересует ситуация, когда ЭКЛЗ распознает свой девайс-адрес, но не получает признака начала сообщения. Скорее всего, следующий (и, наверное, все остальные) байты она считывает в свой системный буфер, а что происходит дальше, не совсем очевидно. Скорее всего, получим "некорректный  формат или параметр команды" (01).

Не поставить ли еще один интересный эксперимент - чтение РПЗУ (вместо него - ЭКЛЗ) по адресу 02 - посмотреть, как она отреагирует? Ответ (если он будет) записать в РПЗУ с другим адресом (можно перед этим сделать паузу, чтобы отсоединить ЭКЛЗ), чтобы мы могли его посмотреть.
« Последнее редактирование: 22/05/2011 12:50:45 от Юр »
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Анализ ряда экспериментов со чтением РПЗУ по интерфейсу i2c и подключённой параллельно НП-ЭКЛЗ показал следующее.

НП-ЭКЛЗ вылазит на линию в следующем случае:
если младший бит в передаваемом байте (переданном перед байтом 05h) равен "1";
если между задним фронтом младшего бита и передним фронтом импульса "Acknowledge" менее 3.5 мкс.

Видимо при интервале между этими фронтами менее 3.5 мкс НП-ЭКЛЗ воспринимает задний срез последнего бита как Старт-условие (несмотря на присутствие "0" на шине SCL в этот момент).

Кажется, наметились первые признаки разной обработки старт-условия у НП и Безантовской ЭКЛЗ. Эксперимент проводился на Орион 100К 2в, в прошивке которого при обращении к ЭКЛЗ подменено старт-условие на то, которое предложили Вы. Но к моему удивлению, не НП-ная, а именно Безантовская ЭКЛЗ воспринимает ложное старт-условие (на примере принятия ответа от ЭКЛЗ).

Цитировать
code:000026B6                 mov     DPTR, #0x1177
code:000026B9                 lcall   code_5E34 ; здесь изменил старт-условие
code:000026BC                 mov     A, #5
code:000026BE                 lcall   code_5DF1
code:000026C1                 jc      code_26AB ; здесь Безантовская ЭКЛЗ проходит проверку отклика, а НП-ная нет, ККМ делает четыре попытки связаться с НП-ЭКЛЗ и по истечении уставки таймера перезагружается.
;в этом месте была установлена контрольная точка для проверки реакции на ложное старт-условие - безантовская сюда прошла, НП - нет.
code:000026C3                 lcall   code_5D5E
code:000026C6                 lcall   code_5D5E
code:000026C9                 acall   code_231E
code:000026CB                 mov     R0, A
code:000026CC
code:000026CC code_26CC:                              ; CODE XREF: code_2641+91j
code:000026CC                 inc     DPTR
code:000026CD                 lcall   code_5D5E
code:000026D0                 acall   code_231E
code:000026D2                 djnz    R0, code_26CC
code:000026D4                 lcall   code_5DA9
code:000026D7                 inc     DPTR
code:000026D8                 acall   code_231E
code:000026DA                 lcall   code_5E63
code:000026DD                 pop     ACC             ; Accumulator
code:000026DF                 mov     R3, A
code:000026E0                 mov     DPTR, #0x1177
code:000026E3                 acall   code_2314
code:000026E5                 mov     R0, A
code:000026E6                 mov     B, A            ; B-Register
code:000026E8
code:000026E8 code_26E8:                              ; CODE XREF: code_2641+AEj
code:000026E8                 inc     DPTR
code:000026E9                 acall   code_2314
code:000026EB                 xrl     A, B            ; B-Register
code:000026ED                 mov     B, A            ; B-Register
code:000026EF                 djnz    R0, code_26E8
code:000026F1                 inc     DPTR
code:000026F2                 acall   code_2314
code:000026F4                 cjne    A, B, code_2703 ; B-Register
code:000026F7                 mov     DPTR, #0x1178
code:000026FA                 acall   code_2314
code:000026FC                 setb    TCON.4          ; Timer Control Register
code:000026FE                 clr     P1.0            ; Port 1
code:00002700                 nop
code:00002701                 nop
; здесь на всякий случай была установлена еще одна контрольная точка - безантовская сюда доходит, НП, естественно, нет.
code:00002702                 ret

"Неправильное" старт-условие по Вашему предложению заключалось в спаде SDA при низком уровне SCL.

Может быть, я как-то неправильно истолковал результаты или что-то некорректно сделал. Во всяком случае при "ложном" старт-условии Безантовская работает (нет ошибки 7F не перезагружается и не виснет), а с НП-ЭКЛЗ все время перезагружается. Посмотрите, прошивка во вложении.

Кстати, я все время удивляюсь тому, с каким упорством разработчики стараются усложнить себе работу, применив в той же Безантовской клизме младший процессор из серии MSP430xxx - MSP430F1471. Ведь есть же более новые микроконтроллеры из этой серии с бортовым интерфейсом I2C - уже начиная с MSP430х15х, где эту функцию может аппаратно выполнять UART0. Причем как в мастер, так и в слэйв-режиме (что является редкостью).
« Последнее редактирование: 23/05/2011 15:58:52 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Посмотрел прошивку, но умного в голову ничего не приходит, ктоме того, что разные версии ЭКЛЗ видимо ведут себя по разному.
При тестировании, то НП глючит, то Безантовская...
Ситуацию думаю прояснил бы скан шины i2c у Ориона110К и ЛадогиК.
Стало бы многое понятно. Но к сожалению ни Ориона110К ни ЛадогиК у нас на обслуживании нет... а может и к лучшему :)
Вот взялся бы ктонибудь, отсканировал шину, и выложил результат.
Других мыслей нет :(
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Были кое-какие подозрения.
Сегодня проверил.
Юр, нарисуй графики шины i2c с той прошивки и Фальшивым Старт-условием.
Может я ошибся, но у меня получилось, что после Стоп условия, Фальшивое Старт-условие которое я предложил, воспринимается как старший бит адреса.
В результате всего на шине появляется код 05h, и ЭКЛЗ отвечает.
Вобщем нарисуй графики, потом сравним, что получилось. Может я ошибся.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Юр, я вот думаю, что если экспериментировать на реальной кассе Орон100К,
то не стоит лишать её настоящего Старт-условия, это "тупиковая ветвь".
Если хочешь "сюрпризов", вернись к тому что я предлагал с самого начала,
сдвинь строб подтверждения "вперёд".
Это коды D2h 96h (setb P1.6), нужно прописать в адрес 5D8Ah
Должно получиться:
clr P1.7
nop
setb P1.6

Без ЭКЛЗ, ККМ должна работать нормально, а вот при подключении ЭКЛЗ.......
Проверь, расскажи. :)
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Были кое-какие подозрения.
Сегодня проверил.
Юр, нарисуй графики шины i2c с той прошивки и Фальшивым Старт-условием.
Может я ошибся, но у меня получилось, что после Стоп условия, Фальшивое Старт-условие которое я предложил, воспринимается как старший бит адреса.
В результате всего на шине появляется код 05h, и ЭКЛЗ отвечает.
Вобщем нарисуй графики, потом сравним, что получилось. Может я ошибся.
Ну, графики рисовать у меня времени нет. :) Но есть теоретическое возражение - чтобы ЭКЛЗ воспринимала "фальшивое старт-условие" как "бит адреса", нужно чтобы она уже приняла "настоящее" старт-условие. Потому что после того, как она не признала свой адрес в предыдущей трансакции, она переходит в состояние опроса старт-условия. Как же  она воспримет это как бит адреса? И каким образом при этом образуется байт 05?
Все на самом деле проще - НП-ЭКЛЗ просто не распознает фальшивого старт-условия (в отличие от безантовской) и после отправки 05 не выдает подтверждения приема адреса. В результате ККМ начинает новую попытку отправить ЭКЛЗ ее адрес, и после четвертой выдает какую-то ошибку (в ее обработке я не копался, ни к чему).
Зачем изобретать новые сущности, если все объясняется уже имеющимися очевидными вещами? (бритва монаха Оккама :)). Но если будет реалистичная альтернатива, готов рассмотреть. А пока ты, как мне кажется, пытаешься подтянуть практику к теории.


Юр, я вот думаю, что если экспериментировать на реальной кассе Орон100К,
то не стоит лишать её настоящего Старт-условия, это "тупиковая ветвь".
Если хочешь "сюрпризов", вернись к тому что я предлагал с самого начала,
сдвинь строб подтверждения "вперёд".
Это коды D2h 96h (setb P1.6), нужно прописать в адрес 5D8Ah
Должно получиться:
clr P1.7
nop
setb P1.6

Без ЭКЛЗ, ККМ должна работать нормально, а вот при подключении ЭКЛЗ.......
Проверь, расскажи. :)
Реакция получилась такая же. После прохождения тестов ПЗУ, ОЗУ и всякой другой всячины снова пиликает и  на индикаторе все время "ОРИОН 100" . Предлагай объяснение.

А вообще, разработчики должны же придерживаться спецификации, в которой сказано, что "ККМ должна обеспечивать в процессе передачи (приема) байта задержку на линии синхросигнала  не менее 4.7 мкс". С какой бы частотой осцилляции ни работала ККМ, ее временные характеристики должны соответствовать всем заявленным параметрам обмена?
Хотя во время обкатки безантовской клизмы на населении ее изготовители чего-то там резко меняли в протоколе (физическом ли интерфейсе), а что, я не знаю, но кассы при таких разворотах отказывались нормально работать.  
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
А по поводу "...Причем тут 05h..." , 7-ми битный адрес 02h , а восьмой бит??? Продолжать мысль, или не нужно???
Ах, да, вспомнил, чем меня так смущал этот пресловутый байт 05h. Дело в том, что для того, чтобы он мог восприниматься как обращение на выдачу информации от ЭКЛЗ, нужно вначале организовать по всем правилам отправку не 05h, а 04h. Продолжать мысль или не нужно? :)
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
А по поводу "...Причем тут 05h..." , 7-ми битный адрес 02h , а восьмой бит??? Продолжать мысль, или не нужно???
Ах, да, вспомнил, чем меня так смущал этот пресловутый байт 05h. Дело в том, что для того, чтобы он мог восприниматься как обращение на выдачу информации от ЭКЛЗ, нужно вначале организовать по всем правилам отправку не 05h, а 04h. Продолжать мысль или не нужно? :)
Продолжать мысль не нужно, наличие ответа ЭКЗЛ сразу после включения питания, я увидел в протоколе Микро 103К.
Микрушка сначала выдает запрос 05h, получает ответ, и только потом начинает "командовать".
И потом, я проверял, все ЭКЛЗ после включения питания, отвечают на код 05h.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
...
Если хочешь "сюрпризов", вернись к тому что я предлагал с самого начала,
сдвинь строб подтверждения "вперёд".
Это коды D2h 96h (setb P1.6), нужно прописать в адрес 5D8Ah
Должно получиться:
clr P1.7
nop
setb P1.6

Без ЭКЛЗ, ККМ должна работать нормально, а вот при подключении ЭКЛЗ.......
Проверь, расскажи. :)
Реакция получилась такая же. После прохождения тестов ПЗУ, ОЗУ и всякой другой всячины снова пиликает и  на индикаторе все время "ОРИОН 100" . Предлагай объяснение.
Не понял. Без ЭКЛЗ работает?
А с любой ЭКЛЗ висит?
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
С безантовской работает и без ЭКЛЗ тоже работает (тест ФП проходит и с таймером проблем нет). С НП постоянно перезагружается.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
С безантовской работает и без ЭКЛЗ тоже работает (тест ФП проходит и с таймером проблем нет). С НП постоянно перезагружается.
С трудом верится, неужели перестала работать, и только с НП-шной ???

Слишком "рано" для нее Строб "подтверждения" приходит.
Пробуй на один адрес "отодвигать".
При каком количестве NOP-ов Орион начнет с НП-шной работать.

А для начала дату можно переставить на 03.03.11, чтобы не 4-ок ни 5-ок небыло.
Я 5-ки вроде только в протоколе часов видел.
И посмотреть, с часами конфликтует или нет.

Только вспомнил, в часах еще день недели есть.
Дату нужно выбрать чтобы не 4 и не 5 день недели был.
Он в часах както сдвинут, точно не помню.

Прикольно будет на секундах глючить... :)
Лишь-бы ЭКЛЗ на 4-ой секунде команду какую-нибудь не приняла.
А то кто её знает... что в её цифровой голове произойдёт... :)
« Последнее редактирование: 24/05/2011 20:59:01 от SkaT »
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
А у тебя и Орионов сотых нет? Я прошивку с ложным старт-условием выложил, можешь сам попробовать, это моделирование предполагаемой тобой ситуации. А если их нет, может, на другом типе касс повторить? :) Я уже провел один предложенный тобой опыт, ожидаемого эффекта не получил. Могу выложить прошивку для платы Оки 102, чтобы кто-нибудь еще мог попробовать, надо только будет подпаять шлейф от ЭКЛЗ к линиям ФП. Нет эффекта, да и по всем выкладкам не может быть. Не обнаружено восприятие НП-ЭКЛЗ ложного старт-условия, и не обнаружено влияние при чтении из РПЗУ строк 05. А чтобы ЭКЛЗ отозвалась на байт 05, по протоколу нужно вначале послать байт 04 (который означает адрес ЭКЛЗ в режиме ЗАПИСИ), затем всю последовательность команды и стоп-условие, а уже потом 05 (адрес ЭКЛЗ в режиме чтения), и тогда ЭКЛЗ начнет выдавать ответ. Все это описано в официальной спецификации ЭКЛЗ, и кстати, в прошивке Орион 100К все это также есть. Последовательность предварительно подготавливается в ячейках внешнего ОЗУ. Единственное отступление от протокола заключается только в отсутствии проверки отклика при чтении ответа от ЭКЛЗ, который в спецификации оговорен (отклик проверяется только на сетевой адрес). Видимо, расчитывали на гарантированный ответ и на быстродействие ЭКЛЗ. Служебные подпрограммы в кассах довольно упрощены, например, нигде еще я не встречал поллинга - ни при записи в РПЗУ, ни при записи во флэш (ЭКР2102)... Непривычно немного для меня, но программистам виднее.

В общем, пока у меня твоя теория ничем не подтверждается.
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
А то, что Орион 100К при простом сдвиге "вперед" строба перезагружается и только с НП-ЭКЛЗ это случайность???
Орион100 есть, у нас панели нормальной для "пауков" нет :(
Выковыривать после перепрошивки замучился :(
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Цитировать
Ах, да, вспомнил, чем меня так смущал этот пресловутый байт 05h. Дело в том, что для того, чтобы он мог восприниматься как обращение на выдачу информации от ЭКЛЗ, нужно вначале организовать по всем правилам отправку не 05h, а 04h. Продолжать мысль или не нужно? :)
Продолжать мысль не нужно, наличие ответа ЭКЗЛ сразу после включения питания, я увидел в протоколе Микро 103К.
Микрушка сначала выдает запрос 05h, получает ответ, и только потом начинает "командовать".
И потом, я проверял, все ЭКЛЗ после включения питания, отвечают на код 05h.
Можно поподробнее? Где конкретно, это интересно.

А то, что Орион 100К при простом сдвиге "вперед" строба перезагружается и только с НП-ЭКЛЗ это случайность???
Это, скорее, не случайность, а свидетельство бОльшей "капризности" НП-ЭКЛЗ по сравнению с безантовской. Но вечером перед сном мне нехочется сильно напрягаться и думать, подумаю завтра. :)
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Кстати, подменять реальное Старт-условие на предложенное мной "Фальшивое",
было ошибкой. Оно было обнаружено и работает только "внутри" потока данных.
И вызывало у ЭКЛЗ желание начать читать с шины адрес, в этом его суть.
А при подмене им реального Старт-условия, происходят совсем другие события.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Кстати, подменять реальное Старт-условие на предложенное мной "Фальшивое",
было ошибкой. Оно было обнаружено и работает только "внутри" потока данных.
По какой причине оно работает только "внутри" потока данных?
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Вспоминаем твое письмо, в котором были вложены две прошивки с описанием (откуда я и брал твое "фальшивое старт-условие"):
Цитировать
На шину выдается фальшивое "Старт-условие".
 Затем отправляется код 05h.
 Если на него никто не ответит, светодиод будет мигать, в РПЗУ ничего не будет записано.
 Если на код 05h будет получено "подтверждение" (чего быть не должно, поскольку небыло Старт-условия),
 то произойдет чтение 4-ех байт с шины i2c.
 Далее 4 байта будут записаны в РПЗУ начиная с адреса 00h.
 Если запись пройдет удачно светодиод будет гореть, если произойдет
 ошибка записи, будет мигать.
 Запись в РПЗУ происходит с выдачей "нормального" Старт-условия.

 Мои результаты:
 НП-ЭКЛЗ - в РПЗУ: 02,01,00,01
 ЭКЛЗ на которой написано ТЕНЗОР "Инфокристалл" - в РПЗУ: 02,01,00,01
 ЭКЛЗ ТЕНЗОР: записи в РПЗУ небыло.

Как видно из прошивок, "фальшивое старт-условие" выдается на шину вовсе не в "потоке данных", а как и полагается - в начале классической трансакции. И тем не менее ты написал, что НП-ЭКЛЗ отозвалась и ответила. Как же это увязать с новой гипотезой, что "оно работает только "внутри" потока данных"? Противоречие, однака? :)
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Вспоминаем твое письмо, в котором были вложены две прошивки с описанием (откуда я и брал твое "фальшивое старт-условие"):
...
Как видно из прошивок, "фальшивое старт-условие" выдается на шину вовсе не в "потоке данных", а как и полагается - в начале классической трансакции. И тем не менее ты написал, что НП-ЭКЛЗ отозвалась и ответила. Как же это увязать с новой гипотезой, что "оно работает только "внутри" потока данных"? Противоречие, однака? :)
Ну, я же признал, это была ошибка. Повёлся на поводу у некоторых скептиков.
Попытался упростить процесс...

Сейчас выложу скан шины i2c Ориона 100К, в нормальном состоянии с НП-ЭКЛЗ, и со сдвинутым "вперед" стробом подтверждения и подключенной НП-ЭКЛЗ.
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Ну, я же признал, это была ошибка. Повёлся на поводу у некоторых скептиков.
Попытался упростить процесс...
Но если ты мне сообщил такие результаты, что НП-ЭКЛЗ, как и старая Инфокристальная, отзывается на ложное старт-условие, и даже написал, как именно они отзываются, значит что??? Значит на самом деле таких результатов не было???
Это что было? -
НП-ЭКЛЗ - в РПЗУ: 02,01,00,01
 ЭКЛЗ на которой написано ТЕНЗОР "Инфокристалл" - в РПЗУ: 02,01,00,01
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Но если ты мне сообщил такие результаты, что НП-ЭКЛЗ, как и старая Инфокристальная, отзывается на ложное старт-условие, и даже написал, как именно они отзываются, значит что??? Значит на самом деле таких результатов не было???
Результат этот был, фальсифицировать, что-либо мне смысла нет.
Я уже писал, это "стрт-условие" работает в потоке данных.
При использовании его вместо реального Старт-условия, происходят другие процессы, связанные с начальным состоянием шины.
Фальшивое - при подмене выдает реальное, и еще строб старшего бита.
Но это можно понять только видя скан шины. Не бери в голову.
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
Вот скан Ориона100К. Сделан после включения, на экране дата и время.
21.03.20011,  11:10
Верхний - протокол чтения часов при "нормальном" стробе и НП-ЭКЛЗ.

Нижний - "строб" сдвинут вперед, подключена НП-ЭКЛЗ.
исправлено время на 11:05.


После кода 05h видно вмешательство НП-ЭКЛЗ в протокол.
На экране тоже дата и время были "не правильными".
Почему последние 2 байта изменены, меня не спрашивать - не знаю...

Да, забыл написать, под сканами отметки старт-условия и стробы "подтверждения".
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
Но если ты мне сообщил такие результаты, что НП-ЭКЛЗ, как и старая Инфокристальная, отзывается на ложное старт-условие, и даже написал, как именно они отзываются, значит что??? Значит на самом деле таких результатов не было???
Результат этот был, фальсифицировать, что-либо мне смысла нет.
В чем тут смысл, не мое дело, а только если "результат был", то он был, а если не было, то, естессно, его не было. ; )))

Я уже писал, это "стрт-условие" работает в потоке данных.
Это что по-твоему? -
Цитировать
;НАЧАЛО:
;основная программа
o_pr0:   acall   r_c      ; чтение i2c
   jb   Err_B,o_pre0   ; никто не принял код 05h
   acall   Paus1      ; Пауза
   acall   wr_o      ; запись в ПЗУ
   jb   Err_B,o_pre   ; произошла ошибка записи ПЗУ
;
   clr   OnLOk      ; вкл. Ок
o_pr_o:   sjmp   o_pr_o      ; конец

r_c:   acall   i2sn      ; Старт-условие ФАЛЬШИВОЕ /точно также, как я сделал и в Орионе/
   mov   a,#05h             ; /точно также, как  в прошивке  Ориона/
   acall   i2w      ; отправить на шину код 05h /точно также, как  в прошивке Ориона/
   jb   Err_B,r_cs   ; никто код не принял
; т.е. имеем классическое начало обмена по I2C (как и в Орионе)
   mov   r0,Adr_P   ; куда читать
   mov   r2,Kol_R   ; сколько читать
   sjmp   r_ct      ; чтение шины

Это  твоя программа, в которой НП таки отзывается (по твоему сообщению) на 05 после "ложного" старт-условия и выдает ответ длиной в два байта.

"Старт-условие ФАЛЬШИВОЕ" - то самое, которое почему-то не работает на Орионе и которое теперь вдруг оказалось "нерабочим", парадоксальным образом еще недавно сработало в твоем эксперименте. Или оно сработало, или оно не сработало. Одно из двух с вытекающими отсель выводами.

Кстати, во вложении прошивка с "ложным" старт-условием, которое подменяет настоящее старт-условие в самом начале (где отправляется адрес 04). Как и ожидалось, при включении с НП-ЭКЛЗ получаем код ошибки 7F ("неисправн. при работе с эклз"). При включении же с безантовской все нормально.
Так что обработка старт-условия у НП-ЭКЛЗ даже качественнее, чем у безантовской. Т.е. среагировать на предполагаемое условие, когда SDA падает при низком SCL, она не может. Безантовская может, а НП - не может.

На этом мой интерес к этому обсуждению кончился. А "сканы" я даже смотреть не стану, так как не уверен в их происхождении.
« Последнее редактирование: 25/05/2011 16:01:28 от Юр »
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)
На шину выдается фальшивое "Старт-условие".
 Затем отправляется код 05h.
 Если на него никто не ответит, светодиод будет мигать, в РПЗУ ничего не будет записано.
 Если на код 05h будет получено "подтверждение" (чего быть не должно, поскольку небыло Старт-условия),
 то произойдет чтение 4-ех байт с шины i2c.
 Далее 4 байта будут записаны в РПЗУ начиная с адреса 00h.
 Если запись пройдет удачно светодиод будет гореть, если произойдет
 ошибка записи, будет мигать.
 Запись в РПЗУ происходит с выдачей "нормального" Старт-условия.

 Мои результаты:
 НП-ЭКЛЗ - в РПЗУ: 02,01,00,01
 ЭКЛЗ на которой написано ТЕНЗОР "Инфокристалл" - в РПЗУ: 02,01,00,01
 ЭКЛЗ ТЕНЗОР: записи в РПЗУ небыло.

Совесть меня совсем замучила, и я решил все-таки провести этот эксперимент "в чистом виде" - опять приспособил эту твою программку (откуда брал "фальшивое" старт-условие") к плате от Оки 102 и испытал.
Но результаты у меня получились диаметрально противоположными твоим.
Вот результат проведения с "ложным" (как в твоем оригинале) старт-условием:
Безантовская - ответ 02 01 00 01 (надо же, действительно клизмы отвечают на такую недокументированную посылку!)
НП-ЭКЛЗ висит, контрольный светодиод не загорается (может, моргает , не видно - малая программная задержка), записи в РПЗУ нет (в фискалке остались FF-ки).

Решил провести эксперимент с нормальным старт-условием, для чего убрал из твоей программы по адресу 0х8В очистку бита SCL.
Безантовская, как и ожидалось, ответили так же (02 01 00 01)
а вот НП-ЭКЛЗ выдала что-то оригинальное - 02 15 00 00
Чтобы просмотреть ответ полностью (полагая, что 15 в ответе также длина сообщения), увеличил число байт считывания до 15h), результат: 02 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 90 18 22.

В принципе, наскоро посмотрев ПО Микры 103К я видел там вроде как независимое от предварительной записи 04 обращение с кодом 05 ( в версии Ver10_0.103 это адрес 0х6DB6), хотя может, я просто поленился пройти по алгоритму подальше (я все микры ненавижу! ), если хочешь, посмотри сам. Но если это принять, то возможны какие-то не описанные в спецификации команды, которые исполняемы для Безантовской ЭКЛЗ и блокируют исполнение программы ККМ с НП-ЭКЛЗ. Ведь налицо различие ответа этих ЭКЛЗ на данное обращение. И если какая-нибудь такая посылка (команда) применяется в ПО ККМ, то это и приводит к неработоспособности КК с НП-ЭКЛЗ.

В ПО Орион 100К 2 версии я ничего "криминального" (недокументированного) не увидел, и наверное, поэтому Орион 100К нормально работает с НП-ЭКЛЗ. У меня есть прошивка Орион 110К в бинарном представлении (получена из объектного файла или кто-то прислал), но чтобы в ней разобраться в части работы с I2C, мне надо сначала поизучать доку на uPSD323х в части обращения к его аппаратному интерфейсу I2C (я так полагаю, что разработчики Орион 110К вряд ли отказались от его аппаратного использования). Если есть такое желание поразбираться, могу прислать файлы.

Но на мой взгляд, меньше всего причину неработоспособности Орион 110К с НП-ЭКЛЗ можно искать в частотных погрешностях интерфейса, уж здесь-то он "железобетонно" правильный.
« Последнее редактирование: 26/05/2011 15:49:27 от Юр »
Есть только  миг
 

Оффлайн Юр

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 1689
  • Похвалили: 49 раз(а)

а вот НП-ЭКЛЗ выдала что-то оригинальное - 02 15 00 00
Чтобы просмотреть ответ полностью (полагая, что 15 в ответе также длина сообщения), увеличил число байт считывания до 15h), результат: 02 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 90 18 22.
Хм..., поскольку контрольная сумма не совпала (ошибся в длине сообщения), решил, что это еще не полная последовательность. Увеличил число считываемых байт до 30 (с запасом), вот результат
02 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 90 18 22 29 00 D4 D4 (далее все FF-ки)
Выделенный байт равен контрольной сумме предыдущих байт (кроме, естественно, первого), а что за следующий D4, непонятно.
Запись оказалась рег.номером ЭКЛЗ.
« Последнее редактирование: 26/05/2011 16:48:29 от Юр »
Есть только  миг
 

Онлайн SkaT

  • Резидент
  • Ветеран
  • ****
  • Сообщений: 915
  • Похвалили: 38 раз(а)
...
Увеличил число считываемых байт до 30 (с запасом), вот результат
02 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 90 18 22 29 00 D4 D4 (далее все FF-ки)
Выделенный байт равен контрольной сумме предыдущих байт (кроме, естественно, первого), а что за следующий D4, непонятно.
Запись оказалась рег.номером ЭКЛЗ.
Что за последний байт, действительно непонятно.
А так, нормальный ответ для не активированной ЭКЛЗ.
 

Оффлайн Vkhunov

  • Новичок
  • Сообщений: 1
Ребята как заставить орион 110 к работать с эклз нп.Проблема активизировал и все.ТЕПЕРЬ С МОЕЙ ЗАРПЛАТЫ ТРЕБУЮТ ОПЛАТИТЬ НОВУЮ ЭКЛЗ БЕЗАНТ,ПОМОГИТЕ МЫ ЖЕ НЕ МИЛЛИОНЕРЫ!Если есть распайка как прошить центральную плату у этого ориона у нас их очень мало

 

Оффлайн tridentxp

  • Резидент
  • Эксперт
  • ****
  • Сообщений: 3309
  • Похвалили: 203 раз(а)
  • armвиль
Ребята как заставить орион 110 к работать с эклз нп.Проблема активизировал и все.ТЕПЕРЬ С МОЕЙ ЗАРПЛАТЫ ТРЕБУЮТ ОПЛАТИТЬ НОВУЮ ЭКЛЗ БЕЗАНТ,ПОМОГИТЕ МЫ ЖЕ НЕ МИЛЛИОНЕРЫ!Если есть распайка как прошить центральную плату у этого ориона у нас их очень мало


Есть такой звирь - альфой 400к завёца. проц в ней тоже как в 110 ом какой то там из серий uPSD3xxx. пару раз в ней активизировали НП - не включалась после активизации. повесили кондёр на сброс - попёрло - пашет и вроде как жалоб нэма.

« Последнее редактирование: 24/04/2012 09:54:49 от Bit »
профессия есть такая, АЗЭЛКА менять.
 

Оффлайн dvdt

  • Наш человек
  • Постоялец
  • ***
  • Сообщений: 209
  • Похвалили: 1 раз(а)
  • El pueblo unido jamás será vencido
  • Откуда: Кемерово
Попробуй сделать доработку, автор утверждает что работает (не пробовал).
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20