И так, попил чаЁк... обмозговал, попытаюсь объяснить что у меня получилось.
Если ориентироваться на нагрузочную способность выводов 74HC595 IO output current pins Qn - 35 mA, то мы не можем управлять более чем двумя реле одновременно.
Я разделил реле по управлению на три группы по два реле.
Неважно в каком состоянии находятся реле (допустим мы не знаем или забыли в каком состоянии сейчас находятся реле, например после включения):
... получаем команду на обработку (на изменение) состояния реле.
1 - команда "выключить 1-ю группу реле" + задержка на выполнение команды (1ms)
2 - команда "выключить 2-ю группу реле" + задержка на выполнение команды (1ms)
3 - команда "выключить 3-ю группу реле" + задержка на выполнение команды (1ms)
4 - команда "включить реле согласно нового кода" (1-ю группу реле) + задержка на выполнение команды (1ms)
5 - команда "включить реле согласно нового кода" (2-ю группу реле)+ задержка на выполнение команды (1ms)
6 - команда "включить реле согласно нового кода" (3-ю группу реле)+ задержка на выполнение команды (1ms)
7 - команда "выключить подачу напряжения с реле"
Каждая команда (выключить и включить) выполняется за 10 циклов (тактов процессора). При частоте процессора 8МГц длительность 1 такта = 0.000125 ms.
Задержка на выполнение команды = 1ms (как я понял из Datasheet на реле)
У меня получилось достаточно много времени на обработку всей (неизвестной) процедуры переключения. Это максимально продолжительная операция. Следующие операции переключения будут короче, если не нужно изменять состояния реле в "группе" то обработка (команды "выключения" и "включения") исключаются из "цикла обработки". Наибольший тормоз - это задержки на реакцию реле.
Всё ли я правильно понял?
Отправлено спустя 1 минуту 56 секунд:
Ух... пока писал сообщение добавилось ещё,
Опять не стало "жалобы" на то что появилось новое сообщение.
Отправлено спустя 5 минут 41 секунду:
Алаев Ян писал(а): ↑11 апр 2019, 16:51
Александр, может быть Вам пригодится.
Пригодилось бы, если добавить файл (Attenuator_1.02.ino.elf')... а то протеус жалуется
Could not open ELF file 'C:\Users\user\AppData\Local\Temp\buildd7e37551c795cfc98167a61c0bbf8998.tmp/Attenuator_1.02.ino.elf'. [SIM1]
Александр.