Задачка о перемычках

Тема в разделе "WASM.A&O", создана пользователем Black_mirror, 13 апр 2010.

  1. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Имеется несколько микроконтроллеров с идентичными программами. У каждого контроллера выделено несколько ног, для задания каждому контроллеру уникального адреса. Каждую ногу можно программировать как цифровой выход или как цифровой вход(по желанию можно подключить внутренний подтягивающий резистор к питанию или к земле или обойтись без него). В общем, возможности управления ногами вполне обычные для современных контроллеров. Снаружи к этим ногам нужно припаять какую-то простую(из двуногих элементов) схемку(уникальную для каждого контроллера), по которой контроллер сможет определить свой адрес. Ну а задачка заключается в том, чтобы придумать максимальное количество схем и алгоритм их распознавания:
    1) если для задания адреса у контроллера выделена одна нога(4 варианта точно существует)
    2) если для задания адреса у контроллера выделено две ноги(20 вариантов точно существует)
     
  2. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    те, как можно, скажем, по ресет сообщить каждому мк о его уникальном адресе? и больше эти ноги не будут использоваться? использовать 4 ноги. 2 на вход, 2 на выход, соединять последовательно. по одному последовательно получать адрес при действии на другой ресета. после получения адреса - выставлять ресет на следующий мк и выдавать дальнейший адрес на него. итд. после окончания 3 вывода (кроме входа сброса можно использовать для других целей).
    или спи/исп/жтаг или другие простейшие сериальные. вместо кучи двуногих понадобится только одна сериальная флэшка под адреса
     
  3. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    qqwe
    С ресетом вариант конечно простой и интересный, но мне кажется что в нём как минимум будет три ноги(по одной ноге объединены в общую сеть и одна нога для управления ресетом следующего контроллера) и в условия задачки он как-то не совсем вписывается. Вообще задачка не о том, как контроллерам назначить уникальные адреса. Эта задачка о распознавании внешней схемы при помощи одной или двух ног. Всякие хитрости типа замеров параметров подключённых элементов тоже не особо интересуют, понятно что в теории так можно задать бесконечное количество адресов. Схемы долждны быть различными по структуре, причём способ их различения должен быть безопасным. К примеру, подать на ногу высокий уровень можно, только если она не подключена напрямую к земле. А читать ногу с подключением подтягивающего резистора безопасно в любом случает. Можно считать, что при изменении состояния ног контроллера, внешняя схема гарантированно перейдёт в новое состояние либо сразу, либо за время не более T.
     
  4. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    То ли людям неинтересно, то ли непонятно, поэтому расскажу про первый вариант:
    1) нога ни к чему не подключена
    2) нога подключена к питанию
    3) нога подключена к земле
    4) нога подключена к питанию или земле через конденсатор

    Алгоритм распознавания такой:
    I0 W R I1 R W R I0 R
    I0 - нога на вход с подключением внутреннего резистора к земле
    I1 - нога на вход с подключением внутреннего резистора к питанию
    W - ожидание в течении времени t>T(время зарядки конденсатора через резистор)
    R - чтение состояния ноги

    Для перечисленных выше схем при чтении получим следующие последовательности:
    1) 0 1 1 0
    2) 1 1 1 1
    3) 0 0 0 0
    4) 0 0 1 1

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

    Понятно что для двух ног таким же образом можно получить 4*4=16 вариантов. Но еще можно подключить элементы между ногами, поэтому количество вариантов там явно больше.
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Black_mirror
    Тогда уж развивая идею RC цепочек их можно наподключать намного больше 4х вариантов и меряй их постоянную времени - ограничение количества вариантов только стабильностью элементов (можно прецизионные использовать) которая определяет шаг времени и максимальным временем "самоопределения" конроллера, а поскольку "самоопределиться" скорее всего достаточно один раз после включениия, то и предельное время может быть приличным :)
     
  6. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Y_Mur
    Интересны схемы, различные по структуре. Считаем, что разброс параметров привязанных к ноге внутренних элементов не позволяет точно определять параметры идентичных по структуре схем. По поводу конденсаторов считаем, что:
    через ногу, работающую как вывод, заряжаются и разряжаются мгновенно
    через резистор они не могут мгновенно заряжаться и разряжаться
    а если нога находится в high-Z состоянии, то не разряжаются через неё вообще
     
  7. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Кажется для одной ноги возможны еще две схемы, итого должно получиться 6. У кого какие есть догадки по этому поводу? :)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Black_mirror
    Обычная деффиринцирующая цепь, либо какойнибудь элементарный фильтр, формирующий сигнал определённой длительности или напряжения(ацп) в зависимости от сигнала управления. Всем остальным может заняться програмная часть(прошивка). Также работает множесто ключей с шифрованием - питающее напряжение постоянное подаётся по одной линии с управляющим, итого два проводника.