043–Интерфейсы связи электронных устройств.

Автор: | 05.06.2010

ТитлПока у меня нет возможности чего-то попаять, давайте подтянем «матчасть» — поговорим о связи между периферийными устройствами (читайте устройствами с этого блога) и Вашим проектом. Изобретать велосипед мы не будем (разве что совсем маленький), для общения между электронными устройствами существует множество интерфейсов (протоколов). Исходя из соображений экономии ресурсов Вашего проекта (памяти, времени выполнения процедуры обработки интерфейса, ножек, прерываний, таймеров и т.д.) не все интерфейсы нам подойдут. Для нас будут интересны лишь те интерфейсы, с которыми Вам будет легко работать, а легко работать с интерфейсами, которые аппаратно поддерживаются микроконтроллерами или легко реализуемых программно.

Нужна связь!

Вот список интерфейсов, с которыми мы будем работать.
Аппаратно поддерживаемые:
Эти интерфейсы не требуют особых ресурсов памяти и времени (работа на прерываниях). В языках высокого уровня (C, Pascal, Basic и т.д.) есть готовые процедуры для работы этими интерфейсами, поэтому их легко включить в работу основной программы.

UART (при условии согласования уровней, совместим с RS-232 и COM портом) – довольно старый и распространенный интерфейс для связи с периферией. Аппаратно реализован во всех современных микроконтроллерах.

SPI – самый быстрый и простой интерфейс. В любом микроконтроллере аппаратно реализован.

I2C (у Atmel он зовется TWI) – популярный двухпроводный интерфейс. Аппаратно реализован во многих микроконтроллерах.

Легко реализуемые программно:
Эти интерфейсы нестандартны, их нет в языках программирования, но они легки в обработке и не требуют сложного кода. Для определенных устройств могут быть предпочтительней аппаратно поддерживаемых интерфейсов.

BS – BitStream (битовый поток) – передача данных по одной линии в одну сторону (от устройства к главной схеме). Формат делал для своих нужд – понравился своей простотой. Отличается тем, что на приемной стороне практически не требует ресурсов и настройки (сам настраивается на частоту передатчика) и повесить можно на любую ножку контроллера.

PB – ParallelBits (параллельные биты). Это, даже, не интерфейс, а скорее «настроечные ножки». Нужен будет для того, чтобы задать режим работы устройства из нескольких возможных вариантов.

1WIR – это интерфейс, который позволит легко и дешево связать устройства в сеть как по одной линии, так и по IR каналу. Интерфейса еще не существует. Есть наметки его реализации. Я надеюсь, вместе мы его реализуем. Будет очень перспективный и интересный проект. Присоединяйтесь!

Особые:
1-Wire – однопроводный интерфейс от Dallas. Интересен простотой реализации сети устройств, но сложна программная реализация интерфейса (аппаратно поддерживает небольшое число контроллеров). Существует множество устройств, работающих с этим интерфейсом. 1-Wire — план на будущее. Будет время – буду добавлять устройства и с этим интерфейсом.

Каждое разработанное устройство в этом блоге я планирую выкладывать в нескольких вариантах интерфейсов, чтобы легче было приспособить для Вашего проекта.

Следующие статьи будут посвящены описанию интерфейсов (не бойтесь, все будет очень просто).

(Visited 485 times, 1 visits today)

043–Интерфейсы связи электронных устройств.: 59 комментариев

  1. fkvfaydar

    А про программный уарт будет? очень уж хочу его на 13ой тиньке

  2. GetChiper Автор записи

    Ну если нада, то будет :). Тем более лишний UART даже в Mege не помешает.

  3. Ghjuhfvvf

    Предложение для «планов на будущее» — реализация 1-wire в ключе для домофона, способного копировать ключи и сохранять их в памяти и, при необходимости, выбирать тот или иной ключ и открывать… В принципе, такой я себе собрал и он прекрасно работает (при желании могу дать ссылку), проблема в том, что хочется самому разобраться что и как, а так как начинаю только постигать сею науку, то приходится туговато… А у Вас, уважаемый Евгений, просто пропадает преподавательский дар… Не буду лукавить, проще разбирать написанный Вами на АВ программу, многие авторы выкладывают только hex (очень жаль, хотя это авторское право), а изучать что-то на конкретных примерах эффективнее … как говорится, теория и практика.

  4. GetChiper Автор записи

    Возьму на заметку.

  5. roma2005

    Добрый день! Евгений у Вас случайно не завалялась процедура поиска ПЗУ на АБ для шины 1-Wire? Очень сильно нужно и еще-бы подпрограмму подсчета CRC но если можно не табличным методом (память то ограничена…). В свою очередь обещаю поделиться несколькими своими проектами под ключ (схема, печатка (в ДипТрейсе), НЕХ, проект в АБ+ пару фото), автомобильный термометр, и терморегулятор, кодовый замок на таксофонной карточке. дальше будет неплохой проект автоматики для витрин-холодильников готов где-то ~50% но щас времени остро не хватает. Бьюсь с SEARCH ROM…

  6. GetChiper Автор записи

    С ПЗУ еще не ковырялся — как-то надобности не возникало. CRC буду делать для IR-сети — обязательно поделюсь (нужны какие-то особые характеристики? определенный полином?). Очень рад буду Вашему участию 🙂

  7. roma2005

    У меня для 1-Wire на АБ есть все процедуры кроме поиска ПЗУ и поиска ошибок для частоты кварца 4МГц, недавно в нете нашёл на асемблере, часть переделал на билдере, осталась процедура поиска ПЗУ и генерации СRC(но расчет контр.сумы там табличным методом), срочно надо и то и то перевести но времени катастрофически не хватает… подскажите как вам переправить эти файлы поделюсь с радостью (особенно если поможете перевести нужные мне процедуры на билдер), в принцыпе по 1-проводной шине у меня инфы где-то около 10 метров поделюсь всем не жадный.

  8. GetChiper Автор записи

    В закладке «О проекте» есть мыло, можно через него.

  9. roma2005

    16-ть метров медленно уплывают) через пол-часа проверяйте, асмовские подпрограммы и то что я уже переделал на АВ (проверил тоже) отправлю чуть позже.. ща на выезд убегаю. И очень-очень большая просьба если есть свободное время помогите перевести недостающие асмовские подпрограммы на билдер (контр сума и поиск ПЗУ), по зарез надо.. просто жизнено необходимо… не успеваю курсак сделать.. ща железом занимаюсь… когда все сделаю и приведу в надлежащий вид поделюсь… в прринцыпе будет прикольное устройство… оно сможет работать с сетью 1-вире, будет иметь связь с компом по рц-232, и с него-же будет конфигурироваться его логика работы… в принцыпе само по себе как-бы и не нужное, но даже на нем можно в принцыпе уже много сделать (конкретно можно будет настроить реакцию устройства на ответи однопроводных приборов, тоесть к примеру на каком-то датчике температура дошла до определенного значения пошла команда другому устройству сделать то-то, сработал гдето концевик на другом приборе к примеру зажглась лампочка… и т.д. на скока хватит фантазии) прибор будет как-бы обучающе показательный… но на его базе замутить моно будет все что угодно..
    Уф и на строчил.. сам запутался в том что сказал но думаю вы разберетесь)

  10. anatoliy

    @roma2005
    Ну а прямым расчётом у вас по таймауту связь не оборвется! Табличный метод самый реактивный если проц не умеет умнажать и делить регистры за 1 такт. а у нас 8 разрядные РОН. Проще смирится и юзать таблицу!Не мне вас учить программированию. Скажу что у мя АVR считал выполнял цифровую фильтрацию,FFT , считал распределение, и принимал данные и обрабатывал UART и индикацию с кнопками!

    ИМХО Может вы не знаете как использовать константы из памяти программ?

  11. roma2005

    @anatoliy
    памяти жалко, не хотелось большой контролер использовать но видимо придется… да и развернуться будет где ). Да еще попутно вопрос: на АВР-е слейв 1-Wire уже делал ктото и как успехи? а то чтото сильно жаба давит отдавать 60 грн. за двухканальный ключ. Да и свое устройство есть свое устройстово заточеное именно под то что тебе надо и подстраиваться ни под кого не надо. Да и количество каналов можно увеличить и добавить какой-то интелект, а не просто вывести на порт или считать инфу, (да и цена tiny13 -7грн., tiny2313 — 13грн.)

  12. anatoliy

    @roma2005
    Это tiny2313 Большой контроллер? 😀 Да слейв делал ка-то аля универсальный ключ. Прошло на ура 🙂 Главное соблюдать спецификацию производителя. Описание конструкций валом в сети.
    Имхо думать о цене МК для экспериментального изделия глупо 🙂 И так в 10-100 раз дороже маленькой серии получается. 1-2$ вполне справедливая цена на Tiny2313.
    Я у ся поддерживаю в коробочке запас около 10 штук. Самый классный МК из AVR по цена/возможности.
    Еще могу посоветовать выкинуть АБ подальше. Т.к. Этот птичий язык пригодится толь-ко вам. Серьёзный специалист да-же не будет тратить свое время на изучение это-го птичьего языка 🙁

  13. roma2005

    anatoliy :
    @roma2005
    Это tiny2313 Большой контроллер? Да слейв делал ка-то аля универсальный ключ. Прошло на ура Главное соблюдать спецификацию производителя. Описание конструкций валом в сети.
    Имхо думать о цене МК для экспериментального изделия глупо И так в 10-100 раз дороже маленькой серии получается. 1-2$ вполне справедливая цена на Tiny2313.
    Я у ся поддерживаю в коробочке запас около 10 штук. Самый классный МК из AVR по цена/возможности.
    Еще могу посоветовать выкинуть АБ подальше. Т.к. Этот птичий язык пригодится толь-ко вам. Серьёзный специалист да-же не будет тратить свое время на изучение это-го птичьего языка

    нет большой контролер класса mega, тини2313 я тоже люблю в основном все почти на нем. Мне билдер нравится просто и наглядно мне хватает одно плохо библиотек нету, а так то тот-же асемблер токо в красивой шкурке просто и удобно изучать МК, сильно подкупает наглядность и простота работы. Си тоже изучаю по тихоньку, но покаместь АБ за глаза хватает.. каждому свое.. если серьезный поект то конечно на СИ и проще и быстрее.. а если не хватит АБ буду писать на СИ

  14. anatoliy

    СRC8 и поиск ПЗУ вполне влезут в Tiny2313 так-же индикация клавиатура и комутация микро АТС 🙂 Если коротко домофон на ней получается на ура:-)
    АБ лучше выучите ASM. Толку больше будет. А так только время тратите своё которого у вас как у студента не так много 🙂 (пример устроитесь на работу спросят на чем для МК писал? Скажиш АБ и пошлют работу искать 🙁 Как-то одного у нас послал.) Да и на С проще будет. Посмотреть что там компилятор наворочил. Или при дизасамбелировании. ИМХО АБ это как 5 нога корове. Лучше уж барсик для МК 😀 То-же наглядно.
    С лучше из за абстракции но при решении задачи на МК всё равно приходится использовать специфику. Если уж абстрагироваться на C++ но там писанины много. Мне лень 🙁 Я пишу на С а критические задачи вставками на ASM. Целиком на ASM лень. Хотя иногда когда много пишу на ASM путаю команды Z80 I80386 8051 AVR. И ни как не могу от это-го избавится! Туплю в код и не могу понять что компилятор ругается всё же правильно 🙁

  15. roma2005

    У меня тема курсового «реализация сети 1-Wire на МК АВР», как среду разработки утвердили АВ, да и занаю я его на данный момент найлучше, мне ща диплом сдать надо прежде всего, а самообразованием я постояно занимаюсь и на дальнейшее ориентируюсь на асм или с, но ща с моего уровня зананий проще сделать на том что могу (тем более что знаний в принцыпе достаточно)нежели разбираться в тонкостях С и голого асемблера

  16. roma2005

    опячатка сдаю не курсак а диплом ).

  17. anatoliy

    Ок! Раз утвердили деваться некуда 🙂 С аргументами согласен.

    @roma2005
    Не обижайтесь но ИМХО проект должен быть такой что-бы об него все зубы по выламывать! Кто-же на лехких примерах учится? Вон мне мой наставник рассказывал: Он учился в Новосибирске. У них лабораторки по электронике делали на РЕАЛЬНЫХ РАКЕТАХ. А уж про курсовые и дипломники вобще молчу. И все с гос комиссией и с испытаниями и реальными стрельбами. А сейчас:»Ну что по 100$ c рыла и всем зачет». И чему научится в тепличных условиях?

  18. anatoliy

    @roma2005
    Хотя это против моих правил могу помочь c 1Wire. А что там за сложность с поиском ПЗУ? Подключил пошла зарядка кондера. Мк понял что новое устройство на шине. Далее спрашивате ты кто. Оно отвечает я EEPROM # такой-то. И все дальше поехали. ПЗУ нашли (писал по памяти в ответе не уверен) Почитайте описание протокола от Dallas там все подробно описано! Совет: соблюдайте тайминги. Иначе проблем ни обирётесь!

  19. GetChiper Автор записи

    Может и вправду табличный метод использовать? Для CRC-8 256 байт — думаю приемлемо. Если без таблицы приодеться возиться с посылкой побитно. Хотя при программной реализации протокола все равно прием идет побитно. Подумайте об этом.

  20. roma2005

    не прикол в том чтоб работать не с одним устройством на линии, для работы с одним устройством разобраться мне даташита хватило дальше все писал сам тут вопросов нет, команда чтение ПЗУ и все в ажуре, прикол в том что на линии сразу работает несколько устройств и МК должен сам найти их серийники . Вообще сама суть работы прибора должна быть такая:
    1. есть сеть 1-выре 10..30 мож и болльше устройств (главное чтоб памяти МК хватило), устройство по рц232 подключено к компу (гипертерминал к примеру) комп командует произвести поиск устройств, в ответ получает список серийников всех устройств на лини , определение типа устройства по коду семейства… потом когда мы это имеем (несколько термометров, ключей(меток),портовых комутаторов…), и знаем что от них ждать програмируем работу устройства … типа на устройстве 1 температура > 50 градусов то в устройстве 4 выключить канал 2, ели спала ниже 20 то в устройстве 4 выключить канал2, в устройстве 3 вход 1 вкл. включить в устройстве 5 канал 3, и т.д. также паралельный вывод своего текущего состояния на терминал. Типа некоторый такой универсальный автомат с гибкой конфигурацией. самое главное чтоб весь обмен был по сети 1-вире. а реализация слейва на 1-вире то воще красота будет… да и дешевле так на много будет(карман у меня не безразмерный). А 100 баксов а точнее на порядок больше ( мне самому пригодятся тем более что не совсем тупой и как вы сами говорили в дальнейшем мне работать… (что опять баксы кому-то платить чтоб мою работу делали?)

  21. roma2005

    GetChiper :
    Может и вправду табличный метод использовать? Для CRC-8 256 байт – думаю приемлемо. Если без таблицы приодеться возиться с посылкой побитно. Хотя при программной реализации протокола все равно прием идет побитно. Подумайте об этом.

    из-за чего и не хотел использовать табличный метод… а 256 байт + немного самого кода вот уже больше чверти памяти и нету… хотя всеравно мастер на меге будет наверное, в 2313 врятли все это влезет(, на 2313 слейвы организую, к примеру 8 на выход, или 8 на вход, или 4 туды а 4 туды, на тини13 АЦП можно сделать типа какой-то аналоговый датчик… плюс неболльшой интелект можно всунуть типа термостат програмируется по шине, автономно поддерживает температуру еще и сообщает ее мастеру. тут особых указаний не было так что свобода мысли), фантазии в меня в принцыпе хоть отбавляй, а вот с временем блин( туго да и на работе (((((((((( завал полный…

  22. anatoliy

    @roma2005
    Там должен быть брадкаст (широковешательный) запрос типа кто в сети отзавитесь. И они по очереди отзываются.
    Уговарили 😉 щас схожу на Dallas скачаю датасшид на протокол подумаю чем можно помочь 🙂

  23. anatoliy

    @roma2005
    Так то программная память! У АVR гарвардская архитектура. Память программ и данных разделена. Смело расходуйте всю до упора.

  24. roma2005

    anatoliy :
    @roma2005
    Там должен быть брадкаст (широковешательный) запрос типа кто в сети отзавитесь. И они по очереди отзываются.
    Уговарили щас схожу на Dallas скачаю датасшид на протокол подумаю чем можно помочь

    вы немного не правы после сброса если на линии есть ведомые мастер принимает импульс присутствия (шина представляет собой монтажное и), это означает что хоть один вдомый есть на шине, а потом идет хитрый алгоритм поиска для идентификации одного бита серийного номера используется 2 таймслота общий прринцып я понял .. но вот реализация… блин тот еще гемор(

    anatoliy :
    @roma2005
    Так то программная память! У АVR гарвардская архитектура. Память программ и данных разделена. Смело расходуйте всю до упора.

    ее я и имел в виду серийник занимает как-ни как 8мь байт, ну ладно 7-мь контр сумму можно и генерировать каждый раз хранить не обязательно, а еще на переменные оставить, а стек тож не маленький будет, еще и конфигурацию работы гдето держать надо с ПЗУ не начитаешся, а если постоянно писать… то на долго не хватит(. тем более что прибор будет как уже говорил для диплома обсасывать его будут со всех сторон. Эслиб делал для реальной работы этой командой вообщебы не пользовался), а серийники устройств либо сразу прописывать(что не есть хорошо), либо через терминал забивать … да и для конкретной работы надо конкретное устройство а не конструктор лего)

  25. roma2005

    да именно его пытаюсь в АБ осуществить… но мозгов не хватает начинаю запутываться(. Извини за медленные ответы на работе напряженка((((

  26. roma2005

    вот пр контр сумму простенько и красиво
    http://www.gaw.ru/html.cgi/txt/app/micros/avr/avr318.htm
    а вот коротенько как работает поиск устройств(
    Процедура получения адресов, пожалуй, единственная сложная вещь при работе с 1-Wire. На словах эта процедура выглядит следующим образом.
    Выполнив инициализацию, микроконтроллер посылает команду search rom и начинается цикл чтения 64 разрядного кода. Микроконтроллер формирует на 1-Wire шине два тайм слота чтения. В первый тайм слот все 1-Wire устройства, подключенные к шине, выдают первый бит своего 64 разрядного кода. Во второй тайм слот – инвертированное значение первого бита.
    Если у всех 1-Wire устройств первый бит адреса единица, то микроконтроллер примет сначала единицу, а затем ноль. Если хотя бы у одного 1-Wire устройства первый бит адреса нулевой, то микроконтроллер в обоих случаях примет ноль. Если активных устройств на шине нет, микроконтроллер в обоих случаях примет единицу.
    В ситуации, когда микроконтроллер принимает два нуля, возникает неоднозначность – как узнать, у каких устройств, преданный бит адреса ноль, а у каких единица? Протокол решает эту проблему просто – после двух тайм слотов чтения, микроконтроллер должен ответить 1-Wire устройствам, с какими из них он продолжит работу. Для этого он выставляет на шине соответствующий бит — ноль или единицу. Устройства, у которых переданный бит соответствует выставленному микроконтроллером, продолжат работу, остальные замолчат (станут не активными) до следующего сигнала сброса.
    Далее процедура повторяется еще 63 раза: формирование первого тайм слота чтения, чтение состояние шины, формирование второго тайм слота чтения, чтение состояния шины, ответ подчиненным устройствам.
    После завершения цикла чтения 64 разрядного кода, микроконтроллер будет знать адрес одного 1-Wire устройства. Для получения следующего адреса, нужно снова запустить цикл чтения, но на этот раз в случае неоднозначности выставить другой бит.
    Сколько 1-Wire устройств подключено к шине, столько раз и нужно провести описанную процедуру.
    ————————————
    логически я это понимаю( а вот в контроллер как запихнуть

  27. anatoliy

    @roma2005
    Ну не прав значит уже старею 🙂 Года 4 назад делал все забыл уже. Щас как сам перечитал документ понял свою ошибку.

    Вам блок схему алгоритма перевести? Или не знаете как это на ASM реализовать? В каком месте конкретно проблема?

    мастер нужно сделать на большой меге. ATmega8515 с внешней ОЗУ как крайний вариант. Туда все эти извраты с кодом влезут и ещё место останется 🙂

  28. anatoliy

    @roma2005
    Тут проще написать самому 🙂 Алгоритм элементарный если честно! Сводится поразрядному поиску совпадений:-) А проверка по контрольной сумме (комбинаторика в чистом виде).
    Вы можете алгоритм реализованный на словах написать на АБ?
    У вас подпрограммы чтения записи уже написаны?

  29. anatoliy

    Самый простой совет разбить задачу на части. Сначала напишите скелет программы. Те проверку всех возможных условий. Прогоняете все это что-бы корректно работало. Следующим этапом начинаете наполнять скелет мясом. забиваете функциями чтения записи проверки. попутно наблюдаете результаты своих действий. При этом вы уже уверенны что проверка условий у вас верна. Как все функции будут отлажены вы получите рабочий проект.
    У вас отладчик с JTAG есть?

  30. roma2005

    если можно переведите блок-схему желательно с нормальными коментами, а резализация мне желательна на АБ но на асме тож будет не плохо думаю с асма в АБ переведу. у меня в принципе асмовское решение есть (правде не знаю рабочее-ли), но там есть некорые моменты на которых застрял(((
    в часности…блин дошло наконец-то
    поправье если не прав
    cbr -перемножение регистра на инверсию константы правильно?
    тогда
    cbr search_flags,1<<search_result
    где search_flags- регистр флагов, а search_result- бит в этом регистре
    судя по алгоритму этот бит просто обнуляется в справке команда пишется cbr search_flags,k -где k константа инверсия которой используется
    почему такая запись (1<<search_result),
    —наверно для того чтоб удобно было объявлять биты, и в случае их изменения не переписывать константы … да?
    да блин перегрелся((( наверное пора и отдохнуть(, на таком простом тормознулся(((
    эсли я правильно понял свою ошибку прошу прощения за отнятое время. Но если можно то переведите пожалуйста переведите алгоритм, с английским полоховато(

  31. roma2005

    отладчиком билдеровким пользуюсь, он позволяет и симулировать и эмулировать , ну в железе тоись.

  32. anatoliy

    @roma2005
    cbr не совсем если из справочника дословно
    cbr Rd ,K8
    сброс в регистре Rd разрядов заданных К8 с применением операции И с константой К8.
    От себя: по сути это сброс выбранных битов из K8 в регистре Rd работает толь-ко для R16-R31.

    Попробую перевести но вы и так правильно изложили алгоритм 🙂 Имхо Вы справитесь с проектом. Чувствуешь что перегрелся сходи проветрись там в кино с девушкой. Или там с друзьями по пиву 🙂 Сам бывает на ровном месте туплю:-(

    Еще один тапок в сторону АБ 🙂 Для него всё равно учить матчасть как для ASM. А если не видно разницы то зачем тратить время 😀

  33. anatoliy

    Да а зачем найденные адреса хранить в МК мастера? Имхо задача их выпихивать в терминал по мере обнаружения. В Мк достаточно хранить обнаруженные биты во время поиска.

  34. anatoliy

    У вас ошибка в организации проекта. Вам не нужно реализовывать ПЛК и мастер контроллер на 1 МК. Сделайте на 2. на одном логика и условия. На другом интерфейс 1wire. Если так то ПЛК на толстой меге. А контроллер интерфейса на tini2313. на ней же и слейвы. Да кстати если сигнал медленный тк быстрый через 1wire не передать. То можно использовать АЦП 2интегрирования. к tini2313 2 конденсатора и 1 операционник 2 кмоп ключа 🙂
    Я на них собаку съел. крайняя модель это с ключом 8к1 и коммутируемом конденсаторе. АЦП просто сказка юзаю для научных исследований. Но треба калибровка.

  35. roma2005

    anatoliy :
    У вас ошибка в организации проекта. Вам не нужно реализовывать ПЛК и мастер контроллер на 1 МК. Сделайте на 2. на одном логика и условия. На другом интерфейс 1wire. Если так то ПЛК на толстой меге. А контроллер интерфейса на tini2313. на ней же и слейвы. Да кстати если сигнал медленный тк быстрый через 1wire не передать. То можно использовать АЦП 2интегрирования. к tini2313 2 конденсатора и 1 операционник 2 кмоп ключа
    Я на них собаку съел. крайняя модель это с ключом 8к1 и коммутируемом конденсаторе. АЦП просто сказка юзаю для научных исследований. Но треба калибровка.

    ооо на счет реализации на двух контроллерах если можно то поподробнее раньше такими роектами не занимался, да и опыта в эту сторону нет, но идея мне понравилась
    >У вас подпрограммы чтения записи уже написаны?< для шины у меня есть все кроме CRC8, и поиска серийных номеров, с шиной работал есть несколько проектов,

    anatoliy :
    Да а зачем найденные адреса хранить в МК мастера? Имхо задача их выпихивать в терминал по мере обнаружения. В Мк достаточно хранить обнаруженные биты во время поиска.

    да но потом еще мастер должен работать с шиной самостоятельно по тому алгоритму что я в него через терминал впихну.
    >Вы можете алгоритм реализованный на словах написать на АБ?<
    смотря на сколько он сложный, но в принцыпе если мне в нем все понятно то да, по крайней мере до сих пор хватало ума..

  36. roma2005

    anatoliy :
    У вас ошибка в организации проекта. Вам не нужно реализовывать ПЛК и мастер контроллер на 1 МК. Сделайте на 2. на одном логика и условия. На другом интерфейс 1wire. Если так то ПЛК на толстой меге. А контроллер интерфейса на tini2313.

    что означает толстая мега??? и как тогда лучше их между собой связывать? І2С ? или какой-то другой интерфейс, чтоб и скоростной и ресурсов мало потреблял, ну и памяти конечно.. или паралельный какойто… если контроллер шины на 2313 то ног свободных у него хватит, а тактирование на тини от меги взять чтоб синхронно работали… блин новое пространство для фантазиии хотя очень интересно, надо подумать. Блин опыта мало(((

  37. roma2005

    )) чето уже и комп глючить начинает)))ответы удваивает. Ща доделываю то что у меня есть (перевожу асмовский код в билдер и проверю работу), а дальше поразмышляю на счет реализации на двух МК. И если можно то прошу помощи, подсказок, на счет ПЛК, раньше никогда не занимался программируемыми логическими контролерами(, хоть в нужное направление направить…

  38. anatoliy

    @roma2005
    Толстая мега В смысле какая нить ATmega8515 с внешней ОЗУ или что с большей памятью программ(поищите что там у вас продается по удобнее с внешней памятью). Хотя в данном контексте гарвардская архитектура играет против вас! (У мя ПЛК был сделан на 80188 с дос загружаемый из пзу очень правильное решение рекомендую. получаете промышленную персоналку с осёй и готовыми инструментами. Очень распространено в промышленности) Но это решаемо.(придётся написать свою осю под мегу и транслятор кода на PC)
    ИМХО связывать лучше по SPI такты выбор вход выход и ещё добавить провод прерывание по событию.
    У вас все-равно 1wire а там скорости низкие. + еще параллельный интерфейс ногодрыганьем ИМХО изврат. А в промышленном применении не допустимо

    тактовая синхронизация это отдельная песня. Учитывая что у вас устройство для промышленного применения(там контролировать разные процессы) то тут лучше поступить железно. Кварцевый генератор на 14.318Мгц и 3 ТТЛ инвертора. от генератора к первому инвертору. С выхода 1 к входам 2 и 3 инвертора. Выходы 2 и 3 к тини и меге.
    Почему надо сделать так а не иначе объяснять мегабайт 10 текста 😀

    @roma2005
    Ну так радуйтесь цель вашего диплома есть изобретении ПЛК(велосипеда) с шиной 1wire 😀 😀 😀

    Ну все когда-то в первый раз! У вас не опыта не хватает а времени! Защита то когда?

    По поводу ПЛК покурите Simens Simatiks кажеться так пишется. Ну и другие пром решения!

  39. anatoliy

    @roma2005
    Да чуть не забыл данный ПЛК как средство малой автоматизации супер тема и продаваться будет на ура! Посмотрите есть ли аналоги? Или там подобное! Если нет срочно пишите концепт и в патентное бюро!(меня там в соавторах не забудьте:) Там студентам скидки. Еще комиссия ляжет когда вы ей продемонстрируете авторское свидетельство опытный образец и свидетельство на полезную модель!
    Но я вам уже не завидую спать вам придётся по 3 часа в сутки 🙁

  40. GetChiper Автор записи

    @anatoliy
    anatoliy, сразу видно, что Вы не ищете легких путей :). Человеку через месяц диплом сдавать а Вы о высоких материях. Сейчас нужно максимально быстро и по возможности наиболее простым способом закончить уже начатое (даже в ущерб качеству работы). Лучше готовая средненькая дипломная работа, чем неготовая хорошая дипломная работа. Мне понравилась одна фраза: «Настоящий инженер не решает тех.проблемы, он их обходит:-D». Узнаете? 🙂

    По поводу решения проблемы нахождения устройства в сети и вычисления CRC: я, для начала, позагонял бы уже готовые 64-разрядные ИК устройств сети в микроконтроллер и не парился. Занимался бы более важными делами по диплому. Если бы, перед сдачей, осталось время, то может, чего-то там еще и поковырял. Нет времени делать как лучше — нужно просто сделать!

    Это я из личного опыта обучения в университете…

  41. anatoliy

    @GetChiper
    Согласен 🙂 <> (Упал под стул!) И на все в таком состоянии? Я думал на следующий год. Свою дипломную я писал с 3 курса. Правда тему у мя была. Оптимизация работы БАСУ в условиях неопределённости. Там такой изврат был!!! Как вспомню до сих пор страшно становится. основная изюминка Искусственные нейронные сети на ПЛИС и оптико электронная обработка входных данных.

    @roma2005
    Вы уже реализовали программируемую логику на МК ? Могу послать к Di Halt, у него все чётко написано! Или с ПК будите командовать?

  42. anatoliy

    @GetChiper
    Меня часто заносит на усложнение проектов по тому прошу:»пинать нещадно, Если вдруг занесет»:-D

  43. roma2005

    Большую половину кода уже перевел на билдер. к вечеру надеюсь и просимулирую в протеусе.

    @anatoliy
    ПЛК чтоб нормально сделать слишком много времени надо, и тем более что у меня прямая задача 1-вире сеть, то наверное сделаю аппаратный драйвер сети на тини2313, и жалкое подобие плк на меге8, плк мне в принцыпе понадобится как вспомогательный инструмент для поддержки и демонстрации драйвера сети. и его слишком крутым делать не стоит (типа такой небольшой верхний уровень который поможет продемонстрировать работу сети), но чтоб логику работы можно было перативно конфигурировать через терминал, придумать ему несколько команд типа:
    1.»Поиск устройств» на выходе : на терминал выводит все серийники и их нумерует попутно сохраняя их у себя.
    2.»Начать запись программы»
    3.Универсальная команда №устр_1,параметр_1,условие_1,
    №устр_2,параметр_2,состояние_2
    —1,Term,>20,3,4,On—
    —расшифровка:на термодатчике серийной номер которого находится в первой записи таблицы температура больше 20 градусов, то на устройстве с серийным номером со третьей строки таблицы на третьем канале высиавить «1»
    4. «Пауза» в случае работы с термодатчиками для обеспечения времени конвертирования, ну и чтоб данные не строчило как с пулемета
    5. «Конфигурация устройства» в случае работы с термодатчиками , или управляемыми портовыми комутаторами которые сделаю на тини2313(чтоб к примеру если работает на вход запоминал состояние входов и при его изменении мог отвечать на команду поиск аварии)
    6. «Поиск аварии» для термодатчиков в режиме термостата, ну или портовых комутаторов
    7. «вывести на терминал данные» типа №устр,параметр
    8. «Команда конца программы» по ней идет зацикливание алгоритма работы тойсь начинается сначала
    9. «сохранение программы в ПЗУ»-вместе с СН устройств
    10.»Запуск программы на выполнение»
    11.»Печать программы»
    12.»Остановка выполнения программы»
    Думаю где-то так, чтоб просто для демонстрации можно было показать.

    Как думаете?

  44. anatoliy

    @roma2005
    В принципе вы уже все продумали:-) Ато я опять все усложнять начну. Да вы ещё предусмотрите светодиод на контроллере интерфейса 1wire «авария на линии». Вдруг случится замыкание в линии?
    Встроенный язык сильно упрощён но вполне достаточно для демонстрации. В случае чего можно расширить.
    Да я тут подумал вам сквозную синхронизацию делать не имеет смысла. Если по SPI будите связывать. ПЛК от UARTшного кварца а 1wire от того который вам удобнее для соблюдения таймингов протокола.
    Ещё предусмотрите ручной опрос датчиков и запись значений (для отладки)

  45. roma2005

    Ура реализовал наконец-то поиск пзу, еще немного причешу и можно будет во всеобщее рассмотрение выложить.
    Но нужна небольшая помощь я подозреваю что это у меня протеус подглючивает… на днях в железе соберу удостоверюсь, а так вроде ошибок нету(((. короче беда в чем бывает не всегда все серийники определяет(, если у кого есть немного времени чтоб попробовать на своем компе мой проект, да и как здесь можно фойлы присоединить?

  46. anatoliy

    @roma2005
    ИМХО протеус постоянно немножко подгючивает! Я не зря вас спрашивал про МК с JTAG 😀 протеус в топку. Осциллограф это аппаратный протеус 😀

  47. anatoliy

    Если серьёзно соберите в железе, схему то менять не будите. Осталась толь-ко программная часть. На ней все ошибки видны. Ещё не забудьте про сторожевой таймер !

  48. roma2005

    Спасибо за быстрый ответ Вы меня успокоили).
    Да и еще один вопрос по слейву(прошу не пинать за тупость), чтоб посчитать CRC8 обязательно 8-мь байт (тоесть мне в ведомом RAM память устройства делать8 байт, или можно и меньше?, работал только с термодатчиками реально там используется 3 байта, но в устройствах 8 остальные типа зарезервированы на будущее), мне к примеру для портовых комутаторов достаточно 2-3…(режим выводов вход/выход,состояние выводов,и мож еще какой конфигурационный), мне под RАМ все равно отводить 7 байт + CRC, или можно стоко-скока мне надо?

Добавить комментарий