Salah satu variasi bug yang sangat menjengkelkan dalam sistem yang dikendalikan mikroprosesor adalah agar mikroprosesor secara tak terduga melakukan reset. Alat penting untuk men-debug masalah seperti ini adalah daftar kemungkinan penyebabnya. Apa yang dapat menyebabkan mikrokontroler mereset secara tidak terduga?
microcontroller
microprocessor
reset
debugging
Stephen Collings
sumber
sumber
Jawaban:
Pada chip PIC dan dsPIC, saya telah mengamati penyebab-penyebab reset tak terduga berikut.
Perangkat keras:
Perangkat lunak:
Pada beberapa dsPIC, register RCON menyimpan bit yang mengindikasikan penyebab reset. Ini bisa sangat membantu saat debugging.
sumber
Pin-RESET harus digerakkan dengan benar oleh sirkuit reset yang memonitor tegangan over / under dan menciptakan sinyal reset yang cukup lama. Dengan mengingat hal itu, pengalaman saya dengan reset perangkat keras yang tidak terkontrol berasal dari:
sumber
Satu kemungkinan tambahan yang tidak saya lihat dalam daftar ini, adalah perangkat yang mendukung ICSP. Jika pull up yang tidak memadai digunakan pada saluran yang memicu dalam mode pemrograman serial sirkuit, kadang-kadang dimungkinkan untuk masuk ke mode itu secara acak. Ini mengarah ke reset interval pendek nanti ketika tidak ada pembaruan program dikirim ke saluran penerima serial yang ditunjuk. Saya menduga timer pengawas internal mengatur ulang jika ICSP dimulai dan tidak ada data pemrograman yang dikirim. Ini adalah kesalahan yang saya buat dan menghabiskan banyak waktu mencari dengan 16F876.
sumber
Pastikan jika Anda menggunakan chip logika CMOS atau TTL di sirkuit Anda bahwa mereka memiliki kapasitor decoupling yang memadai di Vdd dan ground (biasanya 0,1 uF). Saya menggunakan CD4021 dalam desain dan ketika sedang digunakan, ternyata itu menyebabkan beberapa lonjakan yang menyebabkan mikroprosesor restart. Kemudian siklus itu akan berulang. Ini juga mengapa itu ide yang baik untuk menempatkan urutan pengujian yang jelas (seperti mengedipkan LED dan mematikan beberapa kali) di awal kode Anda sehingga Anda tahu bahwa mikroprosesor bekerja dan mengeksekusi kode.
sumber
Ini adalah salah satu hal langka yang mungkin muncul:
Saya punya proyek yang melibatkan mikrokontroler dan secara sporadis akan me-reset sendiri. Singkatnya, ternyata beberapa opsi harus diaktifkan atau dinonaktifkan jika tidak, reset dapat terjadi. Saya hanya menemukan ini dengan membaca errata setelah menyerah pada hal-hal lain.
Sekarang saya membuat kebiasaan untuk membaca errata bahkan sebelum saya memutuskan untuk menggunakan chip untuk mengetahui apa yang saya dapatkan dan jika itu sesuatu yang bisa saya kelola. Sayangnya, setelah lulus, saya tidak benar-benar memiliki orang untuk mendidik saya tentang praktik umum sehingga banyak pembelajaran dunia nyata saya telah melalui kegagalan dan frustrasi.
sumber