Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: две 1-wire шины в одном корпусе
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Anthoni
Добрый день друзья. Как в процессе работы переинициализировать шину 1-wire на другую ногу МК в cvavr?
GDI
Если используете встроенную библиотеку CVAVR, то никак. Пишите свою библиотеку или используйте готовую, которую можно поискать в исходниках программ и библиотек в прикрепленной теме.
haker_fox
Как раз готовлю статейку к своей библиотеке. Пока не совсем готово, но выкладываю сюда ПО + документацию. Библиотека работает, а дока не до конца оформлена. Сори! Да, Си++...
Anthoni
Понял. Изучаю вашу haker_fox документацию! Непонятно одно, прикрутится ли ваша C++ библиотека к проекту CVAVR?..
haker_fox
QUOTE (Anthoni @ Jun 20 2012, 23:37) *
Понял. Изучаю вашу haker_fox документацию! Непонятно одно, прикрутится ли ваша C++ библиотека к проекту CVAVR?..

Предлагаю Вам три решения решения:
1. Выкидываете CVAVR, если он не поддерживает Си++ rolleyes.gif
2. Переписываете библиотеку на Си. Это очень просто.
3. Понимаете идею указателей на порты ввода-вывода, заложенную в библиотеке, и пишите свою)))
hd44780
Я в своё время сделал тупо и примитивно - сдублировал все CvAVR-овские функции под разными именами и всё. Один "комплект" дёргает одну ногу, 2-й - другую.

Знаю, что некрасиво, жрёт в 2 раза больше флэша (чем могло бы), но так было проще и в той задаче работает.
А флэш свободный там ещё и остался rolleyes.gif .
haker_fox
QUOTE (hd44780 @ Jun 21 2012, 15:14) *
Знаю, что некрасиво, жрёт в 2 раза больше флэша (чем могло бы), но так было проще и в той задаче работает.
А флэш свободный там ещё и остался rolleyes.gif .

Да, как раз один из вариантов я упомянул в статейке. Сам так делал. Но дело даже не в потребляемой памяти. Дело в том, что исправления и нововведения придется делать дважды (трижды, четырежды...). А так, подкорячил базовый класс, перекомпилировал программу, и все)
ukpyr
haker_fox
токо непонятно что делать с этой библиотекой на других архитектурах (PIC, STM8, STM32).
привязка всей логики к архитектуре АВР - не лучшая идея.
_Артём_
Цитата(Anthoni @ Jul 3 2012, 16:09) *
А Си++ это avr studio?

С++ - язык такой...
И в avr studio а ним можно работать.
Anthoni
_Артём_ та понятно что язык sm.gif
ILYAUL
Цитата
Добрый день друзья. Как в процессе работы переинициализировать шину 1-wire на другую ногу МК в cvavr?

А на фига? Смысл в чём?
_Артём_
Цитата(ILYAUL @ Jul 3 2012, 20:02) *
А на фига? Смысл в чём?


Видимо, чтобы реализовывать 2 и более мастеров 1-wire.
ARV
Цитата(_Артём_ @ Jul 3 2012, 21:14) *
Видимо, чтобы реализовывать 2 и более мастеров 1-wire.

смысл наверняка в том, чтобы избавиться от геморроя с адресацией нескольких однотипных устройств. например, сделать устройство измерения температуры в двух или более точках при помощи DS18x20 достаточно геморная штука, если все датчики сажать на 1 линию: надо предусмотреть целую систему "обучения" девайса адресам новых датчиков с привязкой датчика к месту измерения... а если сделать 2 или более шины - то каждая может быть однозначно соотнесена с местом измерения и независима от адреса датчика (SKIP_ROM для обращения).

я делал либу поддержки до 8 1-wire-шин на одном порту (WinAVR), но все руки не дошли в реале ее испытать sm.gif в протеусе все работает
ILYAUL
Цитата(_Артём_ @ Jul 3 2012, 21:14) *
Видимо, чтобы реализовывать 2 и более мастеров 1-wire.

Цитата
до 8 1-wire-шин на одном порту

Т.е поставить мультиплексор , что бы ерундой не нагружать проц и пожалеть его ноги и альтернативные функции - это не наш метод?
А ещё повесить 1-wire на USART , что бы не тратить по посту процессорное время - прерывания великая сила. biggrin.gif
ARV
не хотелось бы устраивать дискуссию... но МК для того и ставят в схему, чтобы по максимуму его нагрузить, избавившись от мультиплексоров и прочей лабуды - не так ли? и ставить во главу угла освобождение МК от работы по меньшей мере странно: он железныйкремниевый - пусть пашет! sm.gif

судя по всему, интерфейс с пользователем при установке произвольных датчиков в уже изготовленный девайс у вас проблем не вызывает... а так же объяснение пользователю того, как именно отличить один черненький датчик от другого и почему их нельзя менять местами (на объекте измерения) без перенастройки девайса... вам можно только позавидовать sm.gif
Anthoni
Цитата(ILYAUL @ Jul 3 2012, 20:02) *
А на фига? Смысл в чём?


ARV полностью ответил за меня! laughing.gif Спасибо ему и превед с Р-кота rolleyes.gif


Кстати пытался прочитать температуру с обеих датчиков посаженых на одну шину - но так и не понял в чем проблема... результат всегда получал с одного, хотя обращался по адресу.
ILYAUL
Цитата
но МК для того и ставят в схему, чтобы по максимуму его нагрузить
Согласен на все 100.
Но смотря чем. Мне лично претит , когда остается у поцессора больше чем 4 не использованных pina . При этом проц не занимается пустым ногодрыганьем , а порты в большенстве своём заняты своими альтернативными функциями + математика. В проце основной упор сделан на том , что в нем собраны основные переферийные устройства, а порты В/В в прямом назначении - просто неизбежный придаток и не нужны особо и дется от них некуда.
Ну да ладно, оставим не нужный спор , причём с известным итогом - консенсусу не придём . biggrin.gif
Цитата
результат всегда получал с одного, хотя обращался по адресу

Так у них обычно разные адреса
Anthoni
Цитата(ILYAUL @ Jul 4 2012, 01:04) *
Так у них обычно разные адреса

Всегда разные. Обращался к каждому по его (заведомо полученному) адресу, а получал результат с одного и того же... Этот глюк я предпологаю из за CVAVR библиотеки, ибо много времени было потраченно в поиске своей ошибки.
_Артём_
Цитата(Anthoni @ Jul 4 2012, 01:24) *
Этот глюк я предпологаю из за CVAVR библиотеки, ибо много времени было потраченно в поиске своей ошибки.

Так почему бы не написать свою? Тем более 1wire-master гороздо проще чем slave и ко времени не критичен.
haker_fox
QUOTE (ukpyr @ Jul 3 2012, 21:15) *
haker_fox
токо непонятно что делать с этой библиотекой на других архитектурах (PIC, STM8, STM32).

Ничего не делать. Библиотека создана только для архитектуры AVR.
QUOTE (ukpyr @ Jul 3 2012, 21:15) *
haker_fox
привязка всей логики к архитектуре АВР - не лучшая идея.

К сожалению, я давно не работаю с PIC, с "стмками" вообще не знаком, а на ARM решаю более "высокие задачи", и "грузить" его соблюдением времянок (что маловозможно) не хочу...
Эту библиотеку, как сказано в документации на нее, я написал не просто так. Этого требовал один из проектов.... проектов на AVR.

QUOTE (ILYAUL @ Jul 4 2012, 06:04) *
Мне лично претит , когда остается у поцессора больше чем 4 не использованных pina .

Ну это Ваш подход! Мне, как и автору темы, проще даже 8 ног выделить для 1-wire устройств, чем заниматься реализацией более сложного алгоритма.

По документации: пока нет времени на ее доработку. У меня отпуск. Занят отдыхом) Как доделаю, выложу в прикрепленную тему с библиотеками...
GDI
Цитата(ARV @ Jul 3 2012, 21:51) *
я делал либу поддержки до 8 1-wire-шин на одном порту (WinAVR), но все руки не дошли в реале ее испытать sm.gif в протеусе все работает
Я тоже делал такую библиотеку, и она прекрасно работала и, надеюсь, до сих пор работает в реальных устройствах. К сожалению код привести не могу, потому что было это более 10 лет назад. Это вообще был мой первый проект на AVR. И, кстати, реализация была сделана под CVAVR как раз после того как я не смог стандартную его библиотеку заставить работать на разных портах, в общем, всё как у топик стартера sm.gif.
Кстати, потом я написал еще и слейва на 8 шин, для стенда тестирования устройства. Там было 8 переменных резисторов которыми можно было индивидуально установить температуру для каждого датчика.
ARV
дело в том, что библиотека под WinAVR легко портируется под любой компилятор - из принципиально важного требуется лишь поддержка программных задержек в микросекундах, остальное компиляторо-независимо sm.gif и, если реализовать работу с портами под конкретную платформу - аппаратно-независимо. чего не скажешь про CVAVR (хотя и в нем можно написать универсальный код - если не пользоваться его "доброй помощью").
haker_fox
Может быть когда-нибудь на досуге добавлю возможность задержки по таймеру, или вынесу все дело в таймерные прерывания, чтобы не нагружать процессор. У меня еще РТОС крутится, так вот, для точной выдержки времени используются критические секции, что не очень хорошо...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.