Arduino uno tcnt1 đếm bao nhiêu thì được 1s năm 2024
Cách đây một thời gian, chúng tôi đã công bố thêm thông tin về hàm millis () de ArduinoBây giờ chúng ta sẽ nghiên cứu sâu hơn về Bộ hẹn giờ Arduino, để bắt đầu với tính năng này cho tính năng, hãy hiểu cách bảng này quản lý thời gian với MCU, cũng như các chức năng khác ngoài mili (). Show Bộ hẹn giờ Arduino là gì?El Bộ đếm thời gian Arduino hoặc bộ đếm thời gian, là một chức năng được thực hiện bởi phần cứng (trong bộ vi điều khiển, với sự trợ giúp của tinh thể thạch anh tạo ra các xung đồng hồ và thiết lập "nhịp điệu", mà không cần phần cứng bên ngoài hoặc IC 555) cho phép điều khiển các sự kiện tạm thời nhờ đồng hồ Nội bộ. Ví dụ, thực hiện một nhiệm vụ xảy ra theo từng khoảng thời gian, thực hiện các phép đo thời gian chính xác, v.v., độc lập với mã phác thảo. Como Arduino UNO Nó có một chip MCU hoạt động ở tốc độ 16 Mhz, 16.000.000 có thể được thực thi mỗi giây. Các lệnh cần X chu kỳ để thực thi, không phải tất cả chúng đều thực thi trong cùng một chu kỳ đồng hồ, ví dụ, các lệnh 16 bit cần nhiều chu kỳ hơn trong kiến trúc AVR này. Hãy tưởng tượng rằng bạn sử dụng hàm delay (), điều này sẽ chặn thực thi trên MCU Arduino cho đến khi hết thời gian quy định và sau đó tiếp tục với chương trình, nhưng bộ hẹn giờ sẽ không chặn. Nó sẽ tính thời gian khi MCU tiếp tục thực hiện các lệnh khác đồng thời. Đó là lợi thế lớn. Bộ đếm thời gian liên quan đến sự gián đoạn của Arduino, vì chúng sẽ được thực thi thông qua chúng để tham gia một số nhiệm vụ cụ thể. Nói cách khác, Arduino Timer là một chức năng được kích hoạt tại một thời điểm nhất định, thực hiện một chức năng ngắt. Đó là lý do tại sao điều quan trọng là phải biết về những gián đoạn này. Phương thứcBộ hẹn giờ Arduino có 2 chế độ hoạt động, có thể sử dụng nó trong:
Nó có bao nhiêu bộ hẹn giờ? Các loại bộ hẹn giờđó 3 bộ hẹn giờ trên đĩa Arduino UNO, mặc dù có thể có nhiều hơn trên các tấm hàng đầu khác:
Bộ hẹn giờ Arduino hoạt động như thế nào?Để làm việc với Bộ hẹn giờ Arduino, điều quan trọng là phải biết tất cả điều này hoạt động điện tử như thế nào trong MCU của hội đồng phát triển này:
Các cạnh rất quan trọng vì các bộ định thời Arduino đo chu kỳ từ các cạnh tín hiệu. A) Có contador nó tăng dần theo từng chu kỳ và khi nó đạt đến giá trị thanh ghi, ngắt được thực hiện. Do đó, một khi bạn biết điều này, nếu bạn có 16Mhz trên Arduino MCUvà Bộ định thời 8 bit được sử dụng, có thể nói rằng ngắt sẽ xảy ra sau mỗi 16 μs (256/16000000) hoặc 4 ms cho 16 bit (65536/16000000). Vì vậy, nếu bạn đặt thanh ghi bộ đếm 16 bit ở mức tối đa, với giá trị 65535, thì ngắt sẽ xảy ra ở 4 ms để thực hiện bất kỳ tác vụ nào. Khi bộ đếm đạt đến giá trị lớn nhất có thể, nó sẽ trở lại 0 một lần nữa. Tức là xảy ra hiện tượng tràn và nó sẽ tính lại từ đầu. Để kiểm soát tốc độ tăng của bộ đếm thời gian, bạn cũng có thể sử dụng một người định sẵn, nhận các giá trị 1, 8, 64, 256 và 1024 và thay đổi thời gian như thế này: Tốc độ hẹn giờ (Hz) = Tần số xung nhịp của Arduino / Prescaler Nếu là 1, bộ điều khiển sẽ tăng lên 16 Mhz, nếu là 8 đến 2 Mhz, nếu là 64 đến 250 kHz, v.v. Hãy nhớ rằng sẽ có một bộ so sánh trạng thái của bộ đếm thời gian để so sánh giá trị của bộ đếm và bộ đếm trước cho đến khi chúng bằng nhau và sau đó thực hiện một hành động. Cho nên, tần số gián đoạn được đưa ra bởi công thức: +1 là do thanh ghi bộ đếm được lập chỉ mục ở 0, tức là nó không bắt đầu đếm ở 1 mà là 0. Tốc độ ngắt (Hz) = Tần số đồng hồ Arduino / Prescaler (giá trị thanh ghi so sánh + 1) May mắn thay, chúng ta không sửa đổi hồ sơ của Bộ hẹn giờ Arduino, vì nó sẽ được quản lý bởi các thư viện mà chúng tôi sử dụng trong mã. Nhưng nếu chúng không được sử dụng, chúng nên được cấu hình. Để hiểu rõ hơn về tất cả những điều này, ở đây tôi đưa ra hai mã phác thảo cho Arduino IDE mà bạn có thể có được để trải nghiệm việc sử dụng bộ hẹn giờ. Đầu tiên là mã sẽ nhấp nháy đèn LED được kết nối với chân 8 của Arduino mỗi giây: define ledPin 8void setup()
{
pinMode(ledPin, OUTPUT);
// Configurar Timer1
TCCR1A = 0; //Registro control A a 0, pines OC1A y OC1B deshabilitados
TCCR1B = 0; //Limpia el registrador
TCCR1B |= (1< Lập trình nhấp nháy hoặc nhấp nháy của đèn LED, như trong trường hợp trước mỗi giây, nhưng lần này sử dụng CTC tức là so sánh: |