LOGGER v1.1

by GAV'2003.

Конструкция предназначена для снятия лога с таксофонов, не оборудованных детектором проводников (питание логгера от квадратной батарейки) Этот логгер фиксирует не логические уровни на контактах карты, а сами поступаемые команды. При этом не ведется учет сигналов на I/O карты. В большинстве случае этого достаточно.

В этой версии добавлена возможность удобного представления более 255 подряд пришедших команд CLOCK.

Описание работы:

При старте логгера настраиваются необходимые порты, прерывания и очищается ОЗУ для ведения лога. Инициализируется указатель на текущий байт в ОЗУ. Далее ожидается подача питания с такса на карту и проверка нажатия кнопки. После подачи питания разрешаются прерывания. Распознавание получаемых команд происходит по прерываням. В это время крутится цикл ожидания снятия питания с карты. Потом снова ожидание подачи питания и проверка кнопки.

Теперь по порядку о действиях логгера:

1) При приходе команды RESET указатель в ОЗУ сдвигается на 1 и в текущий байт заносится "1", после чего указатель снова сдвигается на 1.

2) При приходе команды WRITE указатель в ОЗУ сдвигается на 1 и в текущий байт заносится "2", после чего указатель снова сдвигается на 1.

3) При снятии питания указатель в ОЗУ сдвигается на 1 и в текущий байт заносится "3", после чего указатель снова сдвигается на 1. При этом инвертируется светодиод для отслеживания работы.

4) При приходе CLOCK значение текущего байта увеличивается на 1. сам указатель на текущий байт не меняется однако, в этой версии логгера (v1.1) при приходе более 255 клоков подряд в текущем байте записывается "FFh", а указатель сдвигается на след. байт, т.е. счет продолжается уже в следующем байте. (предложено Игорем)

5) Если в цикле ожидания подачи питания нажата кнопка, то запрещаются прерывания и содержимое ОЗУ переписывается в EEPROM. После этого инвертируется светодиод. Все, лог снят. Читаем на программаторе EEPROM, и расшифровываем полученный лог.

Вот пример полученного лога с такса ТМГС15280

(чтение при вставке карты, затем снятие 1 единицы при разговоре):

EEPROM:

0000: 01 01 68 03 01 01 68 01 ..h...h.

0008: 61 02 00 03 00 00 00 00 a.......

0010: 00 00 00 00 00 00 00 00 ........

0018: 00 00 00 00 00 00 00 00 ........

0020: 00 00 00 00 00 00 00 00 ........

0028: 00 00 00 00 00 00 00 00 ........

0030: 00 00 00 00 00 00 00 00 ........

0038: 00 00 00 00 00 00 00 00 ........

Расшифровка лога:

(hex)

01 - один CLK (не RESET !!! при RESET указатель тек. байта сперва сдвигается на 1 байт !)

01 - вот теперь уже RESET

68 - 104 раза пришел CLK (такс прочитал дамп карты - 13 байт)

03 - такс снял питание с карты. (А я набрал номер в это время ;-) )

01 - один CLK

01 - RESET

68 - 104 CLK (снова читает всю карту)

01 - RESET

61 - 97 раз CLK (такс дочитал до бита который надо стереть)

02 - WRITE (стер единичку, сволочь ;-) )

03 - Тут я закончил разговаривать, повесил трубку и нажал кнопку на логгере.

Вот такие вот дела...

Если в таксофоне стоит металлодетектор, то могу посоветовать собрать логгер на PIC12F629 прямо под площадкой карты с питанием от такса. Только надо будет прогу изменить так, чтобы каждая команда писалась сразу в EEPROM, и отмечать тогда можно не снятие питания с карты, а наоборот, подачу.

 

Схема логгера :

Карту подключаем параллельно таксу и ПИКу (кроме I/O (I/O идет на такс)); Землю подключить к GND карты !

исходник программы: source.asm