Arduino
Arduino Advanced: Interrupts, Timers, dan Direct Port Manipulation
ArduinoNinja
2025-02-15
6 Menit Baca
Teknik Arduino tingkat lanjut memungkinkan waktu yang presisi, eksekusi kode yang efisien, dan kontrol perangkat keras yang lebih baik. Interupsi memungkinkan eksekusi kode sebagai respons terhadap peristiwa perangkat keras tanpa polling. Interupsi eksternal pada pin tertentu (D2, D3 pada Uno) dipicu oleh perubahan tegangan - RISING, FALLING, CHANGE, LOW. Pasangkan dengan attachInterrupt(). ISR (Interrupt Service Routine) harus pendek dan cepat - cukup setel flag, tingkatkan counter, hindari delay atau Serial.print. Gunakan variabel volatile untuk komunikasi ISR. Pin Change Interrupts tersedia untuk semua pin tetapi menggunakan vektor yang digunakan bersama. Interupsi timer digunakan untuk tugas berkala tanpa pemblokiran delay(). Timer pada Arduino (Timer0, Timer1, Timer2) digunakan untuk PWM, millis(), dan delay. Konfigurasi timer manual dengan prescaler dan compare match register untuk interval yang presisi. Library timer (TimerOne, FlexiTimer2) menyederhanakan konfigurasi. Kasus penggunaan: pembuatan frekuensi yang presisi, pembacaan encoder, quadrature decoding, dan pengambilan sampel sensor secara berkala. Manipulasi port langsung digunakan untuk operasi GPIO yang cepat - beberapa pin dapat diubah statusnya secara bersamaan. Register AVR: DDRx untuk arah, PORTx untuk output, PINx untuk input. Gunakan operasi bitwise dengan mask. Contoh: PORTB |= (1<
Butuh Solusi IoT atau Smart Sensor?
Tim ahli teknis kami siap memberikan konsultasi gratis untuk proyek Anda.
Hubungi Kami