Новичок
|
Решили произвести измерение температуры с помощью данного датчика и микроконтроллера.
При программировании (в среде cvavr) и эмуляции в Proteus, выяснилось, что UART не работает должным образом, пришлось изменить его частоту.UART заработал, но датчик нет, датчик заработал лишь при частоте микроконтроллера 64 мГц, что является немыслимым в реальных условиях и скорости UART 76800 бит\с.Вот в чём может быть проблема, такой не состыковки передачи данных, подскажите пожалуйста.Есть предположение, что 1-wire шина работает в 8 раз медленнее. Ниже прикрепляю файл C++ и проект в Proteus. |
||
Оценка
|
Новичок
|
UART не предназначен для работы 1Wire. Есть теория и практика использования его, но достигается это методом подбора особенностей одного в другое.
1Wire протокол очень капризен в плане соответствия временным интервалам чётко по даташиту. Даже если у Вас заработало на столе, то ослинные уши могут полезть на более длинных дистанциях подключениях, когда фронты начинают заваливаться. Если Вам поиграться и забыться - то собственно пофигу внутренняя кухня протокола. Если Вам по серьёзному использовать этот протокол - то рекомендую самому реализовать протокол в рукопашную. Как ни странно это самый эффективный способ получить правильные результаты(работа с несколькими датчиками, поддержка полного протокола, дальности до сотни метров по пром зоне, более эффективное использование загрузки мк и т.д.). с уважением (круглый) |
||
Оценка
|
Новичок
|
Я вот подобрал такую скорость, но получается, что МК начинает нормально работать лишь при частоте 64 мгЦ, сами понимаете что 8-это потолок, в Протеусе то работает, а вот в жизни не знаю как подогнать
|
||
Оценка
|
Новичок
|
Вы пытаетесь родить велосипед, даже не велосипед а только его часть - колесо. При этом постоянно выравниваете углы на 90 градусов
Я не буду Вам давать ссылку на гугль, думаю он у Вас существует так-же. И в нём можно задать тему типа 1Wire через COM(либо UART). Почитать пару десятков ссылок русскоязычных. Это гораздо быстрее поймёте теорию чем пытаться рожать её заново. Или по другому. Если Вам говорят вектор, значит им уже кто-то ходил. И надо тупо поискать след этого решения в инете. Иначе, если не использовать опыт ранее накопленный, то можно остаться на уровне обезьяны. Есть проекты где люди подключают указанный протокол через последовательный порт компа. Есть проекты, где люди используют UART микроконтроллера(и всякие там пдп), для перекладывания всей логики ногодрыгания на аппаратную часть. Есть созданные библиотеки для этих целец под разные оси, камни, функционал... Т.е. работало несколько людей, разнесённых по городам, времени и опыту... Тут появляетесь Вы и заявляете, что дескать задача непосильная для порта. Согласитесь - фигня какая-то... удачи вам (круглый) ЗЫ Сам лично в рукопашную это реализую. На то есть собственные причины(асинхронная работа, поддержка кучи датчиков, обход аппаратных граблей датчиков, сканирование с высоким разрешением, с высокой периодичностью, быстро изменение условной компиляцией алгоритмов сканирования аппаратуры и самих 1Wire команд и т.п..). И под 51 серию, и под авр и под 32разрядки - везде дышит не в ущерб основным задачам.
Последний раз редактировалось kolobok0; 23.02.2016 в 16:09.
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |