|
1-Wire без программных задержек, реализация 1-WIRE без программных задержек |
|
|
|
Dec 17 2014, 10:48
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-11-07
Из: киев
Пользователь №: 31 963

|
Всем Доброго времени суток! Нужна помощь в реализации обмена с датчиком температуры DS18B20 без использования конструкций типа: while (480 мкс) {ничего не делать}; есть таймер, двунаправленный порт с открытым коллектором, контроллер прерываний и проц 51 с тактовой 32 Мгц. Вопрос: что со всем этим делать)))?
|
|
|
|
|
Dec 17 2014, 12:06
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-11-07
Из: киев
Пользователь №: 31 963

|
Цитата(Сергей Борщ @ Dec 17 2014, 13:14)  Если в лоб - конечный автомат в прерывании таймера. Альтернативы - УАПП + конечный автомат в прерывании, УАПП + ПДП, SPI + конечный автомат в прерывании, SPI + ПДП или таймер + ПДП. таймер+ПДП очень итересно! подробнее можно? вариант с УАПП и СПИ не очень, требует аппаратной реализации 1-wire. хотелось обойтись 1-м выводом SOC. Цитата(MrYuran @ Dec 17 2014, 13:10)  Это для формирования тайм-слота. А вопрос был про пресенс импульс. Хотя с ним как раз проблем нет, допуски достаточно большие. Можно тупо поллить флаг таймера в основном цикле проблема как раз в словах "цикле" система заодно выполняет z-stack, так что никаких циклов опроса флага таймера!
|
|
|
|
|
Dec 17 2014, 13:52
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-11-07
Из: киев
Пользователь №: 31 963

|
Цитата(_pv @ Dec 17 2014, 15:32)  это еще надо чтобы ДМА было, а то у МК на 51 ядре обычно не так богато с периферией как у stm32. ДМА есть штук 5 и таймеров 3. это CC2530 Цитата(Сергей Борщ @ Dec 17 2014, 15:12)  Также, как по ссылке Lmx2315, только выводимые отсчеты при помощи одного канала DMA выводятся не в УАПП, а в порт по сигналам таймера и вторым каналом DMA считываются обратно не с УАПП, а с этого порта в память. После окончания обмена анализ считанных отсчетов. У x51 вроде была отраженная на порты бит-адресуемая область памяти? На 48 МГц STM32 я делал подобным образом через ноги трех портов одновременный ввод и вывод нескольких каналов ARINC-429 на 100 кБит. Спасибо, попробую разобраться как это происходит и где менять режимы таймера посоветуете? Там есть возможность подключить к порту выход таймера и менять счетчик по ПДП, также есть режим захвата у таймера. можно переключать. только как определять моменты переключений???
|
|
|
|
|
Dec 18 2014, 01:54
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Михаил3 @ Dec 17 2014, 13:48)  ...51 с тактовой 32 Мгц.Вопрос: что со всем этим делать)))? программировать, что же ещё то? Отлично работает на 51 тактовая 24, внутренняя 2мГц. куча датчиков 1wire (практически ограничение - кол-во ног), сканирование менее секунды, по всем датчикам. ногодрыг. отдельный таймер. конечный автомат с загрузкой адресса перехода при отработке. если сильно присмотритесь к протоколу - то увидите что точность тайм-аута необходимо выдержать только между синхро импульсом начала слота на чтении и записи. всё остальное настолько большие интервалы для ваших частот - что без проблем, вместе с ослинными ушами прячется любой слон.
|
|
|
|
|
Dec 18 2014, 09:04
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-11-07
Из: киев
Пользователь №: 31 963

|
Цитата(kolobok0 @ Dec 18 2014, 03:54)  программировать, что же ещё то? Отлично работает на 51 тактовая 24, внутренняя 2мГц. куча датчиков 1wire (практически ограничение - кол-во ног), сканирование менее секунды, по всем датчикам. ногодрыг. отдельный таймер. конечный автомат с загрузкой адресса перехода при отработке. если сильно присмотритесь к протоколу - то увидите что точность тайм-аута необходимо выдержать только между синхро импульсом начала слота на чтении и записи. всё остальное настолько большие интервалы для ваших частот - что без проблем, вместе с ослинными ушами прячется любой слон. слон прячется - носорог вылазит. весь обмен с датчиком нужно запихивать в прерывание или ПДП. по ПДП не очень понятно как дергать одной ногой, а не всеми (порт 8 ног в разном состоянии вход-выход) конечный автомат в прерывании по таймеру для меня пока сложноосмысливаемая штука... таймслот стека 320 мкс короче одного сброса датчика - 480.
|
|
|
|
|
Dec 18 2014, 17:55
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Михаил3 @ Dec 18 2014, 12:04)  ... по ПДП не очень понятно как дергать одной ногой, а не всеми (порт 8 ног в разном состоянии вход-выход)...таймслот стека 320 мкс 1) пдп вроде как должен настраиваться по ножкам конкретно (какие выводятся). согласитесь - пдп с выводом в порт не имел бы смысла, если бы не имел селективность по конкретным пинам. далее - думаю надо смотреть конкретный МК и конкретные примеры счупать. 2) тайм слот (тот который критичен) это между строб импульс при формировании одного бита. эти величины около 2-6 мкс. Что при указанных скоростях можно поддержать без труда. а 320 или там 480мс - то уже не принципиальные тайм ауты. т.е. плюс-минус пару десятков микросекунд - Вас никто не расстреляет. поверьте дураку. дальше рекомендую вкуривать мануалы по 1Wire и построить рыпку пример для более уверенного понимания нижнего уровня. Только финально тестируйте на длинных кабелях > 20 метров. тайм-ауты выпрямите получше. с осцилом завалы видны хорошо в линии. так-же рекомендую потестировать с помощью рашпель-метода постановки помех. так-же софт отшлифуете. в боевом варианте у вас потом будет как танк по пром зонам и на десятки метров...
|
|
|
|
|
Dec 18 2014, 18:30
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-11-07
Из: киев
Пользователь №: 31 963

|
Цитата(kolobok0 @ Dec 18 2014, 19:55)  1) пдп вроде как должен настраиваться по ножкам конкретно (какие выводятся). согласитесь - пдп с выводом в порт не имел бы смысла, если бы не имел селективность по конкретным пинам. далее - думаю надо смотреть конкретный МК и конкретные примеры счупать.
2) тайм слот (тот который критичен) это между строб импульс при формировании одного бита. эти величины около 2-6 мкс. Что при указанных скоростях можно поддержать без труда. а 320 или там 480мс - то уже не принципиальные тайм ауты. т.е. плюс-минус пару десятков микросекунд - Вас никто не расстреляет. поверьте дураку. дальше рекомендую вкуривать мануалы по 1Wire и построить рыпку пример для более уверенного понимания нижнего уровня. Только финально тестируйте на длинных кабелях > 20 метров. тайм-ауты выпрямите получше. с осцилом завалы видны хорошо в линии. так-же рекомендую потестировать с помощью рашпель-метода постановки помех. так-же софт отшлифуете. в боевом варианте у вас потом будет как танк по пром зонам и на десятки метров... длинные линии, помехи, осциллографы как для человека с радиотехническим образованием (меня) совершенно родные вещи, а датчик планируется для измеренияя температуры в домике в деревне как внутри так и снаружи, по результатам управляем теплым полом и электроотоплением (зима на дворе). максимальная длина шлейфа датчиков - метра полтора. остальное принял к исполнению.. изучаю нижний уровень. спасибо
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|