BASIC4MCU | 질문게시판 | 답변 : uart 송수신 문의드립니다,
페이지 정보
작성자 도도리 작성일2018-02-21 17:01 조회18,979회 댓글2건본문
기초예제를 바탕으로 코딩을 해봤습니다.
하이퍼터미널에 송신되는것도 확인하였고, "OK"를 제가 입력했을때 LED가 켜지는것도 확인하였습니다. 그런데 ESP8266(ESP-01)과 연동을 해보았더니 작동이 되지 않습니다...
ATMEGA에서 "AT"문자열을 보내면 ESP-01에서 "OK" 회신을 받아오면 LED를 점등하려고 하는데 혹시 ESP-01에서 "OK"회신은 "\n"를 포함하지 않는건가요?
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
//volatile unsigned char rx_cnt=0, rx_buf[10];
//
void TX0_CHAR(char ch){ while(!(UCSR0A&0x20)); UDR0=ch; }
void TX0_str(char *str){ while(*str)TX0_CHAR(*str++); }
//ISR(USART0_RX_vect){
char rx;
rx=UDR0;
if(rx=='\n')
{if(memcmp("OK",rx_buf,2)==0) //문자열 비교
{
PORTA=0xFF; //LED점등
}
rx_cnt=0;
}
else
{
if(rx_cnt<9){rx_buf[rx_cnt++]=rx;} //저장
PORTA=0x00;
}}
int main(void)
{
DDRA=0xFF;
PORTA=0x00;
sei();
UCSR0A=0; UCSR0B=0x98; UCSR0C=6; UBRR0H=0; UBRR0L=103; //9600while(1)
{
TX0_str("AT\n");
_delay_ms(20000);}
}
//
댓글 2
조회수 18,979master님의 댓글
master 작성일
데이터시트 읽어봤나요?
보레이트도 확인하세요
도도리님의 댓글
도도리 작성일
esp-01의 보드레이트는 펌웨어 업데이트할때 9600으로 바꾸었습니다.
at command로 바뀐것을 확인하였습니다.