No to je przygotuj i sprawdź, bo to Tobie jest ono potrzebne, a mi nie.drzasiek90 pisze: ↑26 lut 2024, 21:19Czy rozwiązanie z komponentem LUT5 jest właściwe będzie można ocenić, gdy zostanie przygotowane i sprawdzone.
Natomiast co do poprawności rozwiązania, to czy gwoździe da się wbijać kombinerkami?
Jeżeli niektórzy to robią, to należy przyjąć że się da, ale jednak powszechnie się uważa, że kombinerki do tego celu nie służą i nie powinno się tego tak robić...
Wracając do twojego kodu, to jest on błędny w samym założeniu.
Tak naprawdę, to sygnał bazujący może być podłączony na stałe do odpowiednich pinów HAL od bazowania osi, a odcinać na czas bazowania trzeba sygnał podłączony do pinów HAL od limitów.
Czyli mój kod, do którego się tak uczepiłeś, jest prawidłowy, z tym, że załatwia on tylko bazowanie, więc potrzebujesz dopisać kod blokujący zadziałanie limitów, wszystkich na raz, bo one i tak nie biorą udziału w bazowaniu.
Mówiąc inaczej:
1. sygnał wejściowy jest na stałe podłączony do pinów HAL od bazowania.
2. sygnał wejściowy jest odłączany od pinów HAL od limitów, na czas bazowania dowolnej osi.
Teraz kilka słów o elemencie LUT5.
Nie podoba mi się wytłumaczenie na stronie https://linuxcnc.org/docs/html/man/man9/lut5.9.html
Dla mnie ono bardziej ściemnia niż wyjaśnia, choć formalnie jest poprawne.
Ja wolę uważać element LUT5 za pamięć o pięciu wejściach adresowych i jednobitowym wyjściu.
Czyli kiedy podłączymy do wejść dowolną kombinację sygnałów, to zaadresujemy jedną z 32 (2^5) komórek pamięci i dostaniemy jej wartość na wyjściu.
Komu które tłumaczenie bardziej odpowiada, to kwestia gustu, a o gustach się nie dyskutuje.
Tak, czy inaczej, 32 jednobitowe wartości da się zapisać jako 32-bitową liczbę binarną, i taki sposób przyjęto dla wygody, a odpowiednią wartość można wyliczyć z tablicy na linkowanej stronie.
Element LUT5 jest nie tylko elegancki, ale i wygodny, bo nie trzeba niczego negować, ani w inny sposób kombinować z bramkami logicznymi.
Spróbuj swój kod przepisać na cztery bazowane osie, to zrozumiesz...
I to by było na tyle.