avr uart 통신 예제

avr uart 통신 예제

우리는 ATmega168 및 ATtiny2313 여기 그려, 전원 공급 장치에 대 한 핀 아웃 및 직렬 포트 송신기 (TX) 및 수신기 (RX) 핀 강조. 이들은 일부 하지만 (아마) 필요한 핀의 모든. 예를 들어 회로에서 AVR을 프로그래밍하려는 경우 ISP 프로그래머와 함께 프로그래밍하는 것이 가장 좋은 경우가 많으며 최소한의 대상 기판에 대한 기사에서는 AVR을 연결하는 방법을 설명합니다. Arduino 기반 프로젝트에 대한 코드 예제는 C에서 자주 표시되지 않습니다. 나는 순수한 C 에서만 코드 (그냥 학습) 이 문서는 정말 유용합니다. 우선, 호스트 컴퓨터와 Arduino 간의 양방향 통신의 좋은 작업 교차 플랫폼 예제가 필요합니다. 우리는 톰 Igoe에 의해 처리 스케치 (예 프로그램) “직렬 통화 응답”의 출발점으로 선택했다. 이것은 실제로 두 부분으로 구성된 프로그램으로, 여기서 절반은 컴퓨터에서 실행되고 다른 절반은 마이크로 컨트롤러에서 실행됩니다. 우리가하고있는 일은 마이크로 컨트롤러 프로그램의 기능 복제를 만드는 것입니다, 그 여전히 호스트 측 프로그램과 이야기 할 수 있습니다 (이는 여전히 컴퓨터에서 처리에서 실행중). 위의 예에서는 숫자가 홀수 패리티를 가지고 있음을 보았습니다.

짝수 패리티의 경우 패리티 비트는 지정된 비트 집합의 개수(패리티 비트 제외)가 홀수인 경우 1로 설정되어 전체 비트 집합(패리티 비트 포함)의 개수가 짝수입니다. 지정된 비트 집합에 있는 비트 수가 이미 짝수인 경우 0으로 설정됩니다. 홀수 패리티를 사용하는 경우 패리티 비트는 지정된 비트 집합의 개수(패리티 비트 포함 제외)가 짝수인 경우 1로 설정되어 전체 비트 집합(패리티 비트 포함)의 개수가 홀수로 표시됩니다. 집합 비트 수가 홀수이면 홀수 패리티 비트가 0으로 설정됩니다. 파란색(USBS): (수신 측 및 TRASMITTER 측) 이 비트는 통신 중에 사용하는 정지 비트 수를 선택하는 데 사용됩니다. 불필요한 인터럽트에 관해서는, 특히 예제 코드에서 이를 피하는 것이 중요하다고 생각합니다. AVR 응용 프로그램 중 하나에서 입력 수준이 높거나 낮을 때 매우 신속하게 대응해야 합니다. 이 작업을 수행하려면 물론 인터럽트를 사용합니다.

그러나 여기에 문제가 있습니다 : 이미 인터럽트 실행이있는 경우 핀 변경 인터럽트 루틴을 시작할 수 없습니다. 즉, 직렬 인터럽트 루틴이 실행중이면 중요한 신호에 응답하기 위해 작업이 완료될 때까지 기다려야 합니다. 반대로, 직렬 폴링 루틴은 포트를 최고 속도로 실행하는 데 아무런 문제가 없으며 신호값이 변경될 때 CPU가 신속하게 응답할 수 있습니다. 이러한 맥락에서, 직렬 인터럽트 루틴의 발자국은 *거대*로, 실시간으로 신호에 응답하는 우리의 능력을 완전히 무너뜨릴 것입니다. 참고: 이러한 비트(즉석에서)의 설정을 변경하면 수신기와 송신기 모두에 대한 모든 진행 중인 통신이 손상됩니다. 송신기와 수신기 모두에 대해 동일한 설정을 구성해야 합니다. 이제 물리적 연결이 준비되었으므로 소프트웨어가 필요합니다. ATmega168에 대한 예제 코드를 다운로드 할 수 있습니다 (5 kB .

ZIP 파일) 및 ATtiny2313에 대한 코드 예제가 여기에 있습니다(5kB . ZIP 파일)을 참조하십시오. 다음은 AVR 마이크로 컨트롤러와의 직렬 통신에 대한 최소한의 설정에 대해 논의하고 ATmega168 및 ATtiny2313에서 두 가지 예제 구현을 제공합니다. 이 근본적인 “AVR 101” 것들이 지만 마이그레이션 관점에서 (이번에는) 문제에 접근하고 있습니다. 해당 하드웨어와 컴퓨터 간에 라이브러리 기능을 사용하여 직렬 통신에 의존하는 Arduino 기반 프로젝트가 있다고 가정합니다. 거기에서 비슷한 기능을 가진 독립 실행형 AVR 마이크로 컨트롤러또는 다른 마이크로 컨트롤러로 마이그레이션하려면 어떻게해야합니까? 소스 코드는 “직렬 호출 응답” 스케치와 통신할 수 있는 양방향 통신을 최소한으로 구현하기 위한 것입니다.