Пока у меня нет возможности чего-то попаять, давайте подтянем «матчасть» — поговорим о связи между периферийными устройствами (читайте устройствами с этого блога) и Вашим проектом. Изобретать велосипед мы не будем (разве что совсем маленький), для общения между электронными устройствами существует множество интерфейсов (протоколов). Исходя из соображений экономии ресурсов Вашего проекта (памяти, времени выполнения процедуры обработки интерфейса, ножек, прерываний, таймеров и т.д.) не все интерфейсы нам подойдут. Для нас будут интересны лишь те интерфейсы, с которыми Вам будет легко работать, а легко работать с интерфейсами, которые аппаратно поддерживаются микроконтроллерами или легко реализуемых программно.
Вот список интерфейсов, с которыми мы будем работать.
Аппаратно поддерживаемые:
Эти интерфейсы не требуют особых ресурсов памяти и времени (работа на прерываниях). В языках высокого уровня (C, Pascal, Basic и т.д.) есть готовые процедуры для работы этими интерфейсами, поэтому их легко включить в работу основной программы.
UART (при условии согласования уровней, совместим с RS-232 и COM портом) – довольно старый и распространенный интерфейс для связи с периферией. Аппаратно реализован во всех современных микроконтроллерах.
SPI – самый быстрый и простой интерфейс. В любом микроконтроллере аппаратно реализован.
I2C (у Atmel он зовется TWI) – популярный двухпроводный интерфейс. Аппаратно реализован во многих микроконтроллерах.
Легко реализуемые программно:
Эти интерфейсы нестандартны, их нет в языках программирования, но они легки в обработке и не требуют сложного кода. Для определенных устройств могут быть предпочтительней аппаратно поддерживаемых интерфейсов.
BS – BitStream (битовый поток) – передача данных по одной линии в одну сторону (от устройства к главной схеме). Формат делал для своих нужд – понравился своей простотой. Отличается тем, что на приемной стороне практически не требует ресурсов и настройки (сам настраивается на частоту передатчика) и повесить можно на любую ножку контроллера.
PB – ParallelBits (параллельные биты). Это, даже, не интерфейс, а скорее «настроечные ножки». Нужен будет для того, чтобы задать режим работы устройства из нескольких возможных вариантов.
1WIR – это интерфейс, который позволит легко и дешево связать устройства в сеть как по одной линии, так и по IR каналу. Интерфейса еще не существует. Есть наметки его реализации. Я надеюсь, вместе мы его реализуем. Будет очень перспективный и интересный проект. Присоединяйтесь!
Особые:
1-Wire – однопроводный интерфейс от Dallas. Интересен простотой реализации сети устройств, но сложна программная реализация интерфейса (аппаратно поддерживает небольшое число контроллеров). Существует множество устройств, работающих с этим интерфейсом. 1-Wire — план на будущее. Будет время – буду добавлять устройства и с этим интерфейсом.
Каждое разработанное устройство в этом блоге я планирую выкладывать в нескольких вариантах интерфейсов, чтобы легче было приспособить для Вашего проекта.
Следующие статьи будут посвящены описанию интерфейсов (не бойтесь, все будет очень просто).
Фактически все последние мои устройства использующие ИК-пульт принимают команды от пульта по такому принципу который я задумывал для этого протокола.
Вот как примерно это выглядит http://www.getchip.net/posts/075-1w-ir-set-format-posylki/
Главная идея — сама посылка содержит бит который подстраивает приемник под любую частоту передачи
А есть пример протокола BS – BitStream (битовый поток)?
Уведомление: height increase after puberty
м в основном и пользуюсь.
Прошу прощения за очень быстрые ответы(, работа кипит), слейв уже почти почти готов еще пару штрихов осталось, мастер тоже почти готов, тоесть готов (все базовые ф-и шины), осталось решить как я буду скрещивать свой аппаратный драйвер 1-вирь, с подобием ПЛК, ну и команды управления драйвером, чтоб понимали друг-друга. уже было хотел все всунуть в драйвер (типа набираеш управляющую команду на терминале, а по нажатии Ентер она обрабатывается), но нужно чтоб устройство работало самостоятельно(, выполняло пусть и простенькую, но программу которая задается с терминалки, и также с нее можно и сменить… блин((( время сильно поджимает….
Угу — всегда относился с осторожностью ко всяким программным эмуляторам. Понятное дело, если схему физически невозможно собрать (не пришли детали или оборудование слишком хитрое), но если устройство несложное — то однозначно отладка на макетке!
Тем более алгоритм билдер имеет средства внутрисхемной отладки на подобие Debug Wire — грех этим не пользоваться!
@roma2005
Ато 😀 я как заметил эти чудеса и потребление ресурсов. То отказался от него. Притом давно живу под Linux а винду держать ради одной условно рабочей проги влом 🙂
Да все таки пртеус глючит при уменьшении количества устройств до 15 глюки пропадают).
Понял спасибо ), работаю дальше.
@roma2005
Я думаю что отведите по 8 и не парьтесь. Малоли что захотите добавить. И ещё помните баян как мужику 1 байта в кристалле не хватило 😀 ИМХО если не стоит задачи ужать то надо брать камень с запасом особенно в учебном проекте.