ARV 0 30 ноября, 2011 Опубликовано 30 ноября, 2011 · Жалоба Почему параллель? До начала чтения данных с датчиков , Вы работаете со всеми сразу игнорируя ID микросхем, а вот чтение для каждого своё.я делал небольшую модификацию библиотеки 1-wire и получил возможность работать на самом деле в параллель с 8-ю датчиками (а при высокой тактовой частоте и с бОльшим количеством), подключеным к 8 линиям одного порта AVR. при известном желании можно на самом деле одновременно получить результаты с 8 штук :) правда зачем - не понятно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 30 ноября, 2011 Опубликовано 30 ноября, 2011 (изменено) · Жалоба На 8 портов и еще с питанием на датчик все будет быстро, а при паразитном питании не уложитесь в одну секунду на 2 датчика ну никак. Ресет, ответ, проверка, посылка серийника критичны ко времени, что-то обрЭзать там не получится ... Изменено 30 ноября, 2011 пользователем Павлик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shaeto 0 1 декабря, 2011 Опубликовано 1 декабря, 2011 · Жалоба 1-wire вообще интересные устройства у них, особенно dac/adc, ключи и прочее. я предпочел к атмеге через I2C подключить драйвер DS2482-800 (или -100), недорого и удобно ну и данные по прерыванию валятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 1 декабря, 2011 Опубликовано 1 декабря, 2011 · Жалоба а при паразитном питании не уложитесь в одну секунду на 2 датчика ну никак. При девяти битах на выходе - в секунду 4 паразита с запасом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость Br.Misha 4 декабря, 2011 Опубликовано 4 декабря, 2011 · Жалоба http://kibermaster.net/rabota-s-shinoy-1-w...-ds18b20-k-avr/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
usav 0 8 декабря, 2011 Опубликовано 8 декабря, 2011 · Жалоба А у кого опыт паразитного питания? Какие основные моменты? Вот, думаю, что лучше уменьшить разрядность? Или при единственном датчике на линии это не имеет значения? Кто-то утверждал, что на паразитном питании получает лучшие результаты по длине кабеля, чем при постоянном питании. Как это может быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Нормально все работает на паразитном питании -50 ... + 127. Время заряда давать не менее 800-900мс, если длинна провода большая, подтяжку уменьшить нужно. После чтения дать 0, чтоб не было разогрева датчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
usav 0 13 декабря, 2011 Опубликовано 13 декабря, 2011 · Жалоба "Время заряда давать не менее 800-900мс" ---------------------------------------------------- Вы имеете в виду выдержку в "1 = +5В" после команды СТАРТ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pavel-pervomaysk 0 13 декабря, 2011 Опубликовано 13 декабря, 2011 · Жалоба Так будет понятнее ds_start: // andi flags,0xFC // чистим флаги rcall ds_reset // сброс cli // выключаем прерывания ldi tmp, 0x55 // соответствие ROM rcall ds_write // push zl // сохраняем адрес серийника push zh // rcall send_serial // посылаем 8 байт 1 код устройства 6 серийный номер 1 црц pop zh // восстанавливаем адрес серийника pop zl // ldi tmp, 0x44 // Посылаем команду конвертировать температуру rcall ds_write // sbi dal_port,ds_p sbi dal_ddr,ds_p sei // cbi portb,load // Load -> 0 rcall wait_075s // даем еденицу для конвертирования температуры минимум 800-900 мс ( о чем я говорил ) rcall ds_reset // cli // ldi tmp, 0x55 // соответствие ROM rcall ds_write // rcall send_serial // ldi tmp, 0xBE // Посылаем команду что сейчас будем читать датчик rcall ds_write // sei ldi xl,65 // Ждем 50 мкс rcall wait // cli rcall ds_read // читаем 12 бит cbi dal_port,ds_p sbi dal_ddr,ds_p // RESET Dallas ставим 0 чтоб избежать саморазогрев датчика rcall ds_bcd // ds_ok: // sei // ret // Выход из подпрограммы send_serial: // Посылаем 8 байт серийного номера в датчик DS18B20 // Адрес строки предварительно загружаем в Z ldi loop2,8 // send_c: // lpm tmp,Z+ // rcall ds_write // dec loop2 // brne send_c // ret // Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
usav 0 13 декабря, 2011 Опубликовано 13 декабря, 2011 (изменено) · Жалоба Понятно, спасибо, Павлик! Изменено 13 декабря, 2011 пользователем usav Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться