Форум » » Toggle » Ответить

Toggle

Pavel777: Просьба подтвердить или опровергнуть мои выводы. Есть символ Toggle. На вход SET приходит единица, на Out тоже имеем единицу. Теперь на RESET приходит импульс (например, нажатие клавиши), Out сбрасывается в ноль. Единица на SET как была так и осталась, после окончания импульса на RESETе она никакого влияния на выход не оказывает. Что бы повторно установить Toggle, надо снять единицу с SETa, а потом подать ее заново(Согласно HELPа, установка триггера происходит по переднему фронту). Прав ли я? Прошу простить, если вопрос слишком "детский", раньше как-то не задумывался над этим, но в предстоящей задаче не хочется ошибиться. И в HELPе на данный символ обратил внимание, что единицы на SET и Reset одновременно могут привести к непредсказуемым результатам.

Ответов - 4

Вячеслав: Не сбросив SET, результата от RESET не будет. Точнее состояние перейдет через 0 и вернется в 1. Хотя из HELP этого не видно и не следует. Ставьте по входам Multiple One shots, чтоб избежать залипания. Особенно часто такие грабли при использовании OR Если запускать космические корабли, то лучше сначала в дебагере отладить все ;)

eoulianov: Павел, для SIMPL есть пара общих соображений, которых мне хватает для подобных случаев: 1. Кто последний - тот и папа. Это значит, состояние [выходов] символа определяется не текущими значениями на входах, а ПОСЛЕДНИМ изменением входа. Т.е. когда reset стал 1, выход сбросится (так написано в справке); когда reset станет 0 - ничего не случится (про это тоже написано в справке), и пока ничего другого на входах не поменяется - ничего не произойдёт, и это совершенно независимо от того, какое состояние было у входов set и toggle, пока оно не поменяется (т.е. пока не появится 1 на set или toggle, ну а если там 1 уже были - то нужно сначала туда сделать 0 - таки да: нельзя второй раз подрял сделать это же значение у digital signal. Прикола ради, с analog и serial всё наоборот: там было, допустим 100, и можно послать снова 100, и это будут новые 100). 2. Кролики не приспособлены для лазания. Следует использовать символы в нормальном режиме (для toggle - это "короткие" импульсы на входе, вроде как "нажатия кнопок" и ситуация с двумя 1 на входах - это уже ахтунг в этой тактике использования. Гляньте Logic Wave Pulse - он делает из "длинного" сигнала короткий, может оно подойдёт). Иногда случается захотеть сделать что-то этакое, и оно даже отладится и заработает, но потом можно получить сюрприз, запустив эту программу на другом контроллере или на другой прошивке. Особенно вероятно получить такой результат, если видишь эффект, не описанный в справке. Toggle - весьма простой и часто используемый символ, и основной вход в нём - конечно же toggle) Если вам нужны именно set и reset - удачней воспользоваться его урезанной версией Set/Reset Latch. Если же вам нужно, чтобы на выходе была 1 пока на reset ничего нет, то достаточно сделать Not от reset - попробуйте сформулировать что именно хочется получить, и часто решение найдётся проще, чем сразу лезть в SIMPL)

Вячеслав: Не верьте. А проверьте. Я проверил, прежде чем написать (PRO2). При постоянной 1 на входе SET, импульс по RESET сбрасывает out лишь на время RESET, потом OUT опять возвращается к 1. Хотя никакого фронта или изменения на SET входе не было.


Pavel777: Спасибо за помощь. Буду "укорачивать" сигнал, делать из длинного короткий.



полная версия страницы