avr uart 수신 예제

이것은 AVR UART 주변 장치를 통해 하나의 문자를 보내고 받는 방법에 대한 기본 예입니다. 그것은 이해하기 쉽고 이전에 마이크로 컨트롤러에 UART와 함께 일하지 않은 경우, 그것은 좋은 출발점이다. 기사 AVR 직렬 포트 UART 레지스터 사용에서 우리는 레지스터 사용에 대한 세부 사항을 설명했다. 여기서 는 전체 프로젝트를 보고 마이크로 컨트롤러에서 이를 테스트하기 위해 한 가지 예를 제공합니다. AVR 및 현재 8051 사용자에 대한 인증 된 초보자로 (웃지 마세요), 확산의 튜토리얼 및 예제 코드의 대부분은 #include 제외한 캐주얼 관찰자에게 분명하지 않은 GCC를 사용하여 작성된 것으로 보인다. GCC는 매크로 및 헤더 파일의 이러한 산은 누군가 (특히 새로운) GCC 이외의 것을 사용하여 작업 버전으로 해독하려고 하는 것은 헤라클레스와 시간이 많이 소요되는 노력입니다. 상업용 컴파일러를 사용하는 사람에게 이 사실을 완전히 알려주는 것은 아무 데도 없습니다. 메이야베 내가 알고 있어야합니다 … 그것은 GCC에 올 때 나는 시간보다 더 많은 돈을 가지고 밝혀졌습니다. UART를 수신하려면 RXC 인터럽트를 설정합니다. 캐릭터가 도착하고 “RXC”를 생성 할 때마다 인터럽트가 호출됩니다. 수신된 바이트(UDR)를 FIFO에 쓰는 것만하면 됩니다.

한편 코드(main)의 다른 곳에서는 도착한 문자를 사용하려는 “소비자” 코드가 있습니다. FIFO에서 바이트를 추출합니다(사용 가능). 이를 위해 FIFO에는 별도의 쓰기(인터럽트에서 사용)와 읽기(소비자 코드에서 사용) 포인터가 있습니다. 쓰기 및 읽기 포인터가 같을 때 버퍼가 비어 있습니다. 동일하지 않은 경우 사용할 도착 문자가 있습니다. 데이터 직렬을 전송하려면 8비트 UDR(UART 데이터 레지스터)으로 전송하고 빈 전송 버퍼를 폴링하여 설정해야 합니다. 데이터를 수신하는 동안 수신 플래그를 기다리며, 수신된 데이터를 설정하면 UDR 레지스터에서 읽을 수 있습니다. 다음은 어셈블리에서 이를 구현하는 예입니다: UCSRB: 이 레지스터에는 많은 활성화 비트가 있습니다. 예를 들어 다른 인터럽트는 비트를 활성화하지만 수신 및 전송은 비트를 활성화합니다. 이 함수는 USART의 데이터를 읽는 데 도움이 됩니다.

예를 들어, PC를 사용하여 마이크로로 데이터를 전송하는 경우 데이터는 AVR의 USART에 의해 자동으로 수신되고 버퍼 및 비트에 레지스터(UCSRA)에 넣어도 버퍼에서 데이터를 사용할 수 있음을 나타내도록 설정됩니다. 그것은 지금 레지스터에서이 데이터를 읽고 그것을 처리 하는 의무, 그렇지 않으면 새로운 데이터가 이전 하나에 제공 하는 경우 손실 됩니다. 따라서 funda는 UCSRA의 RXC 비트 (비트 7)가 설정 될 때까지 기다린 다음 USART의 UDR 레지스터를 읽는 것입니다. UART용 임베디드 AVR C 라이브러리 탐색에는 int main() {sei() 및 uart1_init(); uart1_iit(uart1_tx_string(“ttttCHATnn”); 동안(1); 반환 0; 또한 “링 버퍼”코드를 직접 만들 수 있다고 확신하지만 PM을 통해 예제를 제공 할 수 있다면 더 행복할 것입니다.

Comments are closed.


Iron Age Tattoo Aftercare

Iron Age Piercing Aftercare

Iron Age Notary Form
We cannot display this gallery
RE-LOADABLE GIFT CARDS AVAILABLE NOW!
Iron Age Gift Cards
Iron Age on Facebook
Iron Age on Instagram
Iron Age on Twitter