Thông báo

Collapse
No announcement yet.

Các Thanh ghi của AVR

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

  • Các Thanh ghi của AVR

    Mong các cao thủ AVR post bài chi tiết về 32 thanh ghi đa chức năng và các thanh ghi vào ra (53 với Mega128) để anh em học hỏi được không vậy.
    Tui đọc sách của thầy Tập nhưng thấy khó hiểu quá vì thầy dịch bị lỗi và nhiều vấn đề trình bày quá đơn giản .Tui đang tìm hiểu về con ATMega128 nhưng đọc datasheet thấy có quá nhiều thuật ngữ ,các bác có nhiều kinh nghiệm thì post bài để hướng dẫn anh em được không.Trước giờ thấy diễn đàn ít đề cập đến các thanh ghi của AVR.

  • #2
    Oh my GOD, all of them in datasheet. Plz send your quiz to Ngo Dien Tap.

    Comment


    • #3
      Tui Không dám có ý chê thầy Tập gì đâu , thậm chí tài liệu của thầy cũng rất cần để tham khảo nữa , nhưng những sai sót là có , như ở mục các thanh ghi thì các BẢNG bị nhầm khá nhiều ,làm cho việc đọc rất khó hiểu . hay ở trang 57 về thanh ghi điều khiển bộ định thời 1 (TCCR1A) cũng khó hiểu quá .nói chung nếu dịch nguyên văn thì rất khó hiểu, nên tui mới đề nghị các bác đã từng làm với AVR trình bày lại theo cách dễ hiểu hơn thôi.Tui chỉ muốn góp ý một cách xây dựng chứ không phải đi chê bai người khác đâu à nha

      Comment


      • #4
        Bác phải xem cùng lúc thanh ghi TCCRnA và TCCRnB thì bác mới hiểu được, vì có những nhóm bit 1 nửa nằm bên A, 1 nửa nằm bên B.

        Khó hiểu chỗ nào bác cứ nói ra, thì sẽ có nhiều người giúp bác, chứ bác yêu cầu viết ra hết thì tui e rằng không nhiều người đủ siêng để viết đâu.
        Phen này ông quyết buôn băng dính,
        Vừa bán vừa hm... hm... cũng đắt hàng.

        Comment


        • #5
          Vậy các bác giải thích giùm vai trò của thanh ghi OCnX (X=A,B,C) ở con Mega128 ,"If one or both of the COMnA1:0 bits are written
          to one, the OCnA output overrides the normal port functionality of the I/O pin it is connected to." và "Toggle OCnA/OCnB/OCnC on compare
          match." có nghĩa là gì vậy các bác ,tại sao bộ định thời mà lại có compare
          match , vậy compare match là gì vậy.
          thank

          Comment


          • #6
            mong các bác để ý giúp tui cái này .Tui đang làm về Mega128

            Comment


            • #7
              Hi thavali,
              Có vài điều cơ bản về chức năng Compare trong AVR như sau:

              Q: Thế nào là chức năng Compare?
              A: Đây là một trong những chức năng thường thấy và gắn liền với các timer của các vi điều khiển, bên cạnh chức năng Capture. Nguyên lý hoạt động là: giá trị đếm của timer sẽ liên tục được so sánh với một giá trị đặt trước, khi hai giá trị này bằng nhau (chính là sự kiện compare match) thì sẽ có thể thực hiện một tác động nào đó (ngắt, set/clear hoặc đảo chân OCx tương ứng, hoặc thậm chí là không làm gì cả...) tùy người lập trình chọn lựa. Giá trị đặt trước ấy do người lập trình ghi trong thanh ghi OCRnx (ví dụ: OCR0A, OCR0B, OCR1A, OCR1B...)


              Q:"If one or both of the COMnA1:0 bits are written to one, the OCnA output overrides the normal port functionality of the I/O pin it is connected to." nghĩa là gì?
              A: Mỗi kênh Output Compare liên quan đến một hay vài đầu ra, tên là các chân OCnx (ví dụ OC0A, OC1A, OC1B..). Các chân này được dùng chung với các chân cổng vào ra thông thường, khi dùng cho chức năng Compare thì không dùng làm chức năng vào ra được nữa. Khi xảy ra sự kiện compare match thì các đầu ra OCxn này có thể thực hiện tác động nào đó (set/clear/toggle...) tùy ý người sử dụng. Việc chọn tác động loại nào là do các bit COMnx trong thanh ghi TCCR tương ứng quy định. Với câu tiếng Anh bạn hỏi, dịch ra có nghĩa là nếu một hoặc hai bit COMnA0 và COMnA1 được ghi giá trị 1 vào thì tác động đầu ra sẽ được chọn là set/clear hay toogle (tùy tổ hợp là 01,10 hay 11), đè lên chức năng hoạt động vào/ra thông thường của chân cổng tương ứng (chân cổng đó không còn dùng làm cổng vào ra được nữa).


              Q: "Toggle OCnA/OCnB/OCnC on compare match." có nghĩa là gì?
              A: Khi xảy ra sự kiện compare match (tạm dịch là so sánh thấy khớp), có 04 kiểu tác động mà người lập trình có thể chọn để tác động lên chân đầu ra OCnx: set = 1, clear = 0, toogle = đảo giá trị, và không làm gì cả (vẫn dùng làm cổng vào ra bình thường). Bạn hãy nhớ một điều rằng, các tác động này khi đã chọn đều được thực hiện một cách hoàn toàn tự động một khi sự kiện compare match xảy ra.


              Chức năng Compare trong timer chủ yếu liên quan đến các ứng dụng về điều chế độ rộng xung PWM. Theo ý kiến chủ quan của bản thân tôi, timer của AVR là ngoại vi phức tạp nhất trong số các ngoại vi onchip của nó, cũng có thể nói đó là timer khó nắm bắt nhất trong các timer của các loại vi điều khiển 8 bit, với nhiều chế độ hoạt động phức tạp. Để nắm bắt được bạn cần có thời gian và sự kiên trì.

              Hy vọng đã phần nào giúp được bạn.

              Thân mến,
              blackmoon
              Last edited by blackmoon; 11-08-2006, 14:19.

              Comment


              • #8
                Rất cảm ơn blackmoon, quả thật là tui mới tìm hiểu AVR nên hỏi hơi nhiều các bác thông cảm.

                Comment


                • #9
                  vậy các bác cho hỏi : Input capture là gì thế ,nó liên quan gì tới bộ định thời

                  Comment


                  • #10
                    Hi thavali,

                    Q: Input capture là gì thế?
                    A:
                    Mỗi kênh Input Capture liên quan đến 1 chân tín hiệu đầu vào. Khi có sự kiện bên ngoài xảy ra, thể hiện ở việc tín hiệu đưa vào chân này thay đổi mức (tức là có sườn lên hoặc sườn xuống) thì giá trị của timer liên quan sẽ được ghi lại đúng vào thời điểm đó. Cụ thể là ghi vào thanh ghi Capture tương ứng (tên là ICRxn, ví dụ: ICR1A...). Kiểu tích cực của sườn có thể lựa chọn được (sườn lên, sườn xuống hoặc cả sườn lên và sườn xuống).

                    Q: Ứng dụng của Input Capture?
                    A:
                    Có một số. Có thể kể ra như:
                    - đo độ rộng xung: đo thời gian giữa sườn lên và sườn xuống gần nhất.
                    - đo chu kỳ: đo thời gian giữa hai sườn lên hoặc hai sườn xuống liên tiếp.
                    - ngắt ngoài: dùng như một ngắt ngoài (vì cũng có thay đổi mức tín hiệu)
                    - ...

                    Thân mến,
                    blackmoon.

                    Comment


                    • #11
                      Cảm ơn anh blackmoon , Em đang muốn sài con mega128 , tới 64 chân , vậy mạch nạp phải làm thế nào vậy anh.

                      Comment


                      • #12
                        Hi Thavali,

                        Bạn cứ dùng mạch nạp ISP cho các AVR khác là được. Cứ nối đúng các chân RESET, MOSI, MISO và SCK nhé.

                        Thân mến,
                        blackmoon.


                        Sửa lại bởi blackmoon:
                        Giao diện nạp cho ATmega128 vẫn dùng SPI, tuy nhiên các chân MOSI và MISO (dùng để trao đổi dữ liệu trong quá trình nạp) thay vì được dùng chung với các chân MOSI, MISO của SPI như các AVR khác, chúng được ánh xạ sang RxD0 và TxD0 (các port PE0 và PE1). Tín hiệu SCK vẫn dùng chung với SCK của SPI. Mọi người hãy lưu ý khi sử dụng.
                        Last edited by blackmoon; 25-10-2006, 14:35.

                        Comment


                        • #13
                          cảm ơn anh blackmoon , Em vừa nhặt được cái sơ đồ board phát triển ATmega128 của đại học Oregon , không biết có giúp cho ai không , chứ em mới tìm hiểu thấy nó rối quá.
                          link: http://www.yousendit.com/transfer.ph...vl2a@yahoo.com
                          Biết đâu có ai đó làm được cái board này nhỉ, em nghĩ cứ theo sơ đồ là xong thui, họ đã hướng dẫn hết rùi
                          Last edited by thavali; 18-08-2006, 23:24.

                          Comment


                          • #14
                            Xin các bác cho hỏi :
                            -Có bao nhiêu cách để tạo xung clock cho AVR (Mega128)?.
                            - Thiết lập như thế nào để sử dụng Internal Clock Source và External Clock Source . khi hoat động bộ Timer/couter dùng nguồn xung clock nào , vai trò của các chân T1,T1,T3 ,TOSC1,TOSC2?
                            -Thế nào là : Timer/Counter Synchronization (trang 144-145 của datasheet ATmega128 nhưng em đọc vẫn chưa hiểu), Prescaler Reset ?
                            Mong sự chỉ dẫn của các bác .Em Cảm ơn.

                            Comment


                            • #15
                              hô hô hô !!! Em cảm ơn anh CQ 1 lần rồi !!! Anh phải có trách nhiệm cảm ơn em ít nhất một lần ha ha ha !!!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X