em mới học AVR có dùng USART để truyền thông giữa 2 con vi điều khiển vấn đề em gặp là thế này mong các anh em hiểu biết chỉ bảo giúp e với em cám ơn :e truyền dữ liệu đơn giản như sau :
void truyen(void)
{ putchar('#');
putchar('1');
putchar('a');
putchar('b');
putchar('c');
putchar('d');
putchar('e');
putchar('%');
}
trên đó là hàm gửi dữ liệu đi của e...ký tự "#" và "%" là để xác định đầu và cuối khung truyền. còn các dữ liệu thì ở trong..vấn đề là khung truyền này của e dưới 8 ký tự thì truyền nhận ok . nhưng vượt quá 8 ký tự ( ví dụ khung truyền trên e thêm vài cái putchar nữa) thì nhận rất chấp chờn hoặc không nhận được dữ liệu (ko nhiễu vì test thử rất gần)
đây là hàm nhận
void nhan1(void)
{
if(rx_counter)
{
ch=getchar();
str[i]=ch;
i++;
if(i==8)
{
i=0;
if((str[0]=='#')&&(str[7]=='%')&&(str[1]=='1'))
{
PORTA.0=1;
delay_ms(100);
PORTA.0=0;
delay_ms(100);
}
}}}
em cũng không biết bị sao nữa mong các bác giúp đỡ em với...giờ em cần truyền 1 khung tới 16 ký tự lận
void truyen(void)
{ putchar('#');
putchar('1');
putchar('a');
putchar('b');
putchar('c');
putchar('d');
putchar('e');
putchar('%');
}
trên đó là hàm gửi dữ liệu đi của e...ký tự "#" và "%" là để xác định đầu và cuối khung truyền. còn các dữ liệu thì ở trong..vấn đề là khung truyền này của e dưới 8 ký tự thì truyền nhận ok . nhưng vượt quá 8 ký tự ( ví dụ khung truyền trên e thêm vài cái putchar nữa) thì nhận rất chấp chờn hoặc không nhận được dữ liệu (ko nhiễu vì test thử rất gần)
đây là hàm nhận
void nhan1(void)
{
if(rx_counter)
{
ch=getchar();
str[i]=ch;
i++;
if(i==8)
{
i=0;
if((str[0]=='#')&&(str[7]=='%')&&(str[1]=='1'))
{
PORTA.0=1;
delay_ms(100);
PORTA.0=0;
delay_ms(100);
}
}}}
em cũng không biết bị sao nữa mong các bác giúp đỡ em với...giờ em cần truyền 1 khung tới 16 ký tự lận