cats_shadow: (Default)
[personal profile] cats_shadow
Продолжаем разговор, начатый в прошлый раз.
Дано:
  • надо обеспечить
    • дискретные выходы — 25 шт
      • управление датчиками влажности — 10 шт.
      • управление клапанами — 10 шт
      • управление датчиками расстояния — 2 шт.
      • управление насосом — 1 шт.
      • управление индикатором — 2 шт.
    • дискретные входы — 3 шт
      • датчики расстояния — 2 шт
      • кнопка — 1 шт
    • аналоговый вход — 1 шт
  • имеется на контроллере
    • GPIO — 11 шт.
    • аналоговый вход — 1 шт.

Итого наблюдается явная недостача дискретных входов/выходов.
Вопрос коллеги «А чего ты контроллер побольше не возьмёшь?» - был отметён, как неконструктивный. :)
Первая мысль, организовать 4-х битовую адресную шину, уткнулась в наличие двоичных дешифраторов исключительно с инверсными выходами, т.е. в необходимость дополнительных инверторов там, где рассчитывал обойтись без них.
Раз с параллельностью нам облом, придётся переходить на последовательную передачу. То есть на сдвиговые регистры. Группируем сигналы по назначению и считаем.
Статические выходные сигналы не критичные по времени - 21 шт (управление клапанами, датчиками влажности и насосом). Эти выведем в сдвиговый регистр - 3GPIO.
Сигналы, критичные ко времени - 7GPIO (датчики расстояния, кнопка, индикатор).

Итого требуется всего 10GPIO и сдвиговый регистр на 3 байта. Считаем, что задача решена.

Комментировать в исходнике

April 2025

S M T W T F S
  12345
6 789101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 16th, 2025 10:09 am
Powered by Dreamwidth Studios