реклама на сайте
подробности

 
 
> DS1990 + DS2480B, Не считывается ROM ID DS1990
junkl
сообщение Nov 13 2007, 14:08
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Использую DS2480B для считывания электронного ключа DS1990.
Делаю последовательность считывания ROM ID как сказано в описании DS2480B:
1) master reset cycle - передаю 0 на скорости 4800
2) меняю скорость USART на 9600
3) передаю произвольный байт 01h (т.к. в в даташите написано, что на 1-й байт после master reset cycle ответа не будет, и это правда)
4) посылаю команду reset С1h
- при отсутсвии контакта ключа с контактором в ответ получаю CFh
- при поднесенном ключе к контактору получаю CDh (presence pulse)
5) передаю команду E1h для перехода в режим данных, в ответ ничего не получаю
6) передаю команду 33h - чтение ROM
- в ответ получаю 33h
7) передаю 8 раз FFh
- на каждый FF получаю в ответ тоже FFh, а должна получать ROM ID ключа!

В чем может быть проблема? Подскажите, пожалуйста! Уже несколько дней с этим ключом мучаюсь, а он не читается 05.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Glupen'
сообщение Nov 13 2007, 14:28
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 23-05-07
Пользователь №: 27 918



Плохо читали документацию.

1. годится.
2. usart контроллера на 9600 - пойдет
3. передаю произвольный байт 01h (т.к. в в даташите написано, что на 1-й байт после master reset cycle ответа не будет, и это правда)
А ЭТО ВЫ ГДЕ ВЗЯЛИ?

цитата доки:

A master reset cycle can also be generated by means of software. This may be necessary if the host for
any reason has lost synchronization with the device. The DS2480B will perform a master reset cycle
equivalent to the power-on reset if it detects start polarity in place of the stop bit. The host has several
options to generate this condition. These include making the UART generate a break signal, sending a
NULL character at a data rate of 4800bps and sending any character with parity enabled and selecting
space polarity for the parity bit. As with the power-on reset, the DS2480B requires a 1-Wire reset
command sent by the host at a data rate of 9600bps for calibration.

не 01h надо передавать, a команду 1-wire сброса: 0b110XSS01, где X-не важно, SS - выбор скорости 1-wire. именно по этому байту DS2480 калибрует свою скорость порта на 9600.

Пробуйте
Go to the top of the page
 
+Quote Post
junkl
сообщение Nov 13 2007, 19:51
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(Glupen' @ Nov 13 2007, 17:28) *
Плохо читали документацию.

1. годится.
2. usart контроллера на 9600 - пойдет
3. передаю произвольный байт 01h (т.к. в в даташите написано, что на 1-й байт после master reset cycle ответа не будет, и это правда)
А ЭТО ВЫ ГДЕ ВЗЯЛИ?

цитата доки:

A master reset cycle can also be generated by means of software. This may be necessary if the host for
any reason has lost synchronization with the device. The DS2480B will perform a master reset cycle
equivalent to the power-on reset if it detects start polarity in place of the stop bit. The host has several
options to generate this condition. These include making the UART generate a break signal, sending a
NULL character at a data rate of 4800bps and sending any character with parity enabled and selecting
space polarity for the parity bit. As with the power-on reset, the DS2480B requires a 1-Wire reset
command sent by the host at a data rate of 9600bps for calibration.

не 01h надо передавать, a команду 1-wire сброса: 0b110XSS01, где X-не важно, SS - выбор скорости 1-wire. именно по этому байту DS2480 калибрует свою скорость порта на 9600.

Пробуйте


Дело в том, что я так сначала и пробовала - не посылала никакого байта после master reset cycle. И в результате на команду сброса С1 (0b110XSS01) вообще не получала никакого ответа. Зависала в ожидании приема хоть какого-нибудь байта по usart. Долго мучалась, читала документацию и вычитала там фразу, которую перевела на русским примерно так: ЗА ИСКЛЮЧЕНИЕМ нескольких перечисленных команд (E1h, E3h и еще какой-то), Search Accelerator и ПЕРВОГО БАЙТА ПОСЛЕ master reset cycle, на все команды будет получен байт ответа.
Из чего я сделала вывод, что надо что-нибудь послать, чтобы на C1 получить ответ. Ведь C1 я посылаю именно после master reset cycle.
Только после посылки 01h у меня и заработал прием ответа на C1 и на все последующие команды.

Может это какая-то случайность и я неправильно перевела pdf, не знаю... Завтра процитирую этот кусочек (сейчас его нет под рукой), может объясните мне, что он означает.
Go to the top of the page
 
+Quote Post
Glupen'
сообщение Nov 14 2007, 07:36
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 23-05-07
Пользователь №: 27 918



опять цитирую:

In addition to the command codes explained in the subsequent sections the DS2480B understands the
following reserved command codes:
E1h switch to Data Mode
E3h switch to Command Mode
F1h pulse termination
Except for these reserved commands, the Search Accelerator control and the first byte after power-on
reset or master reset cycle
, every legal command byte generates a response byte. The pulse termination
code triggers the response byte of the terminated pulse command. Illegal command bytes do not generate
a command response byte.

видно? на все остальные "1-wire reset", кроме первого после сброса ds2480 вы будете получать ответ. А на первый - ответа нет, ds2480 калибрует скороть по нему, и не надо ждать от ds2480 ответа на этот байт.
Go to the top of the page
 
+Quote Post
junkl
сообщение Nov 14 2007, 11:34
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



С 1-ым reset-ом вроде бы понятно, а с чем все-таки может быть связано чтение FF вместо ROM ID ключа?

4) посылаю команду reset С1h
- при отсутсвии контакта ключа с контактором в ответ получаю CFh
- при поднесенном ключе к контактору получаю CDh (presence pulse)
5) передаю команду E1h для перехода в режим данных, в ответ ничего не получаю
6) передаю команду 33h - чтение ROM
- в ответ получаю 33h
7) передаю 8 раз FFh
- на каждый FF получаю в ответ тоже FFh вместо байтов ROM ID ключа.

Сообщение отредактировал junkl - Nov 14 2007, 11:35
Go to the top of the page
 
+Quote Post
Glupen'
сообщение Nov 14 2007, 11:51
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 23-05-07
Пользователь №: 27 918



Погодите. Первые три пункта переделали? пробовали?
там же скорость 1-wire задается.
Go to the top of the page
 
+Quote Post
junkl
сообщение Nov 14 2007, 14:53
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(Glupen' @ Nov 14 2007, 14:51) *
Погодите. Первые три пункта переделали? пробовали?
там же скорость 1-wire задается.

Пробовала. Сейчас вот так:
1) master reset cycle - передаю 0 на скорости 4800
2) меняю скорость USART на 9600
3) посылаю команду reset С1h (ответа не жду)
4) посылаю команду reset С1h
- при отсутсвии контакта ключа с контактором в ответ получаю CFh
- при поднесенном ключе к контактору получаю CDh (presence pulse)
5) передаю команду E1h для перехода в режим данных, в ответ ничего не получаю
6) передаю команду 33h - чтение ROM
- в ответ получаю 33h
7) передаю 8 раз FFh
- на каждый FF получаю в ответ тоже FFh, а должна получать ROM ID ключа.
Пробовала вместо С1 передавать С5, С9 и CD, чтобы все варианты скорости попробовать. Кстати SS=00 и SS=11 одно и то же? В обоих случаях написано reg. speed. Какую нужно скорость задавать? Ничего не понимаю.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01699 секунд с 7
ELECTRONIX ©2004-2016