atmega128 uart 통신 예제

글쎄, 이 멋진 보이지 않는가요? uart.h와 UART_init(9600) 함수 를 한 개만 포함합니다. 그럼 그것은 설정 하는 방법을 볼 수 초기화 함수에 조금 더 깊이 파고. UCSRB: 이 레지스터에는 많은 활성화 비트가 있습니다. 예를 들어 다른 인터럽트는 비트를 활성화하지만 수신 및 전송은 비트를 활성화합니다. 둘째, 직렬 통신과 관련된 함수의 지연을 사용하지 마십시오. 이 비트는 비동기 작업에 영향을 미칩니다. 동기 연산을 위해 이 비트를 0으로 작성합니다. 비트 1 – U2X0: USART 전송 속도 2배 :보레이트 디바이더의 제수를 16에서 8로 효과적으로 두 배로 줄여 비동기 통신 0 : 동기 연동. 프레임은 시작 비트다음으로 가장 중요하지 않은 데이터 비트로 시작합니다. 그런 다음 총 9개까지의 다음 데이터 비트가 성공하여 가장 중요한 비트로 끝납니다. 활성화된 경우 패리티 비트는 데이터 비트 다음의 중지 비트 앞에 삽입됩니다.

전체 프레임이 전송되면 새 프레임이 직접 따라가거나 통신 회선을 유휴(높음) 상태로 설정할 수 있습니다. 여기에 AVR 데이터 시트에 언급 된 프레임 형식입니다 – 통신의이 모드에서, 데이터는 비동기적으로 전송 / 수신, 즉, 우리는 클럭 펄스뿐만 아니라 XCK 핀을 필요로하지 않는다. 데이터는 UBBR 레지스터에 설정된 BAUD 속도로 전송됩니다. 이는 UART 작업과 유사합니다. 패리티 비트는 항상 혼란스러운 부분인 것 같습니다. 패리티 비트는 오류 감지의 가장 간단한 방법입니다. 패리티는 단순히 숫자의 이진 형태로 나타나는 `1`의 수입니다. 예를 들어 소수점의 `55`는 0b00110111이므로 패리티는 5이며 홀수입니다.

스트림과 함께 사용할 uart_putchar 및 uart_getchar 함수를 준비하려면 정의를 약간 변경해야 합니다. 출력의 형식을 제대로 지정하려면 줄 바래선이 전송된 후 캐리지 리턴을 강제로 추가합니다. 위의 예에서는 숫자가 홀수 패리티를 가지고 있음을 보았습니다. 짝수 패리티의 경우 패리티 비트는 지정된 비트 집합의 개수(패리티 비트 제외)가 홀수인 경우 1로 설정되어 전체 비트 집합(패리티 비트 포함)의 개수가 짝수입니다. 지정된 비트 집합에 있는 비트 수가 이미 짝수인 경우 0으로 설정됩니다. 홀수 패리티를 사용하는 경우 패리티 비트는 지정된 비트 집합의 개수(패리티 비트 포함 제외)가 짝수인 경우 1로 설정되어 전체 비트 집합(패리티 비트 포함)의 개수가 홀수로 표시됩니다.