비트 연산자 논리로 설계하기
디지털 신호 및 디지털 하드웨어의 역량 개발
다음에 소개하는 정보는 AND(&) 비트 논리를 소개하고 블로그 DPM(직접 포트 조작)의 경우에 소개한 개념을 명확히 하기 위한 것입니다. 이 예에서는 여러 개의 버튼과 전위차계 제어가 있는 스테퍼 모터 구동 카메라 슬라이더를 작동시킵니다. 선택한 마이크로 컨트롤러의 제한된 I/O는 여러 포트에 걸쳐 있으며, I/O를 단일 디지털 값으로 결집하여 처리됩니다.
개요
소프트웨어의 스위치 입력값 평가는 대개 유용한 if/then 문으로 시작합니다. 이는 하나의 독립형 입력값에는 괜찮을 수 있지만 여러 대화형 입력값에는 그다지 유용하지 않습니다. 버튼 누르기의 모든 조합을 if/then 문으로 처리하면 수백 줄의 코드가 생성되고 각 주기마다 수많은 실행이 발생할 수 있습니다. 비트 논리를 구현하면 코드가 최소화되고 주기 속도가 향상됩니다.
프로젝트 파라미터
카메라 슬라이더 프로젝트에는 슬라이더 구동 모터의 작동에서 방향과 속도를 선택하기 위한 5개의 순간 접촉 SPST 스위치가 사용됩니다. 이 입력값은 SPEED/ENABLE/DIRECTION 출력값으로 변환됩니다. 스위치 누름은 다중 스위치 누름 판별과 함께 소프트웨어에서 래칭됩니다.

AND 비트 연산자
카메라 슬라이더에 사용되는 주요 비트 연산자는 AND로, C 언어 프로그래밍에서 앰퍼샌드(&) 기호를 사용하고 그림 1의 진리표를 사용합니다.
그림 1: AND 비트 연산자 진리표 및 예. (이미지 출처: Don Johanneck)
I/O 조합
모든 스위치를 나타내는 단일 값을 작성하려면 비트를 원하는 위치로 이동하고, 함께 추가하며, AND 연산자를 사용하여 비교해야 합니다(그림 2 참조). 제한 센서의 현재 상태를 나타내는 다른 값은 스위치 누름 값과 비교되어, 제한에 도달할 경우 출력값을 무효화합니다.
그림 2: 카메라 슬라이더 스위치 구성, 비트 편집, AND 연산자의 사용. (이미지 출처: Don Johanneck)
이 시나리오에서, 버튼이나 버튼 조합이 눌려지면 buttonValues는 0이 아니며, 이전에 언급한 직접 포트 조작 블로그에서 설명한 것과 정확하게 동일한 방식으로 출력값을 결정하기 위해 limitValue 및 조회 테이블을 사용하여 소프트웨어에서 동작이 취해집니다.
프로그래밍
이 프로그램은 처리된 입력값으로 인덱싱된 출력값 테이블을 사용합니다. 프로그래머는 테이블 값을 변경하여 버튼 누름의 모든 조합에서 발생하는 동작을 결정할 수 있으므로 어려울 수 있는 프로그램 구조 변경이 필요 없습니다. 이 예에 대한 그림 3의 테이블 값은 단일 IF 문이 없는 단일, 다중 및 반대 버튼 동작을 나타냅니다(그림 4).
그림 3: 입력값으로 인덱싱된 고유 출력값 테이블.
그림 4: 주 코드, 값 판독 및 출력값 결정.
모터 제어는 스텝 주파수를 결정하는 타이머 인터럽트 서비스 루틴과 stepGo 변수가 stepFreq 값 이상인 경우에만 모터 제어 기판의 STEP 핀을 설정하여 속도 제어를 용이하게 하는 '건너뛰기' 방법을 사용하여 달성됩니다(그림 5). 전위차계 값이 낮을수록 루틴이 더 많은 스텝을 건너뜁니다.
그림 5: 모터 제어 인터럽트 서비스 루틴.
결론:
AND(&)와 같은 비트 연산자를 사용하면 코드가 단순화되고 디지털 입력값을 구문 분석하는 데 필요한 IF 문의 수가 크게 줄어듭니다. 출력 테이블을 작성하는 것은 간단하고 유연합니다. 출력 비트를 더 많이 사용할수록 테이블이 빠르게 확장되고 더 많은 수의 출력 옵션이 제공됩니다. 각각의 추가 출력 비트는 기본 코드에 추가적인 핸들러가 필요합니다. 설정되고 나면, 테이블은 주기당 한 번만 사용되며 주 코드는 중대한 문제를 맡습니다. 인터럽트 서비스 루틴은 모터 컨트롤러의 STEP 핀을 업데이트하는 백그라운드에서 끊임없이 작동하지만 주 코드가 모터 컨트롤러의 활성화(ENN) 핀을 토글할 때까지 동작이 발생하지 않습니다.
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum