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

 
 
> 1 wire для AT89C4051, Проблема при считывании ID Ibutton
looter
сообщение Sep 2 2009, 08:35
Сообщение #1





Группа: Участник
Сообщений: 4
Регистрация: 2-09-09
Пользователь №: 52 149



Пишу программу авторизации пользователей посредствам ibutton под AT89C4051. Столкнулся с проблемой считывания ID с 1990А1.
Посмотрите на код, может где неправильно установлены задержки?? Данный софт заливался на контроллер и проверялся миандр. Сброс и запись команды READ ROM миандр показывает правильные времена задержки. Картинка на осцилогрофе соответствует заявленной производителем.
При чтении 8 байт начинают возникать проблемы: миандр постоянно показывает что принимаю 1
В качестве команды READ ROM использую 0х33h или 0х0Fh, в книге "Конструирование устройств на микроконтроллерах" Белова А.В. указывают что необходимо писать 0х0Fh в datasheet'e что разницы нет. Пробовал и то и другое - результат отрицательный.


В файле лежит код, написан на С под Keil uVision2.
Прикрепленные файлы
Прикрепленный файл  proverka.txt ( 3.22 килобайт ) Кол-во скачиваний: 76
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
looter
сообщение Sep 2 2009, 14:00
Сообщение #2





Группа: Участник
Сообщений: 4
Регистрация: 2-09-09
Пользователь №: 52 149



Функцией ow_on_line () я установливаю ноль на протяжении 704 мкс, потом отключаюсь т.е. устанавливаю на выходе ножки 1 жду 65 мкс и считываю что находится на ноже, если 1 значит устройства нет; 0 - есть. Или может я не правильно понимаю временные диаграммы при работе с ibutton 1990a???

Как я понимаю ваш ответ, мне еще необходимо один раз проделать данную процедуру??? а только потом отсылать 0х33 (или всеже 0x0F) в устройство??

Может ли быть проблема в том что нет задержки в конце функции, для выдержки полной длительности Presence puls = min 480 мкс??

Сообщение отредактировал looter - Sep 2 2009, 14:03
Go to the top of the page
 
+Quote Post
fmdost
сообщение Sep 4 2009, 00:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(looter @ Sep 2 2009, 18:00) *
Функцией ow_on_line () я установливаю ноль на протяжении 704 мкс, потом отключаюсь т.е. устанавливаю на выходе ножки 1 жду 65 мкс и считываю что находится на ноже, если 1 значит устройства нет; 0 - есть.

90uS надо.
Потом подождать 1mS. для надёжности.
Цитата
Как я понимаю, мне еще необходимо один раз проделать данную процедуру???

нет.
Цитата
а только потом отсылать 0х33 (или всеже 0x0F) в устройство??

0х33 надо, другие типы ключей работают только с 0х33.
Цитата
Может ли быть проблема в том что нет задержки в конце функции, для выдержки полной длительности Presence puls = min 480 мкс??

Вполне может. Только не после Presence puls, а от окончания reset, и не 480uS, а 960uS. СМ. выше.

Цитата(kolobok0 @ Sep 3 2009, 14:24) *
Глянул одним глазком код - не нашёл задержки после каждого байта. Возможно не туда смотрел - хз. Посмотрите даташит на 1-Wire внимательней. На паузы между байтами. Я пишу по памяти - посему не точно.

Паузы между байтами не требуются.
Go to the top of the page
 
+Quote Post



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

 


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


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