동기 모드에서 USART를 사용하여 호스트 컴퓨터에서 펌웨어 (ATMega 1284P에 있음)와 통신합니다. 펌웨어 측면에서 최대 버퍼 크기는 20입니다. 호스트에서 펌웨어로 데이터를 계속 보내고 펌웨어에서 호스트 컴퓨터로 일부 응답을 보내면 어떻게 든 통신이 잠 깁니다. 나는 TXB (Transmit Data Buffer)와 RXB (Receive Data Buffer) 모두에 공통 인 UDR 레지스터가 잠겨져있어 통신이 중단되는 결과를 초래할 수 있습니다. 이 문제에 대한 제안 사항은 무엇입니까?AVR ATMega1284P USART 통신 잠금 장치
PS : 호스트 펌웨어에서 transmisson 들어 에서, codition은 : UCSRA & (1 < < UDRE)
펌웨어 호스트로부터 수신율, 조건이 TRUE 같아야 UCSRA & (1 < < RXC)은 TRUE 여야합니다.
호스트에서 일련 문자의 가용성을 확인하기 위해 하드웨어 인터럽트 M_USARTx_RX_vect를 사용하고 있습니다.
업데이트 :Firmware - Initial Source : MarlinSerial.cpp : USART 정의, Marlin_main.cpp : 프로그램 흐름
임베디드 프로그래밍, atmega 디바이스에서 UART를 사용하는 방법입니다. 관련된 네트워크가 없습니다! – Klaus
"동기식"모드를 정말로 의미합니까? 이것은 항상 별도의 클럭 라인을 사용합니다. rs232를 통해 PC에 통신하는 경우 비동기 모드를 사용해야합니다! 어쩌면 여기서 문제가 시작됩니다 ... – Klaus
아니요 rs232를 사용하지 않고 호스트 (아치 리눅스 실행)와 컨트롤러가 서로 다른 두 개의 보드에 함께 바인딩됩니다. 그래서 케이블이 필요 없습니다. – Nagarjun