|
Эмулятор DS1990, не понятки с режим SLAVE 1Wire |
|
|
|
Jan 27 2006, 20:27
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-01-06
Пользователь №: 13 383

|
В Вашем случаи возможны две ситуации не работы эмулятора. Первый случай: не совсем правильная работа мастера. Второй случай: контролер рассчитан для приема не только DS1990, но и еще ключей типа «метаком» или «цифрал». В первом случаи проблема решается подбором временных интервалов (не очень вериться, что разброс +- 0,5мкс, недавно делал считыватель ключей и обратил внимание, что новые ключи срабатывают по минимальным интервалам указанных в даташатах, а для старых ключей пришлось расширять ворота до указанных в мануале. Второй случай не имеет программного решение, а только аппаратное из-за совершенно иного электрического протокола.
|
|
|
|
|
Jan 28 2006, 15:02
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700

|
Цитата(Иванов @ Jan 27 2006, 23:27)  (не очень вериться, что разброс +- 0,5мкс, недавно делал считыватель ключей и обратил внимание, а че не вериться то? временные интервалы считает таймер 0 делитель 1/8 и того один тик =500 нс при кварце 16 мнz так вот в моей процедуре чтобы задать 15 мкс стоит типа макроса ;----------------------- clr temp out tcnt0,temp w1: in temp,tcnt0 cpi temp,15*2 (!!!!15 - подчеркиваю) brlo w1 ;------------------- при 14 или 16 не работает вообще!!! при 15 достаточно надежно О как! конечно я сам в некотором недоумении есть конечно некоторые зацепки - в понедельник проверю насчет аппартной не совместимости на контролере стоит пик 12с508 счит нога через резистор 200 ом+ защитн стабиллитрон подведена на контактор- питалово 5 в куда уж больше совместимости то?
Сообщение отредактировал Kovrov - Jan 28 2006, 15:06
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Jan 28 2006, 19:43
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-01-06
Пользователь №: 13 383

|
Когда делал преобразователь кода в 1-Ware использовал диаграмму которая лежат в прикрепленном файле. Код дома не нашел, поэтому в двух словах логика работы моего эмулятора: Во-первых использовал вход внешнего прерывания (необязательно), и после передачи каждого слота переводил контролер в спящий режим. По отрицательному импульсу контролер просыпался, если нужно было передать “1” засыпал до следующего синхронизирующего отрицательного импульса. Если нужно было передать “0” то отсчитывал 15мкс, а затем переключал порт на выход и удерживал “0” 45мкс, далее опять переводил порт в ход и засыпал. И так весь пакет данных. Да кстати внутренней подтягивающей резистор не использовал. Проверял на контролерах нескольких производителей работал без нареканий.
Dallas1.bmp ( 68.63 килобайт )
Кол-во скачиваний: 218
|
|
|
|
|
Jan 29 2006, 02:15
|
Группа: Новичок
Сообщений: 2
Регистрация: 13-11-05
Пользователь №: 10 796

|
Это я удачно зашёл! (с) Неделю назад сам начал переделывать эмулятор с телесистем под АВР. Поставил себе цель использовать минимум деталей. Поэтому пишу для тини2313 (временно отлаживаю на 90s2313) из расчёта использовать встроенный генератор. 2 полные ночи убил, но так и не смог даже считать ключ  . 2 Kovrov Предлагаю скооперироваться в разработке - на данный момент могу помочь написать интерфейс (кнопочки, индикаторы) и работу с ЕЕПРОМ. Буду оооочень рад, если сможешь переписать считывание и эмулирование под 1 мег - я убеждён, что это реально (на телесистемах 2051 заводили на 12 мег, но команда там за 12 тактов выполняется). Что скажешь, сработаемся?
Сообщение отредактировал Последний - Jan 29 2006, 02:19
|
|
|
|
|
Jan 29 2006, 06:07
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700

|
Цитата(Иванов @ Jan 28 2006, 22:43)  Если нужно было передать “0” то отсчитывал 15мкс, а затем переключал порт на выход и удерживал “0” 45мкс, далее опять переводил порт в ход и засыпал. И так весь пакет данных. Да кстати внутренней подтягивающей резистор не использовал. Проверял на контролерах нескольких производителей работал без нареканий.
Dallas1.bmp ( 68.63 килобайт )
Кол-во скачиваний: 218собственно идеи у нас одинаковые, после того как отлажу временные диаграммы тоже хотел пересесть на инт0 временные интервалы имеено такие какие и у приведенной диаграммы... Цитата Неделю назад сам начал переделывать эмулятор с телесистем под АВР. Поставил себе цель использовать минимум деталей. зачем индикаторы зачем кнопочки? для меня видиться так тини13 в соике и диод и конденсатор для реализации паразитного питания все
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Jan 29 2006, 12:25
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Kovrov @ Jan 29 2006, 09:07)  для меня видиться так тини13 в соике и диод и конденсатор для реализации паразитного питания все Про паразитное питание лучше забудьте - частота нужна довольно высокая, электричества кушает изрядно, а через резистор 4К7 много не пролезет  Цитата считывание и эмулирование под 1 мег - я убеждён, что это реально Реально, но с некоторым напрягом - после фронта со стороны мастера есть меньше 10мкс (если делать совсем по-честному, то 1мкс) для выставления бита, а нужно еще решить, что выставлять, и выставлять ли вообще
|
|
|
|
|
Jan 29 2006, 15:22
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700

|
Цитата(aaarrr @ Jan 29 2006, 15:25)  Про паразитное питание лучше забудьте - частота нужна довольно высокая, электричества кушает изрядно, а через резистор 4К7 много не пролезет  Не зачем забывать... ибо на тини уже работает даже с предидущем алгоритмом и именно с паразитным питанием диод кд522+ 200мкф на кустарной платке круглого вида и на соике главное обеспечить грамотный спящий режим мало того сделал через еепром в цикле перебор 5 ключей вроде ок хотя завтра поработаю над новым алгоритмом чтения есть кое какие мысли
Сообщение отредактировал Kovrov - Jan 29 2006, 15:24
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Jan 29 2006, 16:20
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Kovrov @ Jan 29 2006, 18:22)  на тини уже работает даже с предидущем алгоритмом и именно с паразитным питанием диод кд522+ 200мкф Это не паразитное питание, а камень на шею мастера  С резистором 4К7 кондер будет заряжаться примерно 3.5 сек. И как поведет себя тини на мееедленно растущем питании без BOD и супервизора (ибо они жруть)? Я не хочу сказать, что это не должно работать (сам пробовал - немного работает), просто такой подход, ИМХО, не есть хорошо. P.S. DS1990 жрет единицы мка, что в случае с контроллером недостижимо.
|
|
|
|
|
Jan 29 2006, 18:03
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-01-06
Пользователь №: 13 383

|
Подброшу идею: Контролер взять с индексом V и питать его 1.8В, а для согласования с мастером сделать транзисторный преобразователь уровня. Схема конечно усложниться, но проблему питания частично решите.
|
|
|
|
|
Jan 29 2006, 18:09
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700

|
чем же камень? что разве проще таскать с собой батарею? и почему 3,5 сек? что 5 вольт? почему 5 вольт? почему без бод? а чем же это не хорошо? плавно растущее питание не хорошо только тем когда есть процедуры с еепром!!! и то когда нет бода все остальное не важно в этом представлении проекта.. и главное повторюсь (это паразитное питалово) - а это много значит!!!! эпоксидкой залил и вперед я думаю многие с этим согласяться... на самом деле сам люблю что было как часы но тут .... наплевать.... да и особо страшного ничего нету Цитата(Иванов @ Jan 29 2006, 21:03)  Подброшу идею: Контролер взять с индексом V и питать его 1.8В, а для согласования с мастером сделать транзисторный преобразователь уровня. Схема конечно усложниться, но проблему питания частично решите. какие преобразователи то? зачем? V как раз то что доктор прописал... лог 0 формируется открытым мосфетным переходом, тут да, - опираемся только на заряд кондера лог 1 - вообще ничего не надо Z -состояние вся надежда на резистор шины :-) а при приеме все ограничется встроенными диодами
Сообщение отредактировал Kovrov - Jan 29 2006, 18:17
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Jan 29 2006, 18:29
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Kovrov @ Jan 29 2006, 21:09)  чем же камень? что разве проще таскать с собой батарею? и почему 3,5 сек? что 5 вольт? почему 5 вольт? почему без бод? а чем же это не хорошо? плавно растущее питание не хорошо только тем когда есть процедуры с еепром!!! Зачем же столько эмоций?  Почему 3.5 сек - посчитайте. Чем не хорошо - посмотрите со стороны мастера, для него это будет выглядеть как 0 на шине, т.е. мертвое устройство. Плавно растущее питание не хорошо всегда. Цитата какие преобразователи то? зачем? V как раз то что доктор прописал... лог 0 формируется открытым мосфетным переходом, тут да, - опираемся только на заряд кондера лог 1 - вообще ничего не надо Z -состояние вся надежда на резистор шины :-) а при приеме все ограничется встроенными диодами Иначе у Вас всегда контроллер будет запитан через встроенные диоды. Очень красивая картина: входная нога->встроенный диод->внешний конденсатор на много-много мкф. Еще раз оговорюсь: для единичного экземпляра, пашущего на одного мастера, сойдет. Как универсальное решение - нет.
|
|
|
|
|
Jan 29 2006, 18:48
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-01-06
Пользователь №: 13 383

|
>а чем же это не хорошо? >плавно растущее питание не хорошо только тем когда есть процедуры с еепром!!! и то когда нет бода Вы не правы. Лично наблюдал изделия на AVR которые запитовались по длинным шлейфам. Так вот часть устройств просто не запускались, причем принудительный ресет пинцетом не выводил его из ступора. Запускался только после сокращение длинны шлейфа и заново подачи напряжения. P.S. Правда это было давно, во времена AT90S.
|
|
|
|
|
Jan 30 2006, 04:49
|

Мастер-фломастер
   
Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700

|
а при чем сдесь плавно растущее питание? и потом любой линейный стабилизатор - и есть плавно растущее питание... Цитата(aaarrr @ Jan 29 2006, 21:29)  Почему 3.5 сек - посчитайте. Чем не хорошо - посмотрите со стороны мастера, для него это будет выглядеть как 0 на шине, т.е. мертвое устройство. Плавно растущее питание не хорошо всегда.
Еще раз оговорюсь: для единичного экземпляра, пашущего на одного мастера, сойдет. Как универсальное решение - нет. я не думаю что это все фатально отразиться на работе мастера- типа увидел 0 на шине в течении 3.5 секунд и перегорел :-) и что значит универсальное решение?
Сообщение отредактировал Kovrov - Jan 30 2006, 04:49
--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
|
|
|
|
|
Apr 13 2009, 08:18
|
Группа: Новичок
Сообщений: 2
Регистрация: 13-04-09
Пользователь №: 47 588

|
Уважаемые!. Можно ли у кого поиметь исходник на ассемблере для реализации слэйва в 1-wire?
|
|
|
|
|
Apr 13 2009, 08:26
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Да пожалуйста. Но без комментариев и гарантий. CODE ;******************************************************************************* ;* ;* Version: 0.00 ;* Build: Апрель 11, 2005 19:49:50 ;* ;*******************************************************************************
.include "2313def.inc"
;******** Constants ************************************************************
.equ fck = 4000000
;******** Global Register Variables ********************************************
.def sreg = r15 .def a = r16 .def b = r17 .def txcnt = r18 .def txbcnt = r19 .def shift = r20
.def flags = r21 .equ MODE = 0x00 .equ RXD = 0x01
;******** SRAM Variables *******************************************************
.dseg
.org 0x60
.cseg
;******** Reset/Interrupt Vectors **********************************************
.org $000 rjmp reset ; Reset Handler rjmp irq0 ; IRQ0 Handler reti ; IRQ1 Handler reti ; Timer1 Capture Handler reti ; Timer1 Compare Handler reti ; Timer1 Overflow Handler rjmp tim0_ovf ; Timer0 Overflow Handler reti ; UART RX Complete Handler reti ; UDR Empty Handler reti ; UART TX Complete Handler reti ; Analog Comparator Handler
;******** Setup ****************************************************************
reset:
; Stack Pointer Initialization
ldi a, RAMEND out SPL, a
; PIO Initialization
ldi a, 0b00000000 out DDRD, a ldi a, 0b00000000 out PORTD, a ldi a, 0b11000000 out DDRB, a ldi a, 0b01000000 out PORTB, a
; Sleep Mode/WatchDog Initialization (PowerDown; WD Disabled)
ldi a, 0b00110010 ; INT0 Falling edge out MCUCR, a ldi a, 0b00011000 out WDTCR, a ldi a, 0b00010000 out WDTCR, a
; Analog Comparator Initialization
ldi a, 0b10000000 out ACSR, a
; Timer0 Initialization
ldi a, 0b00000100 ; CK/256 out TCCR0, a
; Interrupt Initialization
ldi a, (1<<INT0) out GIMSK, a
cli
;******************************************************************************* ; Main Program ;*******************************************************************************
clr flags ldi shift, 0x80 sei
main0: ldi shift, 0x80 andi flags, ~((1<<RXD)+(1<<MODE)) main: sbrs flags, RXD rjmp main cpi shift, 0x33 brne main0 andi flags, ~(1<<RXD)
sbi PORTB, 0x07
ldi ZL, low(code * 0x02) ldi ZH, high(code * 0x02) lpm mov shift, r0 ldi txbcnt, 0x08 ori flags, (1<<MODE) rjmp main
;*******************************************************************************
irq0: in sreg, SREG sbrc flags, MODE rjmp irq0_1
sbrc flags, RXD ; RX Mode rjmp irq0_exit ldi b, 0x14 ; 15us @ 4MHz irq0_0: dec b brne irq0_0 clc sbic PIND, 0x02 sec ror shift brcc irq0_exit ori flags, (1<<RXD) rjmp irq0_exit
irq0_1: lsr shift ; TX Mode brcs PC+0x02 sbi DDRD, 0x02 ldi b, 0x3c ;28 ; 30us @ 4MHz irq0_2: dec b brne irq0_2 cbi DDRD, 0x02 ldi b, (1<<INT0) out GIFR, b dec txbcnt brne irq0_exit adiw ZL, 0x01 cpi ZL, low(code * 0x02) + 0x08 breq irq0_4 lpm mov shift, r0 ldi txbcnt, 0x08
irq0_exit: ldi b, (1<<TOIE0) out TIFR, b out TIMSK, b ldi b, 0xf4 ; ~720us @ 4MHz out TCNT0, b out SREG, sreg reti
irq0_4: ldi shift, 0x80 andi flags, ~((1<<RXD)+(1<<MODE)) rjmp irq0_exit
tim0_ovf: in sreg, SREG ldi b, 0x00 out TIMSK, b cbi DDRD, 0x02 tim0_ovf0: sbis PIND, 0x02 rjmp tim0_ovf0 ldi b, 0x35 ; 40us @ 4MHz tim0_ovf1: dec b brne tim0_ovf1 sbi DDRD, 0x02 ldi b, 0xc8 ; 150us @ 4MHz tim0_ovf2: dec b brne tim0_ovf2 cbi DDRD, 0x02 ldi b, (1<<INT0) out GIFR, b ldi shift, 0x80 andi flags, ~((1<<RXD)+(1<<MODE)) out SREG, sreg reti
;*******************************************************************************
code: .db 0x01, 0x35 .db 0xb1, 0x87 .db 0x09, 0x00 .db 0x00, 0x68
;******** Revision *************************************************************
.org FLASHEND
rev: .dw 0x0000
|
|
|
|
|
Apr 13 2009, 08:32
|
Группа: Новичок
Сообщений: 2
Регистрация: 13-04-09
Пользователь №: 47 588

|
Большое человеческое спасибо.
|
|
|
|
|
Apr 13 2009, 16:22
|
Частый гость
 
Группа: Свой
Сообщений: 137
Регистрация: 3-09-04
Пользователь №: 594

|
Цитата(phstranger @ Apr 13 2009, 12:32)  Большое человеческое спасибо. Есть еще вариант. (я не проверял...).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|