할로. 이것은 훌륭한 튜토리얼이었고, 나는 그것을 많이 사용했다. 하지만 지금은 정말 이상한 행동 통신을 만들었습니다. 이것은 내가 의미하는 것입니다 : 나는 16MHz 외부 크리스탈Atmega32 (나는 목록의 하단에 퓨즈를 설정했습니다, 나는 그 이름을 기억할 수 없다). 나는 9600bps와 통신하고 싶어하고 그것은 중단 구동되어야한다. 나는 의사 소통의 간단한 방법을 사용합니다. PC에서 문자를 보내고 Rx ISR을 사용하여 처리하고 Tx ISR로 문자를 다시 보냅니다. MCU에 연결하려면 PC에서 MATLAB을 사용합니다. 거기에 나는 `!`을 기다리는 루프를 가지고 있으며 그것을받을 때 나는 다른 문자를 보냅니다.

이것은 내 생각에 대한 간략한 설명입니다. 이제 문제. 통신이 시작되지만 일부 문자 (1,2,3 다른 모든 시간)를 보낸 후 통신이 끊어지릅니다. Matlab은 `시간 시간이 발생했습니다…`라고 말합니다. MCU는 비록 제대로 작동에 간다. 직렬 통신을 위한 Atmel AVR 마이크로 컨트롤러에는 6개의 UART/USART 레지스터가 있습니다. 2 레지스터는 Baud 비율을 설정하고 나머지 4 레지스터는 UART의 다른 물건을 처리합니다. 보 요율 레지스터부터 시작해 보자이츠를 살펴보겠습니다.

하지만 아무것도 다시 에코되지 않습니다, 아무것도 내 하이퍼 터미널 창에 표시되지 않습니다, 나는 1 usart 튜토리얼에서 동일한 회로를 사용했다. 첫 번째 튜토리얼의 결과는 다소 확인이지만,이 시간은 확인 🙁 :cry에서 멀리 : 그래서, 내가 위에서 언급 한 바와 같이, 당신이 제공 한 예는 n = [Fosc / (16 * BAUD) ] -1 및 trunc에 의한 BAUD 속도 오류와 관련된 문제에 절대적으로 아무 말도하지 않습니다 정수로 변환될 때 부동 소수점 소수 부분의 분할. GND LPT 케이블에 GND를 연결하면 통신이 작동을 시작하고 GND LPT 케이블에서 GND를 분리하면 통신이 작동을 멈춥시다는 것을 개발합니다. 어쩌면 어댑터 마녀 생성 12 볼트에서 GND는 실제 GND이며 물론 LPT 접지는 PC에 접지하지만, 나는 컴퓨터없이이 시스템을 접지하는 방법을 개발 할 수 없습니다. 미안해요! 난 그냥 내 코드를 통해 가서 내가 바보 부부를 만든 실현하기 위해 꽤 오랜 시간이 걸렸다. 버퍼는 RingBuff_t에 대한 포인터가 아니어야 하며 주소로 전달되어야 합니다. 내 사이트의 zip을 업데이트했습니다 – 다운로드하고 수정 된 예제를 확인하십시오 (몇 가지 사소한 코드 변경도 했습니다).