Thông báo

Collapse
No announcement yet.

USART trong ATMEGA128!!!!!!!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • USART trong ATMEGA128!!!!!!!

    Các anh chị và các bạn vui lòng trả lời giúp em câu hỏi nhỏ này ah! Em làm mãi vẫn không được.
    Trong atmega128 có 2 cổng USART. Em muốn gủi 1 chuỗi kí tự lên máy tính, giả sử "cám ơn các bạn" chẳng hạn với cổng USART0. Em tham khảo trong thư viện stdio.h của codevisionAVR có hàm printf() không biết nó gửi qua cổng nào, USART0 hay USART1. Sở dĩ em phải kiểm soát cổng gửi vì 2 cổng em làm 2 việc khác nhau.
    Mong anh chị và các bạn trả lời giúp!
    Cám ơn nhiều!!!!!!!!!!!

  • #2
    Em tìm trong thư viện stdio.h thì thấy họ báo như sau:

    // USARTC0 will be used as default USART for the ATxmega chips
    #if defined _CHIP_ATXMEGA128A1_ | defined _CHIP_ATXMEGA192A1_ | \
    defined _CHIP_ATXMEGA256A1_ | defined _CHIP_ATXMEGA324A1_ | \
    defined _CHIP_ATXMEGA64A1_

    #ifndef _ATXMEGA_USART_
    #define _ATXMEGA_USART_ USARTC0
    #endif

    Mặc định với Atmega128 là Usart0. Giờ em muốn đổi thành Usart1 thì làm sao ah??

    Comment


    • #3
      Em xin giải thích thêm em định làm như thế này:
      Thư viện có hỗ trợ các hàm Printf, puts đưa 1 sâu lên PC. Nhưng nó luôn chỉ xuất lên từ USART0. Giờ em muốn các hàm hỗ trợ cho Usart1 thì phải làm sao ah! Em tìm mãi mà không thấy có thông số gì để thay đổi. Mong các cao thủ giúp đỡ. Em cám ơn!

      Comment


      • #4
        #define UDRE0 UCSR0A.5
        #define RXC0 UCSR0A.7
        void USART0_putc( unsigned char data )
        {
        // Wait for empty transmit buffer
        while(!UDRE0);
        // Put data into buffer, sends the data
        UDR0 = data;
        }
        unsigned char USART0_getc( void )
        {
        // Wait for data to be received
        while(!RXC0);
        // Get and return received data from buffer
        return UDR0;
        }

        void USART1_putc( unsigned char data )
        {
        // Wait for empty transmit buffer
        while(!(UCSR1A & 0x20));
        // Put data into buffer, sends the data
        UDR1 = data;
        }
        unsigned char USART1_getc( void )
        {
        // Wait for data to be received
        while(!(UCSR1A & 0x80));
        // Get and return received data from buffer
        return UDR1;
        }
        |

        Comment

        Về tác giả

        Collapse

        ThuyNv Tìm hiểu thêm về ThuyNv

        Bài viết mới nhất

        Collapse

        Đang tải...
        X