Chào các bạn!
Mình đang suy nghi một ví dụ nhỏ về đo tần số xung vuông(cỡ <5kHz thôi).Mình có 2 ý tưởng thế này mong moi người xem rồi tư vấn hộ mình nhé:
-Thứ nhất:Giả sử chân P07 là chân lấy đầu vào xung cần đo tần số(mình sẽ tính chu kỳ T=>f) mình đưa qua global rồi vào chân clock của Counter16(chân enable đặt High),rồi dùng bộ đếm Timer8 để xác định khoảng thời gian 1s.Ý của mình là dùng Counter16 đếm số xung đầu vào trong 1s rồi suy ra tần số(Giả sử trong 1s Counter16 đếm được 1000 thì tần số xung cần đo là 1Khz).Khi Timer8 khởi động cũng là lúc khởi động Counter16,khi Timer8 ngắt cũng là lúc 1s đã trôi qua lúc này mình đọc bộ đếm Counter16(wReadCounter16).
-Thứ hai:dùng ngắt GPIO để đếm số xung của Counter16.Xung clock sẽ đưa vào chân P07 và vào Enable của Counter16,khi có ngắt thì đọc số đếm được của Counter16 tương tự như trên.Tuy nhiên như thế chỉ đo được độ rộng xung chứ chưa thể đo được chu kỳ xung.
Mình đang rất gấp mong mọi người xem trả lời ngay mình nhé!thank!
Mình đang suy nghi một ví dụ nhỏ về đo tần số xung vuông(cỡ <5kHz thôi).Mình có 2 ý tưởng thế này mong moi người xem rồi tư vấn hộ mình nhé:
-Thứ nhất:Giả sử chân P07 là chân lấy đầu vào xung cần đo tần số(mình sẽ tính chu kỳ T=>f) mình đưa qua global rồi vào chân clock của Counter16(chân enable đặt High),rồi dùng bộ đếm Timer8 để xác định khoảng thời gian 1s.Ý của mình là dùng Counter16 đếm số xung đầu vào trong 1s rồi suy ra tần số(Giả sử trong 1s Counter16 đếm được 1000 thì tần số xung cần đo là 1Khz).Khi Timer8 khởi động cũng là lúc khởi động Counter16,khi Timer8 ngắt cũng là lúc 1s đã trôi qua lúc này mình đọc bộ đếm Counter16(wReadCounter16).
-Thứ hai:dùng ngắt GPIO để đếm số xung của Counter16.Xung clock sẽ đưa vào chân P07 và vào Enable của Counter16,khi có ngắt thì đọc số đếm được của Counter16 tương tự như trên.Tuy nhiên như thế chỉ đo được độ rộng xung chứ chưa thể đo được chu kỳ xung.
Mình đang rất gấp mong mọi người xem trả lời ngay mình nhé!thank!
Comment