Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Timer Internal Arduino

Komponen dan persediaan

Arduino UNO
× 1
LED (generik)
× 1
Resistor 220 ohm
× 1

Tentang proyek ini

Ikhtisar

Jika Anda perlu menghitung waktu dengan akurat, Anda perlu menggunakan timer, tetapi biasanya tidak mudah menggunakan timer internal Arduino, jadi dalam tutorial ini saya mencoba menjelaskan cara menggunakannya dengan cara yang mudah.

Sangat penting untuk menggunakan timer karena selama fungsi delay() Anda tidak dapat melakukan apa-apa, tetapi dengan timer Anda dapat melakukan segalanya karena ketika saatnya tiba, itu akan mengaktifkan interupsi.

Saya menggunakan TIMER0 karena merupakan timer yang paling mudah, mungkin kedepannya saya akan menjelaskan tentang timer lainnya.

Cara Kerja

Hal pertama yang perlu Anda lihat adalah datasheet ATmega328P.

Ini adalah diagram blok penghitung, dan dengan melihat ini Anda dapat memahami cara kerjanya.

Prescaler menerima pulsa dari siklus clock dan kemudian meneruskannya ke Logika Kontrol, oleh karena itu Logika Kontrol menambah register TCNTn sebesar 1.

Sekarang kita dapat membandingkan nilai TCNTn dengan nilai tertentu. Ketika register TCNTn mencapai nilai ini, Anda tahu bahwa itu melewati waktu tertentu.

Metode ini disebut mode CTC untuk "Hapus Timer saat Bandingkan". Nilai register TCNTn dibandingkan dengan register OCRn, ketika terjadi kecocokan perbandingan, TOVn menghasilkan interupsi.

Hal penting lainnya adalah prescaler, dengan ini Anda dapat membuat pembagian jam yang berbeda, sebenarnya 16MHz terlalu banyak tetapi, berkat prescaler, Anda dapat membuat beberapa submultiple darinya. Ini tergantung pada konfigurasi register TCCR0B.

Hal penting lainnya adalah menentukan nilai register OCRn untuk menghitung waktu tertentu, Anda memerlukan sedikit matematika.

Saya tahu bahwa semua ini mungkin tampak terlalu rumit, tetapi saya yakin kode di bawah ini akan menjawab setiap pertanyaan.

Dalam hal ini, kami mengaktifkan permintaan interupsi setiap 0,001 detik.

 TCCR0A|=(1< 

Penting untuk mengatur prescaler di akhir karena setelah instruksi ini timer mulai menghitung, jika Anda perlu menghentikannya, Anda harus mereset semua bit TCCR0B.

Di bawah ini ada contohnya.

Kode

  • Pengatur waktu internal
Pengatur waktu internalArduino
/*Program ini menghidupkan dan mematikan LED pada pin 13 setiap 1 detik menggunakan timer internal*/int timer=0;bool state=0;void setup() { pinMode(13,OUTPUT); TCCR0A=(1<=1000){ state=!state; pengatur waktu =0; } digitalWrite(13,status); }ISR(TIMER0_COMPA_vect){ //Ini adalah timer permintaan interupsi++;}

Skema


Proses manufaktur

  1. Arduino Spybot
  2. FlickMote
  3. TV Buatan Sendiri B-Gone
  4. Jam Master
  5. Temukan Saya
  6. Arduino Power
  7. Tech-TicTacToe
  8. Arduino Quadruped
  9. Arduino Joystick
  10. Mesin CNC