라디오 전자 및 전기 공학의 백과사전 컴퓨터와 PIC 컨트롤러 인터페이스. 무선 전자 및 전기 공학 백과사전 무선 전자 및 전기 공학 백과사전 / 마이크로 컨트롤러 마이크로 컨트롤러(MCU)에서 장치를 개발할 때 정보를 교환하기 위해 컴퓨터와 연결해야 하는 문제가 종종 발생합니다. 대부분의 경우 상대적으로 낮은 환율에서는 양방향 모드가 필요합니다. 최선의 경우 MK에는 직렬 인터페이스가 있을 수 있지만 대부분의 경우 그러한 인터페이스가 장착되지 않은 저렴한 인터페이스 중에서 선택해야 합니다. 예를 들어, 최근 매우 인기를 끌고 있는 Microchip의 PIC16F84A 마이크로칩에는 이러한 인터페이스가 없습니다. 이 기사에서는 MK 측과 컴퓨터 측 모두에서 직렬 인터페이스의 소프트웨어 구현 옵션에 대해 설명합니다. MK의 장치와 통신하려면 컴퓨터의 병렬(LPT) 또는 직렬(COM) 포트를 사용할 수 있습니다. 첫 번째는 작업하기가 더 쉽습니다. 상대적으로 더 많은 수의 입력 및 출력 신호를 사용할 수 있으며 그 레벨은 TTL과 호환됩니다. 이 포트의 단점은 DOS 또는 Linux에서는 간단한 입력/출력 작업만으로 충분하지만 Windows에서는 올바른 작동을 위해서는 데이터 전송 프로토콜을 엄격하게 준수해야 하며 이는 마이크로컨트롤러로 작업할 때 효과적이지 않다는 것입니다. . 개별 LPT 포트 라인을 직접 제어하는 것도 가능하지만 이를 위해서는 특수 드라이버를 설치해야 합니다. LPT 포트의 "단점"은 대부분의 컴퓨터에 포트가 하나만 있고 일반적으로 프린터가 이 포트를 점유한다는 것입니다. COM 포트의 주요 장점은 표준 Windows 프로그래밍 인터페이스(API)를 통해 일부 출력 라인과 제어 입력 라인을 직접 제어할 수 있으며 COM 포트와 관련된 일부 이벤트를 기다리는 기능도 있다는 것입니다. 장점은 COM 포트가 만들어지는 RS-232 표준을 통해 장치가 작동하는 동안(핫 플러그) 케이블을 연결하고 분리할 수 있다는 것입니다. 또한 컴퓨터에는 거의 항상 무료 COM 포트가 있습니다. 포트의 단점은 신호 레벨이 TTL과 다르다는 점입니다. 여기서 낮은 논리 레벨은 -12의 전압에 해당하고 높은 논리 레벨은 +12V에 해당합니다. 표준 RS-232 인터페이스를 구현하려면 MK가 출력 신호 간의 시간 간격을 엄격하게 준수해야 합니다. 실제 상황에서 마이크로 컨트롤러의 석영 공진기는 데이터 전송 주파수와 일치하지 않을 수 있으며 MK 자체는 일반적으로 정확한 시간 간격을 형성하는 것보다 더 중요한 일로 바쁩니다. 결과적으로, 각 데이터 비트가 동기화 펄스에 의해 확인될 때 직렬 동기 교환 옵션을 프로그래밍 방식으로 구현하는 것이 더 쉬운 것으로 나타났습니다. 제안하는 인터페이스의 개략도는 그림 1과 같다. 하나. RS-232 레벨을 TTL로 변환하려면 저항 분배기 R1R4 및 R2R5가 사용됩니다. 논리 1에 해당하는 음의 전압을 통과하지 않으려면 다이오드 VD2 및 VD3가 필요합니다. MK의 출력 TTL 신호는 변환이 필요하지 않으며 COM 포트의 입력 라인에 직접 공급될 수 있습니다. 저항 RXNUMX은 우발적인 단락이 발생할 경우 MK의 출력 전류를 제한합니다. 다이어그램에서 볼 수 있듯이 컴퓨터와 통신하려면 XNUMX개의 전선이 필요합니다. 컴퓨터는 DTR 라인에 클럭 펄스를 발행하고 RTS 라인에 전송된 데이터를 배치하고 CTS 라인을 통해 수신된 데이터를 수신함으로써 데이터 교환을 시작합니다. 컴퓨터와 MK는 동기화 신호의 논리 레벨이 낮은 경우에만 데이터를 변경할 수 있습니다. 이 인터페이스 구현 옵션은 전이중 데이터 전송을 허용합니다. 다이어그램의 XS1 핀 번호는 표준 모뎀 케이블을 사용할 때 DB-25F 소켓용입니다. 다른 커넥터의 연락처 번호와 널 모뎀 케이블을 사용하는 경우가 표에 나와 있습니다. 1. 마이크로컨트롤러가 각 동기화 펄스에 응답하여 컴퓨터의 데이터를 처리할 시간을 확보할 수 있도록 동기화 펄스의 반복 속도를 선택해야 합니다. 정보 비트는 순차적으로 전송됩니다. 한 바이트의 비트 전송이 완료되면 가장 중요한 정보 비트가 먼저 전송되면서 다음 바이트 비트가 전송됩니다. 인터페이스를 원래 상태로 복원하려면(전송된 바이트 수를 0으로 설정) 컴퓨터가 로그에 있어야 합니다. 1 동기화 라인의 데이터 라인 상태를 변경합니다. MK는 DTR 동기화 입력에서 양극성 펄스의 하강 시 CTS 라인에 새로운 데이터 비트를 출력하고, 양극성 펄스의 가장자리에서 RTS 라인의 데이터를 읽습니다. 동기화 펄스 공급을 중단하면 언제든지 교환을 중단할 수 있습니다. 데이터 교환의 타이밍 다이어그램은 그림 2에 나와 있습니다. XNUMX. 인터페이스를 구현할 때 전송된 데이터의 정확성을 확인하기 위해 일부 바이트에 제어 값을 전송하는 것이 좋습니다. 제안된 인터페이스를 구현하는 C 언어 PIC16F84A 마이크로컨트롤러[1] 프로시저의 소스 코드는 표에 나와 있습니다. 2. link() 프로시저에 대한 호출은 기본 프로그램 루프에 있으며 인터페이스 상태를 모니터링하기 위해 MK 작업 중에 지속적으로 호출됩니다. 프로시저에서 사용되는 모든 변수는 전역으로 선언됩니다. 각 호출에서 인터페이스 입력 라인(RB6 및 RB7)의 상태를 읽고 이를 이전 호출의 상태와 비교합니다. 특정 조건(동기화 저하, 동기화 에지, 인터페이스 재설정)에서는 인터페이스 논리에 따라 작업이 수행됩니다. Pascal (Delphi)로 된 컴퓨터 절차의 소스 코드는 표에 나와 있습니다. 3. 여기서는 MK와 정보를 교환하는 행위를 수행하기 위해 링크 프로시저가 한 번 호출됩니다. 호출하기 전에 전달된 obuf 버퍼를 채워야 합니다. 절차가 끝나면 수신된 데이터는 ibuf 배열에 위치하게 됩니다. 이 프로시저는 컴퓨터에서 지정된 COM 포트를 열고 Windows API 함수[2]를 사용하여 출력 라인의 상태를 제어하고 입력 라인을 폴링합니다. 정보 교환이 완료되면 포트가 닫힙니다. 링크 프로시저에서는 sleep() 함수를 사용하여 시간 지연을 구현합니다. 해당 값은 MK와 컴퓨터 간의 데이터 교환 중 비트 손실이 없음을 기반으로 실험적으로 계산되거나 선택됩니다. 이 예에서는 4MHz 주파수의 석영 공진기가 있는 PIC 컨트롤러와의 교환에 대한 지연을 보여 주며, 추가로 다른 유용한 작업도 수행합니다. 교환 절차가 너무 오래 걸리면 운영 체제의 별도 실행 스레드로 이동하여 주 프로그램과 병렬로 실행될 수 있습니다[2]. 정보 교환에 별도의 읽기 및 쓰기가 필요한 경우 그림 2과 같이 전송 및 수신된 데이터 배열을 서로 다른 주소에 배포할 수 있습니다. XNUMX. MK에서는 전송 전과 다음 바이트 수신 시 각각 호출되는 upload() 및 download() 프로시저 형태로 전송된 데이터의 형성과 수신된 데이터의 사용을 구성하는 것이 편리합니다. 그 중 첫 번째는 전송된 정보 패킷의 번호로 전송된 바이트의 값을 반환해야 하고, 두 번째는 수신된 바이트의 값과 패킷의 번호를 수신하고 이 값을 사용하여 MK 레지스터를 변경하고 쓰기해야 합니다. 4바이트 크기의 정보 패킷(표 4)을 처리하기 위한 이러한 절차의 구현은 표에 나와 있습니다. 5. MK용 예제 프로그램은 C2C 컴파일러에 제공됩니다[3]. 컴퓨터 절차는 Borland Delphi 3 이상으로 작성된 프로그램에서 사용할 수 있습니다. 문학
저자: S.Kuleshov, Kurgan 다른 기사 보기 섹션 마이크로 컨트롤러. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 터치 에뮬레이션을 위한 인조 가죽
15.04.2024 펫구구 글로벌 고양이 모래
15.04.2024 배려심 많은 남자의 매력
14.04.2024
다른 흥미로운 소식: ▪ Apple, iPhone 및 iPad용 3D 인터페이스 제작 ▪ IoT용 LAUNCHXL-CC2650 BLE/ZigBee/6LoWPAN 개발 보드
무료 기술 라이브러리의 흥미로운 자료: ▪ 기사 로그 스케일이 있는 무선 버그 감지기. 무선 전자 및 전기 공학 백과사전 ▪ 기사 라인 홀드 접두사. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |