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

        • Andrea14
          Vấn đề về tốc độ quay
          bởi Andrea14
          Chào mọi người,

          Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
          hôm nay, 12:42
        • bqviet
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi bqviet
          Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
          06-12-2025, 17:17
        • nguyendinhvan
          Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
          bởi nguyendinhvan
          Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
          05-12-2025, 19:59
        • afrendly
          Trả lời cho Đấu tắt điện cho máy tính bảng
          bởi afrendly
          Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
          04-12-2025, 01:27
        Đang tải...
        X