Thông báo

Collapse
No announcement yet.

Bạn nào giải thích cho mình thấu đáo về sự "phi lý" trong tần số của ADC ?

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

  • Bạn nào giải thích cho mình thấu đáo về sự "phi lý" trong tần số của ADC ?

    Mình có câu hỏi hơi chuối một chút mong các bạn phân tích giùm :
    +) Theo Datasheet của Atamega8 . thì bộ ADC cần một nguồn xung nhịp để hoạt động nguồn này lấy từ chính nguồn xung CPU (đã được scale).
    +) Tần số theo mặc định nên nằm trong khoảng (50 Khz -- > 200 Khz) .
    +) Tương ứng với nó là thời gian chuyển đổi sẽ nằm trong khoảng tư (65 -- > 260 us) .
    == > cái này là datasheet nói và mình cũng tinh theo công thức và chính xác ra như thế ( với điều kiện bỏ qua lần chuyển đổi đầu tiên tức các lần kế tiếp việc chuyển đổi sẽ mất 13 chu kì xung ADC # chu kỳ lệnh CPU) .

    ==> Nhìn lại Datasheet của adc0809 thì thời gian chuyển đổi trung bình cũng nằm trong khoảng 100us.

    ==> Vậy câu hỏi đặt ra ở đây là 1 lần biến đổi mất "13" chu kỳ xung nhịp ADC vậy cứ tăng tần số lên thì sẽ có thể thu được nhiều mẫu biến đổi trên một đơn vị thời gian với một tín hiệu biến dổi theo thời gian đưa vào ADC. (lý thuyết).
    +) Nhưng rõ ràng là nếu F_adc này (tần số xung nhịp cấp cho ADC) lớn hơn ngưỡng cho phép thì chắc chắn sẽ xảy ra hai trường hợp không biết cái nào sẽ xảy ra ( ADC không hoạt động hoặc sẽ cho kết quả chuyển đổi sai)..

    ==> Vậy bạn nào biết cái F_adc max này là bao nhiêu không với độ phân giải 10 bit. .( " By Default, the successive apro......50 KHz and 200 khz ... page 194 datasheet _atmega8).
    và theo như datasheet thì với độ phân giải nhỏ hơn 10 bit thì tần số có thể cao hơn 200Khz vậy có thể cao hơn bao nhiêu nhỉ ?). - page 194 of Datasheet.
    Code:
    By default, the successive approximation circuitry requires an input clock frequency
    between 50 kHz and 200 kHz to get maximum resolution. If a lower resolution than 10
    bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a
    higher sample rate.
    ==> Khi khai báo cho codevision chọn tần sỗ chip là 16MHz --> mục ADC thì nó lại cho phép mình có thể chọn 1000 Khz mặc dù không tick vào cái mục 8 bít ==> theo datasheet có phi lý không . Và nếu chọn như vậy có oke không ? by my teacher F_ADC = 200Khz it won't work ).
    +) Một ý khác mình hỏi thêm khi mình chọn tần số xung cho chip là 20mhz -- > vào mục khai báo cho ADC thì tần số max cho ADC lúc này chỉ được chọn là 650 Khz điều này lý giải sao nhỉ ?)

    +) Từ viết tắt trong câu này là gì vậy " kSPS "
    Code:
    Up to 15 kSPS at Maximum Resolution
    cám ơn các bạn !

  • #2
    Nguyên văn bởi newbie_avr Xem bài viết
    Mình có câu hỏi hơi chuối một chút mong các bạn phân tích giùm :
    +) Theo Datasheet của Atamega8 . thì bộ ADC cần một nguồn xung nhịp để hoạt động nguồn này lấy từ chính nguồn xung CPU (đã được scale).
    +) Tần số theo mặc định nên nằm trong khoảng (50 Khz -- > 200 Khz) .
    +) Tương ứng với nó là thời gian chuyển đổi sẽ nằm trong khoảng tư (65 -- > 260 us) .
    == > cái này là datasheet nói và mình cũng tinh theo công thức và chính xác ra như thế ( với điều kiện bỏ qua lần chuyển đổi đầu tiên tức các lần kế tiếp việc chuyển đổi sẽ mất 13 chu kì xung ADC # chu kỳ lệnh CPU) .

    ==> Nhìn lại Datasheet của adc0809 thì thời gian chuyển đổi trung bình cũng nằm trong khoảng 100us.

    ==> Vậy câu hỏi đặt ra ở đây là 1 lần biến đổi mất "13" chu kỳ xung nhịp ADC vậy cứ tăng tần số lên thì sẽ có thể thu được nhiều mẫu biến đổi trên một đơn vị thời gian với một tín hiệu biến dổi theo thời gian đưa vào ADC. (lý thuyết).
    +) Nhưng rõ ràng là nếu F_adc này (tần số xung nhịp cấp cho ADC) lớn hơn ngưỡng cho phép thì chắc chắn sẽ xảy ra hai trường hợp không biết cái nào sẽ xảy ra ( ADC không hoạt động hoặc sẽ cho kết quả chuyển đổi sai)..

    ==> Vậy bạn nào biết cái F_adc max này là bao nhiêu không với độ phân giải 10 bit. .( " By Default, the successive apro......50 KHz and 200 khz ... page 194 datasheet _atmega8).
    và theo như datasheet thì với độ phân giải nhỏ hơn 10 bit thì tần số có thể cao hơn 200Khz vậy có thể cao hơn bao nhiêu nhỉ ?). - page 194 of Datasheet.
    Code:
    By default, the successive approximation circuitry requires an input clock frequency
    between 50 kHz and 200 kHz to get maximum resolution. If a lower resolution than 10
    bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a
    higher sample rate.
    ==> Khi khai báo cho codevision chọn tần sỗ chip là 16MHz --> mục ADC thì nó lại cho phép mình có thể chọn 1000 Khz mặc dù không tick vào cái mục 8 bít ==> theo datasheet có phi lý không . Và nếu chọn như vậy có oke không ? by my teacher F_ADC = 200Khz it won't work ).
    +) Một ý khác mình hỏi thêm khi mình chọn tần số xung cho chip là 20mhz -- > vào mục khai báo cho ADC thì tần số max cho ADC lúc này chỉ được chọn là 650 Khz điều này lý giải sao nhỉ ?)

    +) Từ viết tắt trong câu này là gì vậy " kSPS "
    Code:
    Up to 15 kSPS at Maximum Resolution
    cám ơn các bạn !
    Những điều bạn thắc mắc là giới hạn tối đa mà AVR có thể hoạt động mà không bị lỗi (giới hạn ổn định, an toàn) nếu hoạt động trên giới hạn này AVR có thể bị treo, hư .v.v. Hãng sản xuất luôn đưa ra datasheet ở mức tối ưu chip của họ thường không đạt được những giới hạn này trừ dòng chip xài trong lĩnh vực quân sự, vì vậy có vài thứ tính ra cũng chỉ mang tính lý thuyết tính hay giải thích làm chi cho nhức đầu?
    Và một chú ý là không bao giờ để chip hoạt động quá giới hạn của nó nếu muốn chip còn sống.
    VD: atmega8 chạy với tầng số 16mhz là tối đa theo Datasheet nhưng bạn gắn xtal 20mhz hay hơn vẫn chạy nhưng sẽ nóng và chạy lâu thì sẽ bùm....
    "Khi khai báo cho codevision chọn tần sỗ chip là 16MHz --> mục ADC thì nó lại cho phép mình có thể chọn 1000 Khz mặc dù không tick vào cái mục 8 bít ==> theo datasheet có phi lý không . Và nếu chọn như vậy có oke không ? by my teacher F_ADC = 200Khz it won't work )." nếu có điều kiện bạn đo thực tế xem coi nó có được 1000 Khz không nếu được ATMEL chắc phải nhờ bạn sửa lại Datasheet cho họ (nhiều khi họ lầm chăng) còn con số của mấy bộ biên dịch thì như thế nào chẳng được thực tế mới quan trọng.
    Last edited by itx; 01-12-2009, 13:18.
    Từ chối trách nhiệm:
    Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
    Blog: http://mritx.blogspot.com

    Comment


    • #3
      Nguyên văn bởi itx Xem bài viết
      còn con số của mấy bộ biên dịch thì như thế nào chẳng được thực tế mới quan trọng.
      Bạn nói vậy không thuyết phục. Codevision đâu phải là một mớ rau mà bạn phán bừa như thế !
      mọi thứ đều có lý do ! mình cũng hỏi một số box ở nước ngoài để xem mấy mod ở đó có ý kiến sao . dù sao cũng cám ơn bác đóng góp.. ah mà bác nói chạy ở 20mhz mà bùm thì có lẽ bạn liên hệ với bác nghiaha thì phải mình có đọc bác này truyền uart cần tốc độ cao nên overlock và vẫn ngon lành không warm chip như bác nói đâu.. Điện tử là lý thuyết + thử mới nói được không phán bừa thế bác ... Còn mình thắc mắc thì vẫn phải đi hỏi thôi.

      Comment


      • #4
        Nguyên văn bởi newbie_avr Xem bài viết
        Bạn nói vậy không thuyết phục. Codevision đâu phải là một mớ rau mà bạn phán bừa như thế !
        mọi thứ đều có lý do ! mình cũng hỏi một số box ở nước ngoài để xem mấy mod ở đó có ý kiến sao . dù sao cũng cám ơn bác đóng góp.. ah mà bác nói chạy ở 20mhz mà bùm thì có lẽ bạn liên hệ với bác nghiaha thì phải mình có đọc bác này truyền uart cần tốc độ cao nên overlock và vẫn ngon lành không warm chip như bác nói đâu.. Điện tử là lý thuyết + thử mới nói được không phán bừa thế bác ... Còn mình thắc mắc thì vẫn phải đi hỏi thôi.
        vậy đọc Datasheet làm gì Atmel viết Datasheet làm gì? Tôi đâu nói atmega8 không chạy được ở 20mhz? mà nói khi chạy ở đó nó không còn ổn định bác nghiaha dám để con atmega8 overlock đó chạy 24/24h mà đảm bảo không ?
        Codevision nó cập nhật sửa lỗi bộ biên dịch của nó làm gì nếu không có lỗi, không bum ?
        Điện tử là thực tế + lý thuyết chứ không phải là lý thuyết + thử, cái lý thuyết chỉ để tham khảo để phát huy thực tế, củng cố thực tế. Trở lại ví dụ đơn giản overlock trên lý thuyết atmega8 không chạy được trên 16mhz vậy thực tế là sao? bạn có biết là chất lượng chip cũng khác nhau không?
        theo lý luận (theo Datasheet) thì atmega8 có adc trên 200 kHz vậy thực tế thì sao?
        đừng quá quan trọng lý thuyết.
        Từ chối trách nhiệm:
        Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
        Blog: http://mritx.blogspot.com

        Comment


        • #5
          Coi thử cách bạn newbie_avr test codevision thì thấy có lẽ codevision cho phép max adc clock vào khoảng 1000kHz. Với fosc=16M, CV cho chọn đến 1000KHz tương ứng các bit ADPS2:0= 100 (division factor =16). Khi chọn fosc=20M thì ứng với division factor 16 tạo ra tần số 1250KHz cao quá ngưỡng nên chuyển xuống mức thấp hơn là 625 KHz@ ADPS2:0= 101, dfactor=32. Bạn cứ chọn hai cái tần số đó rồi giở ra thanh ghi ADCSRA xem có phải như mình nói không.

          Tại sao không phải là 200K mà là 1000K, đó là cách Pavel Nedved thiết kế phần mềm. Nghe qua thì thấy chuối nhưng nghĩ lại thì thấy không phải không có chủ đích (không lẽ "nó" không biết tần số ADC cực đại của AVR ư?) Không giới hạn bởi phần cứng, Codevision cho phép cài đặt tần số linh hoạt hơn, tùy mục đích sử dụng, có thể cài đặt một lần rồi thử cho internal RC 1M cũng như external crystal 20M đều được. Không lẽ vì sợ mấy newbie không biết đường mà phải khống chế (phần input) phần mềm theo đúng datasheet 200K, bỗng có ngày atmel ra mega16 rev Z ADC 500KHz thì mấy phiên bản cv cũ vứt hết à. Túm gọn lại là CodeVision cho phép cài đặt cao hơn mức cho phép trong datasheet, để người sử dụng tùy ý cài đặt theo ý thích và tự chịu rủi ro.
          Thêm nữa kSPS là kilosamples per second, số mẫu mỗi giây. Nếu bạn đọc được câu 13 xung một mẫu thì hiểu kSPS.
          Đã bỏ nghề về quê chăn gà...

          Comment


          • #6
            theo datasheet của con atmega8 thì tần số max là 1 M mà..? tần số tín hiệu vào max là 38.5k
            hi. vậy mà hôm trc mình chơi thạch anh 16Mhz, clk cho ADC10 bit là 8M mà.. ko thấy j là lạ... chắc nó có sai số trong đó mà mình ko bit hỉ...

            Comment


            • #7
              Bạn có thể cho ADC clock maximum= F_CPU/2 cũng chạy , tốc độ convert nhanh hơn (cứ 13(13.5) nhịp/conversation tính tới) nhưng mà độ chính xác thì không biết, có thể lệch một vài LSB, hoặc vài chục LSB cũng nên.

              Để test, cứ set clock tăng dần cho nó chạy, clock càng cao thì nó chạy càng nhanh, khi nào thấy nó lệch dữ quá hoặc là ADC treo luôn thì biết được đó là giới hạn.

              Nếu để chạy chơi thì bạn có thể overclock AVR khoảng 20% nếu bọ ngồn tốt , VD ATmega8-16PU thì chạy 120%= 19.2Mhz, còn làm thương mại thì chịu khó nhìn vô cái muc "electrical characteristics". Đừng đùa với lữa. Có một anh ép xung con mega644 lên 28MHz, sản phẩm thương mại hẵng hoi ! link: http://www.xgamestation.com/view_product.php?id=46

              NVT2
              Tín đồ AVR giáo.

              Comment


              • #8
                Ủa, vậy là các loại VXL đều có thể ép xung phải ko ạ Trước giờ vẫn nghịch ép xung trên CPU máy tính mà ko biết là mấy con VĐK này cũng tương tự
                Say thanks with any post you think it's helpful...

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X