리눅스와 atmega128사이에 시리얼 통신에 메세지 송신이 안되요
글쓴이: 콩수니 / 작성시간: 화, 2012/02/28 - 4:58오후
리눅스 pc에서 atmega128과 시리얼로 연결하였습니다
그리고 pc에서 atmega128에 접속도 성공하였습니다
이제 메세지를 보내서 해당 메세지에 따라서 atmega에서 각각의 기능들을 수행하려고합니다
리눅스 에서 c언어로 atmega에 메세지를 보낼때는
write(nSerial,msg,size); //open 시리얼번호,메세지,메세지크기
이런식으로 보냈습니다.
그리고 atmega에서 받을때는 인터럽트 방식으로 수신하였습니다
interrupt [USART0_RXC] void usart0_rxc(void)
{
ch = UDR0; // 수신 버퍼로부터 데이터 읽어 ch에 저장
if(ch=='a'){
PORTA.0=0xff;
delay_ms(5000);
}
UCSR0B |= 0x20; // 송신 버퍼 empty 인터럽트 허용 UDRIE=1
}
위 소스 처럼 구성이되었습니다. 그래서 msg를 'a' 한문자를 보냈는데 응답이 없습니다.
기본적으로 리눅스가 atmega쪽과 연결됨을 확인하였고 atmega쪽 소스에 인터럽트 설정 소스 부분도 다 검증이 되었습니다.
무엇이 문제일까요?
Forums:
시리얼 인터페이스는 확인하셨나요? 리눅스 PC
시리얼 인터페이스는 확인하셨나요?
리눅스 PC <-> atmega
와
임베디드 보드 <-> atmeag
는 별개입니다.
시리얼 신호 레벨과 전송속도부터 확인하셔야 할 것 같습니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
댓글 달기