Вопрос : Правая дорога снабдить поверхность стыка GPIO

Так нам нужно сделать 2 микропроцессора поговорить к одину другого.  Одно будет оригиналом, и одно будет невольником, и мы хотим послать назад настоящее положение дел от невольника к оригиналу (например, init, готовому, многодельному, ошибке, etc).  Мы вычисляем просто дорога сделать это с как раз обыкновенными толком линиями I/O (GPIO), комплектами micro невольника один или больше линии, списки избирателей оригинала микро- они.  

So очень, очень простой способ сделать его будет каждый штырь показывает active state

Pin 0: Active Init
Pin 1: Ready
Pin 2 активно Busy
Pin 3 активно Error

However мы smogли сохранить GPIO путем делать его с 2 pins

Pin 0 бездействующим, Pin 1 бездействующий: Init
Pin 0 бездействующее, active Pin 1: Active Ready
Pin 0, Pin 1 бездействующий: Active Busy
Pin 0, active Pin 1: Error

Note это использует 2 штыря вместо 4.  Однако, я думаю в втором методе, котор мы бежим риск улавливать переход.  Например, попытки невольника к переходу от INIT к положениям поэтому ему ОШИБКИ изменяют первый штырь от 0 до 1, тогда изменяют второй штырь от 0 до 1.  Однако, если мастерские списки избирателей между 2 изменениями оно прочитали бы 01 или 10, то которое ГОТОВО или МНОГОДЕЛЬНО, и оно могл принять плохое action.

So, котор ответ должен вероятно использовать третий штырь, который показывает ценностьь другие 2.  Комплекты невольника прикалывают низкий уровень, тогда делают изменения, тогда устанавливают его к максимуму снова, намеревающся другие 2 бита действительны.

So это приняло бы 3 штыря, которое все еще сбереженияа над 4 необходимо первым approach.

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

Thanks для всех thoughts.
class=

Ответ : Правая дорога снабдить поверхность стыка GPIO

Вам мило очень получают его точно правое, но положить его небольш по-разному для вас:

1) Ваше первое предложило метод препятствует вам держать след 4 дискретных «перемеююых», каждая одна способная для того чтобы принять на одно из 2 различных значений (высоких или низких уровней). Это использует 4 штыря, и 16 по возможности положений вашей линии шины.

2) Ваше второе предложило метод препятствует вам держать след одной одиночной «перемеююого» может принять на одно из 4 различных значений (00, 01, 10, или 11). 4 по возможности положения к вашей линии шины.

От вы описали, костюмы метода #2 ваши цели более лучше. Если вы делаете его дорога #1, то вы будете иметь линию шины которая имеет 16 по возможности значений, но только 4 из по возможности 16 значений имеют любую смысль к вам (0001, 0010, 0100 и 1000). Все еще инвалидно. Так, что будет напрасная трата ресурсов. То почему вы сохраняете биты пары путем делать его дорога метода #2.

Теперь важная вещь к примечанию что никакое дело метод вы использует, #1 ИЛИ #2, вы всегда будет иметь «вопрос неустойчивого положения». Будет всегда то инфинитезимальное количество времени когда оригинал изменит значение на линии шины, и если невольник читает на том точно моменте, то он получит неправильно чтение.

Вы предложили «синхронизировать сдержанные часы» и оригинал и невольник делят. Вы вызвали это битом ценностьи. Бит часов установлен оригиналом, и прочитан невольником. Оригинал обеспечивает что на поднимая крае часов значение на битах информации стабилизированн. Невольник знает для того чтобы прочитать биты информации только когда часы идут высоко. Это можно сделать сразу в оборудовании на уровне сигнала (например verilog или цепь VHDL запрограммированная на FPGA), или вы можете сделать его на более высоком уровне (например микропроцессоре как доска Altera которая имеет брошенный interrupt оборудования когда тот бит sync идет высоко).

Настолько основно я думаю вы вполне правильно, как раз осуществляет вы все еще сохранило 2 штыря gpio, как раз 1, потому что даже если вы сделали его первая дорога вам все еще был бы нужен бит часов синхронизации.
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us