Страница 3 из 25
Добавлено: Ср авг 01, 2007 20:50:27
dx40
Нее, в свавр реализован только мастер.
Добавлено: Чт авг 02, 2007 08:22:23
Дмитрий О
Ог. Кстати, а если запитать МК от самого домофона, прокатит?
Добавлено: Чт авг 02, 2007 10:14:12
Дмитрий О
короч вот я нокодил проэкт на CVAVR с питанием от домофона. Знатоки СИ! Помогите разобраться с тем, что накодил

Не работает чет. Питание и от батарейки пробовал. всеравно. Тайминги ставил согласно
документу
Добавлено: Чт авг 02, 2007 10:21:58
Дмитрий О
кста забыл про схему
Добавлено: Чт авг 02, 2007 15:24:31
dx40
for (i=0; i<7>>x2)&1;
//Вычисляем бит шоб не терять потом время
y=0;
if (PIND.0==1) {
do { y++; } while ((y<30000)&&(PIND.0==1));
} //дождалить нуля, если не дождалисть пошли дальше по таймауту
if (nxt==0) { DDRD.0=1;delay_us(45);DDRD.0=0;}
else {if(PIND.0==0) { do { y++; } while ((y<60000)&&(PIND.0==0));}};
//Если выводим ноль то роняем шину на 45 мкс, если единицу то дожидаемся когда шина вернется в 1
При вставке сишного кода в сообщение он почему-то претерпевает необратимые изменения. Посему мой ответ в приложенном файле!
Добавлено: Пт авг 03, 2007 08:34:17
Дмитрий О
dx40, спасибо за помощь! Вчера целый вечер сидел врубал

А что в вас имеется ввиду под 30000 и 60000? Сколько мкс? Вот мой переделанный вариант. Считывание кода я пока не делал, т. к. у мну нету Tiny15L. Как куплю, займусь. Это будет ближе к 15 августа.
Очень интересует питание МК от домофона. Если при 3V ток у него 3 mA, то какой кондюк надо?

А этот 47 мкФ от домофона до пенсии будет заряжаться. Думаю, 5 мкФ.
Добавлено: Пт авг 03, 2007 08:45:12
Дмитрий О
Кстати, dx40, CRC вычисляется функцией w1_dow_crc8. И кстати, что такое b=(code>>x2)&1;?
Добавлено: Пт авг 03, 2007 09:39:23
dx40
Это я вычисляю нужный бит. i - номер байта x2 - номер бита &1 - наложение маски, т.к. интересует только первый бит.
Далее - 30000 и 60000 - это от балды, единицы мс, просто если не дождались импульсов от мастера, надо что-то делать, не ждать же их вечно...
Код: Выделить всё
for (i=0;i<=7;i++) {delay_us(46);read+=((2^i)*W1BUS_R); delay_us(15);}; //читаем 8 байт
Это мне не очень нравится. Читать надо не так. Алгоритм такой
Дожидаемся когда шина уйдет в 0
Ждем 15 мкс
Читаем бит
Ждем когда шина вернется в 1.
В документации указаны минимальные тайминги - на практике они могут быть и больше - например после записи бита мастер может подождать пару сотен мкс перед передачей следующего.
Опять же, смотри мой исходник. Он не очень красивый (не люблю си), но точно рабочий!
Добавлено: Пт авг 03, 2007 18:21:48
ARV
хлопцы, что-то я не понял, как вы реализуете чтение 1-wire... 15 мкс ожидания а потом чтение? по-моему, это на грани... почитайте
статью, возможно что-то станет более понятно... а
вот тутеще и исходники на ассемблере есть - чтоб вообще вопросов не осталось

Добавлено: Пт авг 03, 2007 19:24:13
dx40
Речь идет о чтении устройством(слейвом) команды от мастера. И читать надо именно через 15 мкс (+ время выполнения программы - еще несколько, а может и десяток мкс) после среза сигнала. Если промотать выше, то там тоже есть исходник (проверенно рабочий), в котором все это реализовано.
Добавлено: Пт авг 03, 2007 22:32:34
Pa5ha
Действительно. Я до сих пор не могу понять почему надо читать не позднее 15 мкс? Ведь если читать посередине, между длительностью сигнала 1 и сигнала 0, то получится точнее. Ведь переходные процессы в шине из-за паразитной емкости могут не закончится через 15 мкс. Т.е. я имею ввиду если мастер бросает шину и сразу читает, то это не есть правильно. Сколько в среднем "обычно" мастер держит шину при чтении бита?
Добавлено: Сб авг 04, 2007 08:53:04
Дмитрий О
Может кто-то определенно сказать, будет ли схема от домофона питаться? Или на батарейке придется?
Добавлено: Сб авг 04, 2007 09:22:14
dx40
Я думаю, можно сделать. Кондюк побольше поставить - должно хватить.
Добавлено: Сб авг 04, 2007 16:04:58
ARV
Извините, я не сразу вник, что речь об эмуляции ведомого (slave) - он действительно должен считывать шину как можно позже от начала тайм-слота - не грех и через 30-40 микросекунд, и даже позже...
А я по привычке все про ведущего думал...

Добавлено: Сб авг 04, 2007 21:22:43
Дмитрий О
dx40 писал(а):Я думаю, можно сделать. Кондюк побольше поставить - должно хватить.
Ан нет! В домофоне то подтяга 4.7 к минимум! Если кондюк 100 мкф поставить, то сколько он заряжаться то будет?

Думаю достаточно 4.7 мкФ, т. к. кондюк без подзарядки остается максимум 650 мкс, пока в линии 0,а МК при 1.5 МГц много и не кушает, т. к. только линию на землю закорачивает. Завтра померию, сколько домофон напруги дает.
Добавлено: Сб сен 01, 2007 19:11:07
TimON
Питание от домофона не прокатит, т.к. сабж всё-таки является "мультиключом". Как в таком случае предполагается производить считывание "донора" и выбор нужного ключа из памяти?
В качестве варианта лишь максимальное снижение энергопотребления через соответствующие режимы контроллера, выход из которых лишь по прерываниям от вывода эмуляции и кнопки, и питания от литиевого 3V элемента типа того что на материнках ставится.
ЗЫ:В инете где-то встречал готовое решение на PIC, представляющее собой эмулятор тупой таблетки и именно с "паразитным" питанием, там PIC в SOIC-8, SMD кондёр, еще какая-то мелочь( не помню что именно) и всё, заделывается в конструкцию подобную "оригиналу" и как там описано от оригинала ничем не отличается.
Добавлено: Ср сен 05, 2007 17:56:11
Степаныч
Всем доброго дня!Я хотел спросить:а если на ключе ничего не выгравлено то это уже не DS???
Добавлено: Ср сен 05, 2007 20:28:39
Мышонок
Зеленоградский
Ангстрем по-моему, аналоги DS делает.
Добавлено: Пн окт 01, 2007 16:43:17
Mikl9439
dx40 писал(а):...работает только один индикатор, который показывает код текущего действия (или ошибки).
A - ждем сброса
b - пережидаем сбррос
C - читаем комманду
d - выдаем ответ
E - эмуляция закончена
Если все правильно, то буквы мигают так быстро что их не заметно. Если какая-то буква отображается заметное время, значит произошла ошибка (например из-за плохого контакта со считывателем).
Собрал. Прошил. Включил. Считал ключ. Прочитал EEPROM – номер совпадает.
Для проверки режима имитации использую компьютер с переходником DS9097E и программу iBViev32 (чтобы каждый раз к домофону не бегать). Компьютер читает номера ключей на ура, а отмычку не видит.
При подключении индикатор выдаёт последовательно Е, А, С, Е, А, С... Каждый символ светится меньше секунды, но прочитать можно. Контакт со считывателем – хороший. Что ещё может быть?
Добавлено: Пн окт 01, 2007 18:48:41
dx40
Возможно считыватель использует команду Search Rom...