gadzhe77 писал(а):
Я так и думал что уже кто то делалТут дело несколько в иной постановке задачи для себя самого, как мне представляется.
Вот есть комп с как бы гигантскими вычислительными возможностями. И есть некое железо у Вас (или у меня) на столе.
И реального инструмента для связи между ними как бы и нет.
Да, когда-то раньше был LPT-порт с конкретным количеством входных/выходных сигналов.
И мне надо было запрограммировать AVR-ку.
Это, вообще-то говоря, просто SPI-интерфейс (+ еще один выход на reset камня). Минимальное количество паек, как говорится.
И было это относительно просто - написал себе программатор, да и все (на HiAsm, конечно же, элемента LPT вполне хватило).
А вот уже с I2C не все так просто. Вообще-то, slave придерживает CLK (источником которого является master) в нуле, пока не станет готов к дальнейшей обработке. А master, хотя и выкинул CLK вверх - отсчет времени начинает только после того, как он реально поднимется в 1-цу (все slave-ы закончат удержание). Реализовывать такие фокусы программно можно конечно (это если еще Ваш LPT позволит это аппаратно), вот только достижимость скорости хотя бы 100 кбит/сек -- сомнения у меня вызывает.
И с 485-м непросто. А с Modbus-RTU - совсем уж непросто.
Вот предположим, мне надо прочитать пару десятков термодатчиков (скажем DS1822), которые все вешаются параллельно на одну витую пару по протоколу 1W.
Наверное (пока мне это нафиг нужно не было), можно найти и купить в интернет-магазинах такой девайс...
Но вот именно такой подход (можно найти и купить) меня утомил, мягко говоря -- еще на предыдущих этапах технического творчества.
Вот она разница в подходах: мне не нужен каскад девайсов под кучу задач. Мне нужен один универсальный, на котором я смогу решить (условно говоря) ЛЮБУЮ задачу.
Такие не продаются.
Поэтому я его сделал. Да, это не очень минимальное количество паек. Но это пайка ОДИН раз. Сегодня у меня УЖЕ спаяно, следовательно - с пайками нет проблем (для практически любой задачи). Между прочим, "полноценный LPT" тоже ведь кто-то паял, и только после этого возникло "минимальное количество паек".
Присмотритесь к схеме: там (на Atmega164) есть и аппаратный SPI, и аппаратный I2C, и аппаратный COM. Да и просто IO-пинов поболее чем в LPT будет. Вот я не знаю, умеет ли упомянутый Вами "полноценный LPT" вызывать прерывания по ACK. Зато знаю, что COM3 персональной активностью обладает. Опять же, I2C -- это многомастерный протокол. Если кто-то к Вам обратился, как Вы это определять будете, спрашивается...
Да, в сегодняшней прошивке нет 1W. Для этого мне пришлось бы добавить эти коды в AVR-ку. На один режим станет больше, и всего делов.
А нового девайса покупать не надо.
В качестве пюсов: гибкость и многофункциональность.
В качестве минуса: надо уметь программировать AVR-ку.