Пины и сигналы hal
Все данные в hal передаются при помощи пинов и сигналов. Все общение компонентов происходит при помощи пинов.
Пины
Пины делятся на пины in (в которые можно писать) и out (из которых можно читать). Также пины бывают разных типов данных:
- BIT - или 1 или 0
- FLOAT - число с плавующей запятой.
- S32 - целое число от -2147483648 до 2147483647
- U32 - положительное (беззнаковое) целое число от 0 до 4294967295
Сигналы
Сигналы нужны для соединения пинов между собой. Как только пины соединены сигналом, при изменении пина out, меняются значения всех пинов in присоединеных к этому сигналу.
Правила соединения пинов и сигналов hal
- Сигнал принимает значение пина out, и передает его пинам in.
- Любой пин может быть подключен только к 1 сигналу.
- К одному сигналу можно подключить только один пин out (в противном случае будет не ясно из какого пина брать значение для сигнала).
- К одному сигналу может быть подключено несколько пинов in.
Если надо соединить два пина типа out - то нужно использовать дополнительные компоненты, например компонент and2.
Команда net
Пины соединяются при помощи команды net. Синтаксис:
net название_сигнала пин [пин [пин] [...]]]
Для удобства чтения могут применяться знаки => <= <=> но они не несут никакой функциональной нагрузки! Обычно этими значками показывается куда распространяется сигнал:
net home <= parport.0.pin-in => axis.0.home-sw
Можно записывать пины как в одной строке, так и в разных командах net:
net home <= parport.0.pin-in net home => axis.0.home-sw
Пример команды: