Перейти к содержанию
    

Народ, подскажите хотябы кусок кода на асме под AVR для инициализации ключа. Испробовал уже все но не выходит. Все что в поиске есть надо как-то адаптировать, но помойму лучше писать самому.

Схема по одной ноге резистор и стабилитрон. Может у кого есть исходники?! Общая задача считать серийник ключа и записать в епром.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.telesys.ru/electronics/projects.php?do=p038

Там очень подробно всё описанно о том как ключ обменивается инфой

Да и здесь вроде как не раз обсуждалось (поиск рулит :) )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Общая задача считать серийник ключа и записать в епром.

 

Протокол 1-Wire довольно прост.

Начните с генерации импульса Reset и приёма ответа "Presence" от ключа.

Посмотрите осциллографом, что именно передаётся в линию.

Обязательно в симуляторе проверяйте временнЫе интервалы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протокол 1-Wire довольно прост.

Начните с генерации импульса Reset и приёма ответа "Presence" от ключа.

Посмотрите осциллографом, что именно передаётся в линию.

Обязательно в симуляторе проверяйте временнЫе интервалы.

 

Интервалы проверяю постоянно все соответсвует... подключил сейчас на два ввода через такую схемку (файл)

 

Если коснутся таблеткой то на входе появляется около 470 мс импульс... но если опустить линию в 0 на 470 -500 мс, то ответ не приходит от таблетки... просто засада... :help:

 

А в поиске я уже все перерыл есть обрывки кода, именно формирование задержек и тд. так я по такому принципу и пишу могу приложить варианты... есои че

post-30700-1190373367_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если коснутся таблеткой то на входе появляется около 470 мс импульс... но если опустить линию в 0 на 470 -500 мс, то ответ не приходит от таблетки... просто засада... :help:

 

Вы имеете в виду 470-500 миллисекунд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слушайте я тут вычитал из умного шита что при таком построении линии все начинается по другому... голова совсем дырявая... стала :crying:

Короче когда таблеткой касаешься идет просадка линии на 15мс (зарядка внутреннего кондера) потом активность таблетки составляет 45 мс или 15мс+45мс=60... и в этот интервал (45мс) можно приступать к сбросу(470мс). Не кидайтесь помидорами но кажись оно работает... пока прошел сброс. Вот код

.include "tn2313def.inc";Define chip particulars

.def tmp=r16
.def tmp2=r17
.def delay_r=r18
.def delay_cc=r19
.def ADRS=r20
.def IADRS=r21

reset:
ldi tmp, low(ramend)
out spl, tmp
clr tmp

jdem:                
sbis PIND,2        ; ждем контакта
rjmp jdem          ; если есть контакт 
sbi DDRB,2         ;зажигаем LED2
sbi PORTB,2          

ldi delay_r, 1     ; инициализация задержки 50-60 us 8 Мгц
ldi delay_cc, 150
rcall delay      

Res:                ; подпрограмма RESET таблетки
sbi PORTB,0     ; линию в ноль 
                    ; замыкание на землю через  n-p-n транзистор
ldi delay_r, 5      ; инициализация задержки 473 us 8 Мгц
ldi delay_cc, 250
rcall delay      
cbi PORTB,0        ; линию в 1     
ldi delay_r, 1      ; инициализация задержки 5.8 us 8 Мгц
ldi delay_cc, 10
rcall delay    

jdem2:              ; ждем ответа далласа
sbis PIND,2
rjmp jdem2          ; если есть идем дальше

end:                  
sbi DDRB,1
sbi PORTB,1         ;зажигаем LED1
rjmp end
                    ; енддд  

; модуль реализации задержки

delay:             ; задержка устанавливается регистром delay_r
mov tmp,delay_r    ; кол-во повторов циклов 
mov tmp2,delay_cc  ; цисло циклов 0-255

delay_b:
mov tmp2, delay_cc 

delay_a:
dec tmp2
brne delay_a
nop
nop
dec tmp
brne delay_b
clr delay_r
clr delay_cc
ret

:smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сброс можно давать в любое время. Можно держать высокий уровень на линии хоть пол-часа, потом дать импульс сброса. И ограничение на длину сброса только "снизу" - т.е. не менее 480 микросекунд (а не _милли_). Это значит, что можете удерживать 0 теже пол-часа, а после подъема в 1 получите ответ на сброс в течении примерно 300 микросекунд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сброс можно давать в любое время. Можно держать высокий уровень на линии хоть пол-часа, потом дать импульс сброса. И ограничение на длину сброса только "снизу" - т.е. не менее 480 микросекунд (а не _милли_). Это значит, что можете удерживать 0 теже пол-часа, а после подъема в 1 получите ответ на сброс в течении примерно 300 микросекунд.

Имеет смысл обратить внимание на

Note 10: The reset low time (tRSTL) should be restricted to a maximum of 960 μs, to allow interrupt signaling; ...
Note 11: An additional reset or communication sequence cannot begin until the reset high time (tRSTH) has expired.

На ноту10 можно не обращать внимания, если на шине ничего сложнее DS1990 не предполагается.

На ноту11 забивать не стОит: чтобы любой ванварный слейв ответил на ресет, шина должна предварительно быть в высоком состоянии не менее tRSTH = 480 мкс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спорить с документацией бессмысленно, но хочу уточнить, что в note 10 говорится не о сложности устройства, а конкретно об использовании режима прерываний, с чем мне лично за 10 лет разработки и использования разных (от DS1990 до DS2432) 1-Wire устройств столкнуться не пришлось. В note 11 говорится не просто о времени перед сбросом, а об интервале между сбросами и сбросом и обменом. Кстати опыт показывает, что 1-Wire устройство, впаянное в плату само формирует Reset response после включения питания без всяких сбросов, что подтверждает мои слова. Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему не на С ?

 

Appnote AVR318: Dallas 1-Wire® master AVR318.pdf

...The source code can be downloaded as a zip-file from www.atmel.com. ...

 

примеры собираются Winavr и работают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спорить с документацией бессмысленно, но хочу уточнить, что в note 10 говорится не о сложности устройства, а конкретно об использовании режима прерываний, с чем мне лично за 10 лет разработки и использования разных (от DS1990 до DS2432) 1-Wire устройств столкнуться не пришлось.
Фигню вы какую-то говорите. "interrupt responce" = реакция на прерывание, т.е. на ваш импульс сброса. Не забывайте, что при паразитном питании по время импульса сброса энергия для работы микросхемы берется из конденсатора внутри микросхемы. И через указанные в ноте 10 960мкс конденсатор просто разрядится и у микросхемы не хватит "сил" на ответ.
В note 11 говорится не просто о времени перед сбросом, а об интервале между сбросами и сбросом и обменом.
В ноте 11 говортся, что после импульса Reset надо выждать время прежде чем что-либо делать. И время это нужно для зарядки того же самого конденсатора.На самом деле это время входит в слот сброса, поэтому корректнее говорить не о "времени между" а о длительности второй фазы сброса.
Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс.
"Смешались в кучу кони, люди"... tRSTH = 480мкс, из них tPDLOW = 60...240 мкс устройство отвечает, а оставшиеся 240...420 мкс заряжается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. Вы спорите со строкой в документации "480mks <= tRSTL < бесконечность"?
Нет, я говорю что вы ее интерпретируете неправильно. Причем я аргументировал - почему. А вы пока - нет. У меня в документации (DS18B20) английским по белому написано: Under parasite power, if tRSTL > 960us, a power on reset may occur. В документации на DS1990A другая приписка: otherwise, it could mask or conceal interrupt pulses if this device is used in parallel with a DS1994. Т.е. можно и "бесконечность" - ничего не сгорит, но и работать не будет. И это тоже следует из документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, раз начался серъезный разговор, давайте начнем с начала. Чуть выше Вы написали, что я путаю несвязанные понятия, хотя я всего лишь не стал подробно расписывать, что происходит в течении 960 мкс с момента _начала_ сброса. В свою очередь, хочу заметить, что Вы заблуждаетесь в в гораздо более принципиальном вопросе - смешивая presence pulse и interrupt pulse. Presence pulse выдают все устройства 1-wire, а interrupt pulse есть только у ds1994 и ds2404 в специальном режиме. Причем оба уже obsolete, а рекомендованные замены такого свойства не имеют. И растягивание импульса сброса за пределы 960 мкс помешает только этим устройствам выдать interrupt pulse (если включен соответствующий режим). Все эти рассуждения справедливы, конечно же, только для первого, "обнаруживающего", сброса. А дальнейшее поведение мастера зависит от конкретного устройства, как например нельзя трогать шину при записи EEPROM или работе SHA сопроцессора. Причем разговор изначально шел о простейшей системе из одного ds1990, для обнаружения которого на шине автор вопроса пытался делать странные вычисления момента подачи сброса. И, соответственно, мой ответ касался именно этой ситуации. Соглашусь, что возможно это прозвучало как общая рекомендация на все случаи жизни, а это, конечно-же не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а interrupt pulse есть только у ds1994 и ds2404 в специальном режиме.
Хорошо, согласен.
И растягивание импульса сброса за пределы 960 мкс помешает только этим устройствам выдать interrupt pulse (если включен соответствующий режим).
Не только - я вам приводил цитату, что термометр с паразитным питанием может сбросится. И интересно, откуда будет брать питание та же DS1990A чтобы выдать presence pulse?
Соглашусь, что возможно это прозвучало как общая рекомендация на все случаи жизни, а это, конечно-же не так.
Я вашу фразу "Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс." понял как "после окончания слота сброса надо обязательно выждать 960 мкс", а это конечно-же не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...