Thông báo

Collapse
No announcement yet.

Phân biệt giữa DELAY và TIMER ????

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

  • Phân biệt giữa DELAY và TIMER ????

    Em tự mày mò học lập trình nhưng đến đoạn này thì em lại hơi lơ tơ mơ .
    Mọi người giúp em phân biệt giữa Delay và Timer với ( bản chất, công dụng , cách dùng ...)
    Và cho em xin ví dụ để phân biệt giữa 2 cái đó ko ?? khi nào dùng Delay và khi nào thì dùng Timer ???

  • #2
    Delay là trễ ( tiếng tây nó dịch ra là thế )
    Timer là bộ thời gian hay đồng hồ ( tiếng tây nó nghĩa là vậy ).

    Delay thường nói về việc làm cho MCU trì hoãn thực thi giữa 2 lệnh bằng cách cho nó làm cái gì đó vô nghĩa.
    Còn timer là nói về một ngoại vi ( phần cứng ) có chức năng đo được thời gian bằng cách đếm xung nhịp. Timer cũng có thể ứng dụng để tạo trễ.

    Khi muốn MCU có thời gian trễ khi chuyển từ đoạn lệnh này sang đoạn lệnh khác thì chèn thêm delay vào giữa.
    Khi muốn tính toán thời gian, tạo trễ, hẹn giờ hoặc dùng để đếm xung chính xá tốc độ cao hoặc tạo xung...bla..bla.. thì dùng timer.

    Comment


    • #3
      vậy thằng Timer cũng có thể tạo trễ đc như thằng delay đúng ko a ??
      Vd: em muốn nháy 1 con led 10s bt em sẽ dùng delay 10s nhưng thay vào đó ta có thể dùng timer để tạo ra 10s đó đúng ko a ?
      Em đọc tài liệu còn thấy 1 chỗ nữa em chưa thông đó là khi delay thì trong thời gian đó MCU ko thể làm gì khác nhưng dùng timer thì MCU vẫn có thể thực hiện các hoạt động khác trong thời gian đó đúng ko a ??
      Cái này em chưa nắm rõ lắm. anh có thể giải thích cho em đc ko a ? cho em xin ví dụ đc thì càng tốt.
      Em cảm ơn !

      Comment


      • #4
        - delay là hàm lệnh cho mcu thực hiện 1 lượng câu lệnh vô nghĩa tiêu tốn 1 khoảng thời gian nào ấy rùi mới tiếp tục thực hiện lệnh tiếp theo...
        - timer là 1 hàm nó tự động đếm tăng dần đến tràn bộ nhớ của thanh ghi timer ấy thì nó lại đếm lại từ đầu đồng thời có cờ báo để nó thực hiện 1 cái gì đó do người lập trình lập...

        Comment


        • #5
          Em không hiểu ở chỗ. Khi bộ đếm đếm từ giá trị mình muốn tới giá trị đã xác định... lúc đó ic có làm nhiệm vụ gì ko khi vẫn có lệnh.
          Ví dụ em lập đoạn code cho led sáng 40% năng lượng điện. Trong 1s. Timer ngừng 100 lần. Có 40 lần thì led sáng. Vậy có nghĩa ở 40 lần đầu. Lúc cờ tràn thì ic có làm led sáng ko? Tức led sáng liên tục hay led sáng nhấp nháy 40 lần do quá trình xét điều kiện timer tràn?
          Cho em hỏi ý nhỏ muốn timer chế độ 16bit tự nạp thì mã code TMOD như nào ạ? E chưa rành chỗ này..
          Thanks anh chị

          Comment


          • #6
            - trong lúc timer đếm tăng dần và lưu vào thanh ghi thì mcu vẫn hoạt động bình thường, đến khi xảy ra tràn cờ ngắt báo hiệu thì nó sẽ thực hiện nốt câu lệnh đang làm dở rùi nhảy đến câu lệnh mà bạn lập trình cho nó làm khi xảy ra tràn, sau khi làm xong lệnh ấy thì nó lại nhảy về đúng vị trí nó đã dừng và thực hiện tiếp...
            - cụ thể: ví dụ bạn lập trình chân A0 bình thường là tắt, khi xảy ra tràn thì nó mới sáng, sau đó lại về 0 thì đnè sẽ nhấp nháy 4 lần. nếu ko cài lại giá trị 0 thì nó sẽ sáng liên tục...
            - nếu là code C cho pic thì post lên đây...

            Comment


            • #7
              Nguyên văn bởi anhmone Xem bài viết
              vậy thằng Timer cũng có thể tạo trễ đc như thằng delay đúng ko a ??
              Vd: em muốn nháy 1 con led 10s bt em sẽ dùng delay 10s nhưng thay vào đó ta có thể dùng timer để tạo ra 10s đó đúng ko a ?
              Em đọc tài liệu còn thấy 1 chỗ nữa em chưa thông đó là khi delay thì trong thời gian đó MCU ko thể làm gì khác nhưng dùng timer thì MCU vẫn có thể thực hiện các hoạt động khác trong thời gian đó đúng ko a ??
              Cái này em chưa nắm rõ lắm. anh có thể giải thích cho em đc ko a ? cho em xin ví dụ đc thì càng tốt.
              Em cảm ơn !

              Timer cũng dùng để tạo trễ được.

              Khi delay thì MCU vẫn làm việc mình thường. Nhưng những việc đó là vô nghĩa đối với người lập trình (nó đang câu giờ cho đủ thời gian trễ ). Thời gian trễ phụ thuộc vào lượng công việc vô nghĩa mà người lập trình giao cho nó. MCU sẽ chờ lượng công việc đó hoàn thành.
              Còn dùng timer thì MCU cũng vẫn câu giờ như vậy. Thời gian trễ lúc này được timer tính toán. MCU sẽ chờ tín hiệu phản hồi về từ timer.
              Trừ khi bạn đang sử dụng một RTOS thì lúc trễ MCU vẫn làm thực thi hàm khác được.

              Comment


              • #8
                Nguyên văn bởi mrkine Xem bài viết
                Em không hiểu ở chỗ. Khi bộ đếm đếm từ giá trị mình muốn tới giá trị đã xác định... lúc đó ic có làm nhiệm vụ gì ko khi vẫn có lệnh.
                Ví dụ em lập đoạn code cho led sáng 40% năng lượng điện. Trong 1s. Timer ngừng 100 lần. Có 40 lần thì led sáng. Vậy có nghĩa ở 40 lần đầu. Lúc cờ tràn thì ic có làm led sáng ko? Tức led sáng liên tục hay led sáng nhấp nháy 40 lần do quá trình xét điều kiện timer tràn?
                Cho em hỏi ý nhỏ muốn timer chế độ 16bit tự nạp thì mã code TMOD như nào ạ? E chưa rành chỗ này..
                Thanks anh chị
                Khi timer nhận xung và đếm, giá trị trong thanh ghi tăng lên thì khi đó MCU vẫn thực thi các lệnh khác, không ảnh hưởng gì đến nhau.

                Mỗi lần timer tràn thì cờ tràn được bật và MCU sẽ biết. 40 lần tràn đầu, MCU ra lệnh cho led sáng, 60 lần tràn sau, MCU cho led tắt.

                Còn phần TMOD thì không biết ( quên rồi )

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X