murlo 0 20 сентября, 2007 Опубликовано 20 сентября, 2007 · Жалоба Народ, подскажите хотябы кусок кода на асме под AVR для инициализации ключа. Испробовал уже все но не выходит. Все что в поиске есть надо как-то адаптировать, но помойму лучше писать самому. Схема по одной ноге резистор и стабилитрон. Может у кого есть исходники?! Общая задача считать серийник ключа и записать в епром. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rumit2000 0 21 сентября, 2007 Опубликовано 21 сентября, 2007 · Жалоба http://www.telesys.ru/electronics/projects.php?do=p038 Там очень подробно всё описанно о том как ключ обменивается инфой Да и здесь вроде как не раз обсуждалось (поиск рулит :) ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dima_Ag 1 21 сентября, 2007 Опубликовано 21 сентября, 2007 · Жалоба Общая задача считать серийник ключа и записать в епром. Протокол 1-Wire довольно прост. Начните с генерации импульса Reset и приёма ответа "Presence" от ключа. Посмотрите осциллографом, что именно передаётся в линию. Обязательно в симуляторе проверяйте временнЫе интервалы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murlo 0 21 сентября, 2007 Опубликовано 21 сентября, 2007 · Жалоба Протокол 1-Wire довольно прост. Начните с генерации импульса Reset и приёма ответа "Presence" от ключа. Посмотрите осциллографом, что именно передаётся в линию. Обязательно в симуляторе проверяйте временнЫе интервалы. Интервалы проверяю постоянно все соответсвует... подключил сейчас на два ввода через такую схемку (файл) Если коснутся таблеткой то на входе появляется около 470 мс импульс... но если опустить линию в 0 на 470 -500 мс, то ответ не приходит от таблетки... просто засада... А в поиске я уже все перерыл есть обрывки кода, именно формирование задержек и тд. так я по такому принципу и пишу могу приложить варианты... есои че Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dima_Ag 1 21 сентября, 2007 Опубликовано 21 сентября, 2007 · Жалоба Если коснутся таблеткой то на входе появляется около 470 мс импульс... но если опустить линию в 0 на 470 -500 мс, то ответ не приходит от таблетки... просто засада... Вы имеете в виду 470-500 миллисекунд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murlo 0 21 сентября, 2007 Опубликовано 21 сентября, 2007 · Жалоба Слушайте я тут вычитал из умного шита что при таком построении линии все начинается по другому... голова совсем дырявая... стала :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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PSP 0 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Сброс можно давать в любое время. Можно держать высокий уровень на линии хоть пол-часа, потом дать импульс сброса. И ограничение на длину сброса только "снизу" - т.е. не менее 480 микросекунд (а не _милли_). Это значит, что можете удерживать 0 теже пол-часа, а после подъема в 1 получите ответ на сброс в течении примерно 300 микросекунд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Сброс можно давать в любое время. Можно держать высокий уровень на линии хоть пол-часа, потом дать импульс сброса. И ограничение на длину сброса только "снизу" - т.е. не менее 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 мкс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PSP 0 1 октября, 2007 Опубликовано 1 октября, 2007 · Жалоба Спорить с документацией бессмысленно, но хочу уточнить, что в note 10 говорится не о сложности устройства, а конкретно об использовании режима прерываний, с чем мне лично за 10 лет разработки и использования разных (от DS1990 до DS2432) 1-Wire устройств столкнуться не пришлось. В note 11 говорится не просто о времени перед сбросом, а об интервале между сбросами и сбросом и обменом. Кстати опыт показывает, что 1-Wire устройство, впаянное в плату само формирует Reset response после включения питания без всяких сбросов, что подтверждает мои слова. Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
2al 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба почему не на С ? Appnote AVR318: Dallas 1-Wire® master AVR318.pdf ...The source code can be downloaded as a zip-file from www.atmel.com. ... примеры собираются Winavr и работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Спорить с документацией бессмысленно, но хочу уточнить, что в note 10 говорится не о сложности устройства, а конкретно об использовании режима прерываний, с чем мне лично за 10 лет разработки и использования разных (от DS1990 до DS2432) 1-Wire устройств столкнуться не пришлось.Фигню вы какую-то говорите. "interrupt responce" = реакция на прерывание, т.е. на ваш импульс сброса. Не забывайте, что при паразитном питании по время импульса сброса энергия для работы микросхемы берется из конденсатора внутри микросхемы. И через указанные в ноте 10 960мкс конденсатор просто разрядится и у микросхемы не хватит "сил" на ответ.В note 11 говорится не просто о времени перед сбросом, а об интервале между сбросами и сбросом и обменом.В ноте 11 говортся, что после импульса Reset надо выждать время прежде чем что-либо делать. И время это нужно для зарядки того же самого конденсатора.На самом деле это время входит в слот сброса, поэтому корректнее говорить не о "времени между" а о длительности второй фазы сброса.Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс."Смешались в кучу кони, люди"... tRSTH = 480мкс, из них tPDLOW = 60...240 мкс устройство отвечает, а оставшиеся 240...420 мкс заряжается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PSP 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Т.е. Вы спорите со строкой в документации "480mks <= tRSTL < бесконечность"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Т.е. Вы спорите со строкой в документации "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. Т.е. можно и "бесконечность" - ничего не сгорит, но и работать не будет. И это тоже следует из документации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PSP 0 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба Ну, раз начался серъезный разговор, давайте начнем с начала. Чуть выше Вы написали, что я путаю несвязанные понятия, хотя я всего лишь не стал подробно расписывать, что происходит в течении 960 мкс с момента _начала_ сброса. В свою очередь, хочу заметить, что Вы заблуждаетесь в в гораздо более принципиальном вопросе - смешивая presence pulse и interrupt pulse. Presence pulse выдают все устройства 1-wire, а interrupt pulse есть только у ds1994 и ds2404 в специальном режиме. Причем оба уже obsolete, а рекомендованные замены такого свойства не имеют. И растягивание импульса сброса за пределы 960 мкс помешает только этим устройствам выдать interrupt pulse (если включен соответствующий режим). Все эти рассуждения справедливы, конечно же, только для первого, "обнаруживающего", сброса. А дальнейшее поведение мастера зависит от конкретного устройства, как например нельзя трогать шину при записи EEPROM или работе SHA сопроцессора. Причем разговор изначально шел о простейшей системе из одного ds1990, для обнаружения которого на шине автор вопроса пытался делать странные вычисления момента подачи сброса. И, соответственно, мой ответ касался именно этой ситуации. Соглашусь, что возможно это прозвучало как общая рекомендация на все случаи жизни, а это, конечно-же не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 октября, 2007 Опубликовано 2 октября, 2007 · Жалоба а interrupt pulse есть только у ds1994 и ds2404 в специальном режиме.Хорошо, согласен. И растягивание импульса сброса за пределы 960 мкс помешает только этим устройствам выдать interrupt pulse (если включен соответствующий режим).Не только - я вам приводил цитату, что термометр с паразитным питанием может сбросится. И интересно, откуда будет брать питание та же DS1990A чтобы выдать presence pulse?Соглашусь, что возможно это прозвучало как общая рекомендация на все случаи жизни, а это, конечно-же не так.Я вашу фразу "Приступать же к обмену после сброса разумеется нужно через упомянутые 960 мкс." понял как "после окончания слота сброса надо обязательно выждать 960 мкс", а это конечно-же не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться