비트 연산자 논리로 설계하기

디지털 신호 및 디지털 하드웨어의 역량 개발

다음에 소개하는 정보는 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) 핀을 토글할 때까지 동작이 발생하지 않습니다.

작성자 정보

Image of Don Johanneck

DigiKey의 기술 콘텐츠 개발자인 Don Johanneck은 2014년부터 근무해 왔습니다. 최근 현재 직책으로 이동한 그는 동영상 설명 및 제품 콘텐츠 작성을 담당하고 있습니다. Don은 DigiKey의 장학금 프로그램을 통해 노스랜드 커뮤니티 및 테크니컬 컬리지에서 응용 과학 전문 학사 학위를 받았습니다. 그는 무선 조정 모델링, 클래식 기계 복원 및 수리를 즐깁니다.

More posts by Don Johanneck
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum