0Pricing
Arduino & IoT Academy · Pelajaran

Tulis ISR yang Aman

Buat penangan interupsi tetap singkat dan gunakan volatile.

Tulis ISR yang Aman adalah pelajaran Arduino & IoT Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Arduino & IoT Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Arduino & IoT Academy mencakup 4 pelajaran total.

Fungsi Khusus

ISR, atau rutinitas layanan interupsi, adalah fungsi yang berjalan saat interupsi aktif. Fungsi ini memiliki aturan yang tidak dimiliki fungsi biasa.

Jaga agar Tetap Singkat

Aturan utamanya: buat ISR sesingkat mungkin. Program utama dijeda saat ISR berjalan, jadi selesaikan dengan cepat lalu keluar.

Lakukan Pekerjaan Berat Nanti

Di dalam ISR, cukup atur penanda atau tambah penghitung. Biarkan perulangan mengerjakan tugas lambat seperti mencetak atau menghitung setelah melihat penanda tersebut.

void myISR() {
  pressed = true;
}

Variabel Bersama

ISR dan perulangan Anda sama-sama mengakses variabel yang sama. Kompilator mungkin tidak mengira nilainya dapat berubah tanpa sepengetahuan perulangan, sehingga menimbulkan bug yang sulit terlihat. 🐞

Kata Kunci volatile

Tandai setiap variabel yang digunakan bersama ISR sebagai volatile. Ini memberi tahu kompilator bahwa nilainya dapat berubah kapan saja, sehingga harus selalu dibaca ulang.

volatile bool pressed = false;

Jangan Gunakan delay di Dalamnya

Jangan pernah memanggil delay di dalam ISR. Pengaturan waktu yang diperlukan delay juga dijeda selama interupsi, sehingga delay tidak akan berfungsi.

Serial Juga Berisiko

Hindari Serial.print di dalam ISR. Fungsi ini bergantung pada interupsi yang diblokir saat pengendali berjalan, sehingga keluaran dapat terhenti atau menjadi kacau.

millis Berhenti

Di dalam ISR, millis berhenti bertambah karena penghitungan latar belakangnya dijeda. Baca waktu yang telah berlalu di dalam perulangan, bukan di pengendali.

Tangani Penanda di Dalam Perulangan

Kembali ke perulangan, periksa penanda, tangani penanda tersebut, lalu hapus. Di sinilah respons sebenarnya berlangsung dengan aman.

if (pressed) {
  pressed = false;
  handlePress();
}

Membaca Nilai Banyak Bita

Saat perulangan membaca nilai volatile yang terdiri dari beberapa bita dan diperbarui ISR, nonaktifkan interupsi sebentar agar Anda mendapatkan angka yang utuh.

noInterrupts();
long c = count;
interrupts();

Mengapa Aturan Ini Penting

Ikuti aturan ini agar ISR tetap cepat dan dapat diprediksi. Jika melanggarnya, Anda dapat mengalami pembekuan, kehilangan data, atau nilai yang seolah-olah tidak pernah diperbarui.

Pemeriksaan Singkat

Mengapa variabel yang digunakan bersama oleh ISR dan perulangan harus ditandai sebagai volatile?

Rangkuman

Anda telah mempelajari cara menjaga ISR tetap singkat, menandai data bersama sebagai volatile, menghindari delay dan Serial, serta mengerjakan tugas sebenarnya kembali di dalam perulangan. 🎉

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tulis ISR yang Aman” gratis?

Ya — teks lengkap “Tulis ISR yang Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Arduino & IoT Academy, upgrade ke CoddyKit PRO. Kursus Arduino & IoT Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Tulis ISR yang Aman”?

Buat penangan interupsi tetap singkat dan gunakan volatile. Kamu berlatih Arduino & IoT Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Arduino & IoT Academy?

Tidak diperlukan pengalaman sebelumnya. Arduino & IoT Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Tulis ISR yang Aman” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Arduino & IoT Academy ini?

Ya. Setiap pelajaran Arduino & IoT Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Polling versus Interupsi
  2. attachInterrupt pada Pin
  3. Tulis ISR yang Aman
  4. Hitung Pulsa dari Encoder
← Kembali ke Arduino & IoT Academy