Thông báo

Collapse
No announcement yet.

Các bác giúp em cách tính thời gian tạo trễ bằng timer với!

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

  • Các bác giúp em cách tính thời gian tạo trễ bằng timer với!

    Em chào các bác, em muốn tạo 1 xung tại đầu ra Compare out với chu kỳ xung là 1 giây dùng timer8. Trong đó, nửa thấp là 0.5s và nửa cao là 0.5s.
    Em tính chu kỳ của xung đó theo công thức: OutputPeriod = SourceClockPeriod * (PeriodRegisterValue + 1)
    Trong đó:
    SourceClockPeriod = 24MHz/16/15/10 = 200Hz => hay 0.005giây
    PeriodRegisterValue = 199
    và CompareValue = 99.
    Em ko dùng ngắt nào cả.
    Em làm như vậy mà dịch và chạy thử thì thời gian nháy led ko đúng là 0.5s sáng còn 0,5s tắt. Mà nó nhanh hơn rất nhiều. Em tìm mãi ko biết sai chỗ nào. Các bác giúp em với ạ. Em mới học nên cũng đang thử test từng module của nó. Ko làm được cái này em chắc nản lắm. Cảm ơn các bác rất nhiều!

  • #2
    Nguyên văn bởi chuabietyeu Xem bài viết
    Em chào các bác, em muốn tạo 1 xung tại đầu ra Compare out với chu kỳ xung là 1 giây dùng timer8. Trong đó, nửa thấp là 0.5s và nửa cao là 0.5s.
    Em tính chu kỳ của xung đó theo công thức: OutputPeriod = SourceClockPeriod * (PeriodRegisterValue + 1)
    Trong đó:
    SourceClockPeriod = 24MHz/16/15/10 = 200Hz => hay 0.005giây
    PeriodRegisterValue = 199
    và CompareValue = 99.
    Em ko dùng ngắt nào cả.
    Em làm như vậy mà dịch và chạy thử thì thời gian nháy led ko đúng là 0.5s sáng còn 0,5s tắt. Mà nó nhanh hơn rất nhiều. Em tìm mãi ko biết sai chỗ nào. Các bác giúp em với ạ. Em mới học nên cũng đang thử test từng module của nó. Ko làm được cái này em chắc nản lắm. Cảm ơn các bác rất nhiều!
    chào bạn, theo nhu ban nói thì bạn chọn hệ số CPU clock =16, hệ số VC1=15, hệ số VC2=10 và bạn chọn clock của timer8 là VC3.
    VC3=24000000/16/15/10 =10000Hz hay chu kì T=0.0001s.
    compareout sẽ tích cực khi đếm từ 199 xuống 99, tức là mất 0,01s. Nếu bạn dùng xung đầu ra này để thay đổi mức của đèn led thì mình dám chắc con led của bạn gần như sáng liên tục làm sao thấy nó nháy được. Giảm clock di nữa sẽ ok ngay.

    Comment


    • #3
      Bác cho em hỏi chút nữa!

      Nguyên văn bởi kien(tbd gr) Xem bài viết
      chào bạn, theo nhu ban nói thì bạn chọn hệ số CPU clock =16, hệ số VC1=15, hệ số VC2=10 và bạn chọn clock của timer8 là VC3.
      VC3=24000000/16/15/10 =10000Hz hay chu kì T=0.0001s.
      compareout sẽ tích cực khi đếm từ 199 xuống 99, tức là mất 0,01s. Nếu bạn dùng xung đầu ra này để thay đổi mức của đèn led thì mình dám chắc con led của bạn gần như sáng liên tục làm sao thấy nó nháy được. Giảm clock di nữa sẽ ok ngay.
      Đúng là em chọn VC3 làm clock timer8. em cũng ko hiểu lắm cái tham số VC3 Source và VC3 Divider.
      Em đã chọn VC3 Source là VC2 (=10000HZ như tính toán ở trên), rồi em chọn VC3 Divider = 200.
      Theo em hiểu thì VC3 = VC2 / VC3 Divider = 10000 / 200 = 50Hz nên chu kỳ là 0.02s. và nguồn xung này được dùng làm clock cho timer8. Em hiểu thế có đúng ko a? Nếu có chỗ nào sai anh chỉ giáo em với ạ! Em cảm ơn nhiều a.

      Comment


      • #4
        Nguyên văn bởi chuabietyeu Xem bài viết
        Đúng là em chọn VC3 làm clock timer8. em cũng ko hiểu lắm cái tham số VC3 Source và VC3 Divider.
        Em đã chọn VC3 Source là VC2 (=10000HZ như tính toán ở trên), rồi em chọn VC3 Divider = 200.
        Theo em hiểu thì VC3 = VC2 / VC3 Divider = 10000 / 200 = 50Hz nên chu kỳ là 0.02s. và nguồn xung này được dùng làm clock cho timer8. Em hiểu thế có đúng ko a? Nếu có chỗ nào sai anh chỉ giáo em với ạ! Em cảm ơn nhiều a.
        lâu rồi k lên diễn đàn có thể bạn làm được rồi, nhưng mình cứ nói có thể giúp được thêm cho bạn. Bạn hiểu về clock đúng rồi, Vc3 của timer chính là Vc3 divider(=vc3/hệ số vc3 divider), tần số ngắt của timer(chính là tín hiệu compareout) sẽ phụ thuộc vào clock, giá trị của priode, comparevalue tuy nhiên dạng sóng của tín hiệu này lại phụ thuộc vào kiểu chọn ngắt của bạn. nếu thiết lập tần số như trên mà khi chạy không đúng như vậy thì do phần code của bạn thôi, post lên thì mọi người mới biết để giúp bạn được. Nói chung khi mơi làm psoc thì ai cũng gặp 1 vài lần như bạn, sửa mãi thì cũng sẽ được thôi.

        Comment


        • #5
          Cảm ơn!

          Nguyên văn bởi kien(tbd gr) Xem bài viết
          lâu rồi k lên diễn đàn có thể bạn làm được rồi, nhưng mình cứ nói có thể giúp được thêm cho bạn. Bạn hiểu về clock đúng rồi, Vc3 của timer chính là Vc3 divider(=vc3/hệ số vc3 divider), tần số ngắt của timer(chính là tín hiệu compareout) sẽ phụ thuộc vào clock, giá trị của priode, comparevalue tuy nhiên dạng sóng của tín hiệu này lại phụ thuộc vào kiểu chọn ngắt của bạn. nếu thiết lập tần số như trên mà khi chạy không đúng như vậy thì do phần code của bạn thôi, post lên thì mọi người mới biết để giúp bạn được. Nói chung khi mơi làm psoc thì ai cũng gặp 1 vài lần như bạn, sửa mãi thì cũng sẽ được thôi.
          Cảm ơn bác đã trả lời! Cái mạch test của em die mất rồi, cả chip cả LCD nữa nên em ko test được nên cũng chưa biết em làm đúng hay sai. Em đang tiết kiệm để mua lai. hì hị Bác biết cho nào bán 29466 rẻ thì PM cho em với nhé! Em cảm ợn!

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X