Thông báo

Collapse
No announcement yet.

a USART trong AVR

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

  • a USART trong AVR

    USART Là chuẩn truyền dữ liệu nối tiếp trong chíp, như vậy nếu truyền Bằng
    USART ngoài việc tiết kiệm chân thì còn ưu điểm jì nữa không, nếu dùng cáp có bọc kim thì truyền được bao xa, tốc độ tối đa là bao nhiêu, mỗi lần suất dữ liệu có cần tạo một khoảng delay không,
    nhờ các anh cùng bàn thảo cho em thêm vỡ
    Last edited by Le Thi Bich; 22-10-2008, 17:37.
    Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

  • #2
    A phải bảo thật với em, không đọc được tiếng Anh thì không học nổi điện tử đâu, phần lớn tài liệu là tiếng Anh, diễn đàn dientuvietnam chỉ là một góc rất nhỏ, nhất là đối với AVR, công cụ học chủ yếu là Google ( đối với A, mà chắc nhiều người củng thế), datasheet, các trang tiếng Anh, tốt hơn hết là em luyện TA đi, TA điện tử đâu có nhiều từ lắm đâu, Anh củng kém TA, nhưng tài liệu điện tử vẫn đọc được tốt...
    *** Thành viên không biết gì về điện ***

    Comment


    • #3
      Nguyên văn bởi AVR_VN Xem bài viết
      A phải bảo thật với em, không đọc được tiếng Anh thì không học nổi điện tử đâu, phần lớn tài liệu là tiếng Anh, diễn đàn dientuvietnam chỉ là một góc rất nhỏ, nhất là đối với AVR, công cụ học chủ yếu là Google ( đối với A, mà chắc nhiều người củng thế), datasheet, các trang tiếng Anh, tốt hơn hết là em luyện TA đi, TA điện tử đâu có nhiều từ lắm đâu, Anh củng kém TA, nhưng tài liệu điện tử vẫn đọc được tốt...
      vâng em cảm ơn anh đẵ quan tâm nhắc nhở nhưng đúng thật em không lười lắm nhưng học tiếng A rất nhiều rồi em lại quên, em đã bỏ thời gian ngồi tra từ điển để dịch cả cuốn CodevisionAVR nhưng rồi lại quên hết.
      em học mấy cua rồi nhưng đâu lại hoàn đó. Không bù cho chuyên ngành em không bao giờ phải học ở nhà. thầy dậy đêns đâu em làm được đến đó và còn hơn cả vậy.các thầy trong bộ môn TĐHXNCN đã từng dạy em thì không ai không nhớ (em hơi tự hào tí) các môn chuyên ngành của em không có môn nào điểm dưới 8 nhưng tiếng anh thì học lại và thi lần 4 thầy mới chiếu cố cho qua.
      lên diễn đàn các anh chỉ nói qua em làm được luôn
      Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

      Comment


      • #4
        Trong datasheet có tất cả mọi thứ để có thể bắt đầu, các ví dụ bằng asm, C đều có cả. Vấn đề có lẽ không phải là trình tiếng anh của B mà là do B không mạnh dạn thôi. (Sorry nếu không đúng). Mọi người đều bắt đầu như em có phải ai cũng có người hướng dẫn mọi thứ đâu. Em cố gắng viết một đoạn code, nếu có gì không hiểu hoặc chưa chạy thì post lên mọi người sẽ nhiệt tình giúp đỡ.

        Comment


        • #5
          Nguyên văn bởi hungnp Xem bài viết
          Trong datasheet có tất cả mọi thứ để có thể bắt đầu, các ví dụ bằng asm, C đều có cả. Vấn đề có lẽ không phải là trình tiếng anh của B mà là do B không mạnh dạn thôi. (Sorry nếu không đúng). Mọi người đều bắt đầu như em có phải ai cũng có người hướng dẫn mọi thứ đâu. Em cố gắng viết một đoạn code, nếu có gì không hiểu hoặc chưa chạy thì post lên mọi người sẽ nhiệt tình giúp đỡ.
          vâng em sẽ cố gắng bắt đầu lại nhưng anh Hùng à bọn anh đọc Datasheet hướng dẫn lập trình C cho các chức năng của chíp ở đâu ạ, em từ trước đến nay chỉ biết vào đó để lấy sơ đồ chân và vài thông số như nguồn Vv..
          Last edited by Le Thi Bich; 22-10-2008, 13:38.
          Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

          Comment


          • #6
            Một câu hỏi đó là khi mình xuất dữ liệu ra theo USART tức là nối tiếp thì có phải để delay một khoảng thời gian nào đó để dữ liệu xuất ra không? Mình làm một mô phỏng lại cái mạch đếm mà hôm trc Bích gửi (Có mô đi phai đi một chút nhưng khong hiếu sao không dc). Lối ra là PortB.0 theo kiểu USART.
            Attached Files

            Comment


            • #7
              Nguyên văn bởi hoangsonk49 Xem bài viết
              Một câu hỏi đó là khi mình xuất dữ liệu ra theo USART tức là nối tiếp thì có phải để delay một khoảng thời gian nào đó để dữ liệu xuất ra không? Mình làm một mô phỏng lại cái mạch đếm mà hôm trc Bích gửi (Có mô đi phai đi một chút nhưng khong hiếu sao không dc). Lối ra là PortB.0 theo kiểu USART.
              anh Sơn à em không biết tý gì về USART đâu, nhưng theo em nghĩ thì cần phải có trễ, chương trình hôm trước em gửi cho anh là hiển thị lên LCD mà, chỉ phải sửa lại đẻ mất điện thì lưu vào EEprom anh sửa khai báo chan INT1 thành ngắt khi có sườn xuống thôi,
              em làm trên mạch thật được luôn mà không lỗi đâu
              khai báo #endams là do codevision nó tự khai em cũng không biết j cả.
              nếu thay đổi anh phải mở một project mới chỉ cóp nội dung trong ngắt và chương trình ghi đọc eeprom chứ, anh chỉ sửa ở chương trình chính chắc lỗi là đúng rồi
              Last edited by Le Thi Bich; 22-10-2008, 17:29.
              Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

              Comment


              • #8
                ................................................
                Last edited by hoangsonk49; 22-10-2008, 18:49.

                Comment


                • #9
                  ừ, mình không nói là là code của em lỗi, code của em thì đúng rồi. Nhưng mình cũng dựa vào code của em để tạo ra bộ đếm phù hợp với mục đích của mình: tạo project mới, Bỏ phần hiển thị LCD của Bích để thay bằng việc xuất ra dưới dạng USART và mình cũng đã config lại sườn xuống của INT1 trong codewinzard. Code không báo lỗi, nhưng khi đưa vào mô phỏng thì không ra kết quả như mình mong muốn Mìh cũng không hiểu tại sao nên muón hỏi các bạn.(Phần mô phỏng mình cũng mới biết cái phần mềm dc 2 ngày,ko biết do lỗi coding hay lỗi chưa quen với phần mềm)
                  -Còn về cái USART mình cũng nghĩ là nên có trễ ...(Ko biết đúng không) :P

                  Comment


                  • #10
                    Nguyên văn bởi hoangsonk49 Xem bài viết
                    ừ, mình không nói là là code của em lỗi, code của em thì đúng rồi. Nhưng mình cũng dựa vào code của em để tạo ra bộ đếm phù hợp với mục đích của mình: tạo project mới, Bỏ phần hiển thị LCD của Bích để thay bằng việc xuất ra dưới dạng USART và mình cũng đã config lại sườn xuống của INT1 trong codewinzard. Code không báo lỗi, nhưng khi đưa vào mô phỏng thì không ra kết quả như mình mong muốn Mìh cũng không hiểu tại sao nên muón hỏi các bạn.(Phần mô phỏng mình cũng mới biết cái phần mềm dc 2 ngày,ko biết do lỗi coding hay lỗi chưa quen với phần mềm)
                    -Còn về cái USART mình cũng nghĩ là nên có trễ ...(Ko biết đúng không) :P
                    chắc kết nối trong mô phỏng có vấn đề j đó anh ạ hoặc USART có vấn đề vì làm LCD thì em test trên mạch thật chuẩn rồi mà, chỉ có cái mất điện em thay bằng xung vào chân int1 thôi, nhưng em thấy trong code của anh vẫn có khai báo lcd đấy thôi
                    "#asm
                    .equ __lcd_port=0x18 ;PORTB"
                    nếu không cần LCD thì không cần khai báo đến nó nữa.
                    chắc vụ này phải nhờ mấy anh Pro rồi
                    một việc nữa, nếu eeprom chưa ghi vào lần nào thì nó sẽ mặc định giá trị là 0xff vậy anh thử sửa thế này xem sao:
                    trước lệnh i=eeprom_doc(0x00) dòng 173 anh chèn thêm:
                    if (EEPROM_doc(0x00)==0xff)
                    {EEPROM_viet(0x00,0)};
                    if (EEPROM_doc(0x01)==0xff)
                    {EEPROM_viet(0x01,0)};
                    chúc anh thành công
                    Last edited by Le Thi Bich; 22-10-2008, 22:32.
                    Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

                    Comment


                    • #11
                      @: hoangsonk49: AVR có sẵn USART từ phần cứng vì thế chỉ cần đẩy dữ liệu vào buffer là dữ liệu sẽ được chuyển đi
                      @: Le thi bich: Em cứ đọc đi, em lập trình dùng bằng C, nhất là dùng Codevision thì cái này dễ lắm , cứ tự mò đi cho biết
                      *** Thành viên không biết gì về điện ***

                      Comment


                      • #12
                        2 AVR: Khai báo vào buff ? Bạn tưởng chỉ cần xuất ra cổng nào đó là dc chứ. Ví dụ PORTB.0 = J chẳng hạn. Làm sao vào dc buff ?

                        Comment


                        • #13
                          @ hoangsonk49 : buffer là bộ đệm của USART, tức là thanh ghi UDR chứ không phải biến khai báo , " The USART Transmit Data Buffer Register and USART Receive Data Buffer Registers share the
                          same I/O address referred to as USART Data Register or UDR. - theo datasheet "
                          vi ĐK hầu như loại nào củng có USART từ phần cứng, bạn xuất ra cổng tùy thích chỉ có cách dùng phần mềm, còn không thì cứ phải xuất ra chân TXD, nhận vào RXD
                          *** Thành viên không biết gì về điện ***

                          Comment


                          • #14
                            à, THẾ CÓ PHẢI LÀ khi mà mình cấu hình cái codewinzard thì nó mặc định là xuất ra chân TX không ? Hay là trong phần while (1) mình vẫn phải có chỗ là đưa nó vào Buffer bằng lệnh: UDR = j;

                            Comment


                            • #15
                              Đây là ví dụ đơn giản. Nếu nhận từ cổng UART là ký tự 'A' thì gửi trở lại là ký tự 'B'. còn không sẽ không làm gì cả.

                              #include <mega16.h>
                              // Standard Input/Output functions
                              #include <stdio.h>
                              // USART Receiver interrupt service routine
                              interrupt [USART_RXC] void usart_rx_isr(void)
                              {
                              char data;
                              data=UDR;
                              if(data=='A') putchar('B'); // nhan duoc ky tu A thi gui tro lai la B
                              }
                              void main(void)
                              {
                              // USART initialization
                              // Communication Parameters: 8 Data, 1 Stop, No Parity
                              // USART Receiver: On
                              // USART Transmitter: On
                              // USART Mode: Asynchronous
                              // USART Baud Rate: 9600
                              UCSRA=0x00;
                              UCSRB=0x98;
                              UCSRC=0x86;
                              UBRRH=0x00;
                              UBRRL=0x33;
                              // Global enable interrupts
                              #asm("sei")
                              while (1)
                              {
                              // Place your code here
                              };
                              }
                              Attached Files
                              n
                              ĐT: 0986 492 489

                              Tham khảo:

                              Comment

                              Về tác giả

                              Collapse

                              Le Thi Bich Tìm hiểu thêm về Le Thi Bich

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

                              Collapse

                              Đang tải...
                              X