Thông báo

Collapse
No announcement yet.

mọi người giúp mình tạo xung có độ trên là 488ns với at89s52 với được không ạ!

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

  • mọi người giúp mình tạo xung có độ trên là 488ns với at89s52 với được không ạ!

    tình hình là mình làm mạch định thời trong môm truyền dẫn,mình dùng thạch anh 12MHz và at89s52 tạo timer trễ 500ms để mô phỏng định thời điểm chèn bit. vì lúc trước thầy giáo không nói rõ là mạch định thời phải chạy đúng như lý thuyết(thời gian tồn tại 488ns cho mỗi bit). đến khi làm xong rồi thầy mới bảo là phải chứng minh được là thời gian tồn tại cho mỗi bit là 488ns code và mạch mình làm xong hết rồi. mà với thạch anh 12MHz thì timer trễ nhỏ nhất cũng là 1us rồi.

    code mình viết theo kiểu dùng timer tạo trễ 500ms để tạo xung định thời sau mỗi T=500ms mình tăng giá trị của biến rồi xuất giá trị ra port đưa vài giải mã 74hc138

    giờ mình cần tạo 1 xung vuông có thời gian trễ là cơ ns, cụ thể là 488ns cho mỗi bit, và 8bit*488ns=3,9us cho 1 khe, 3,9us*32khe=125us cho mỗi khung.
    theo mình tìm hiểu thì at89s52 sử dụng đựoc thạch anh từ 3-33MHz.



    vậy bây giờ mình phải làm tn để tạo ra được 1 xung có thời gian trễ là 488ns với con at89s52 này nhỉ.? ai có cách nào không chỉ mình với

    mình tìm trên mạng có con thạch anh 24,576MHz
    Bộ định thời làm việc với tần số đồng hồ bằng 1/12 tần số XTAL, do vậy ta có 24,576MHz/12=2,048MHz là tần số của bộ định thời. Kết quả là mỗi nhịp xung đồng hồ có chu kỳ T=1/2,048MHz=488ns. Hay nói cách khác, bộ Timer0 tăng 01 đơn vị sau 2,048ms để tạo ra bộ trễ bằng số_đếm´2,048ms. như vậy liệu có đúng không nhỉ
    Last edited by canhdt4; 15-12-2013, 14:07.

  • #2
    dùng 8051 tạo xung lớn, rồi dùng logic gate chia nhỏ ra được không bác?

    Comment


    • #3
      Nguyên văn bởi condonhan Xem bài viết
      dùng 8051 tạo xung lớn, rồi dùng logic gate chia nhỏ ra được không bác?
      vì mình lỡ thiết kết rồi, mạch bjơ không thêm bớt được gì nữa. chỉ có thể thay đổi code thôi

      Comment


      • #4
        Nguyên văn bởi canhdt4 Xem bài viết
        tình hình là mình làm mạch định thời trong môm truyền dẫn,mình dùng thạch anh 12MHz và at89s52 tạo timer trễ 500ms để mô phỏng định thời điểm chèn bit. vì lúc trước thầy giáo không nói rõ là mạch định thời phải chạy đúng như lý thuyết(thời gian tồn tại 488ns cho mỗi bit). đến khi làm xong rồi thầy mới bảo là phải chứng minh được là thời gian tồn tại cho mỗi bit là 488ns code và mạch mình làm xong hết rồi. mà với thạch anh 12MHz thì timer trễ nhỏ nhất cũng là 1us rồi.

        code mình viết theo kiểu dùng timer tạo trễ 500ms để tạo xung định thời sau mỗi T=500ms mình tăng giá trị của biến rồi xuất giá trị ra port đưa vài giải mã 74hc138

        giờ mình cần tạo 1 xung vuông có thời gian trễ là cơ ns, cụ thể là 488ns cho mỗi bit, và 8bit*488ns=3,9us cho 1 khe, 3,9us*32khe=125us cho mỗi khung.
        theo mình tìm hiểu thì at89s52 sử dụng đựoc thạch anh từ 3-33MHz.



        vậy bây giờ mình phải làm tn để tạo ra được 1 xung có thời gian trễ là 488ns với con at89s52 này nhỉ.? ai có cách nào không chỉ mình với

        mình tìm trên mạng có con thạch anh 24,576MHz
        Bộ định thời làm việc với tần số đồng hồ bằng 1/12 tần số XTAL, do vậy ta có 24,576MHz/12=2,048MHz là tần số của bộ định thời. Kết quả là mỗi nhịp xung đồng hồ có chu kỳ T=1/2,048MHz=488ns. Hay nói cách khác, bộ Timer0 tăng 01 đơn vị sau 2,048ms để tạo ra bộ trễ bằng số_đếm´2,048ms. như vậy liệu có đúng không nhỉ
        Nếu bạn tính toán đúng thì đó là thời gian giữa 2 lệnh đơn của 89s52 mà thôi, có nghĩa là nếu bạn dùng asm viết lệnh cho 89s52 bạn viết thế này chẳng hạn
        PHP Code:
        lệnh 1mov A#10
        lệnh 2mov B
        thì thời gian giữa lệnh 1 với lệnh 2 chính là cái mà bạn vừa tính ra đó. Nên theo mình nghĩ 89xx không khả thi trong trường hợp này.

        Comment


        • #5
          bình thường mình vẫn thấy tính như thế để nạp giá trị vào thanh ghi TH và TL không đúng à. dù chương trình có dài bao nhiêu câu lệnh đi nữa

          Comment


          • #6
            Nguyên văn bởi canhdt4 Xem bài viết
            bình thường mình vẫn thấy tính như thế để nạp giá trị vào thanh ghi TH và TL không đúng à. dù chương trình có dài bao nhiêu câu lệnh đi nữa
            Không phải ý là đúng hay không đúng mà là như vậy thì không cần delay. Lệnh trước và lệnh sau nó đã trễ với nhau là nhiêu đó thời gian rồi. Nó giống như kiểu bố mẹ bạn giao cho bạn quét nhà lúc 9h đến khoảng 9h15 thì đi đón em đi học về chẳng hạn, như vậy nếu bạn quét nhà chỉ trong vòng 1' thì bạn sẽ phải đợi "delay" cho đến 9h15 thì mới đi đón em, nhưng đằng này nhà bạn rộng quá bạn mất đúng 15' để quét nhà -> quét nhà xong cái là đi đón em luôn "lệnh 1: quét nhà, lệnh 2: đi đón em"

            Comment


            • #7
              Nếu bạn dùng thạch anh 24,576MHz như bạn nói thì 1 xung nhịp chính là 488ns như bạn tính thì có vẻ không khả thi đâu, bạn nên dùng phần cứng khác, tốc độ cao hơn. Nếu bạn dùng mà sử dụng ngắt, thì có khi ngắt liên tục + làm những việc khác nữa -> vi điều khiển đơ luôn

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X