Apakah aman untuk secara tiba-tiba menghapus kekuatan Arduino? [Tutup]

12

Jika saya memiliki Arduino, bisakah saya tiba-tiba menyalakan dan mematikannya tanpa merusaknya? Jika saya mendesain produk yang memiliki sakelar hidup / mati, apakah saya harus memasukkan penundaan sebelum mematikan daya sehingga mikrokontroler dapat melakukan semacam pematian bersih? Atau tidak apa-apa untuk hanya menghubungkan sakelar SPST ke saluran listrik Arduino?

(Dengan mendesain produk, maksud saya menggunakan ATmega dengan kode Arduino secara independen pada papan kustom dengan komponen lainnya.)

Sunting: By Arduino Maksud saya mem-flash bootloader Arduino agar saya dapat memprogram di Arduino, bukan AVR. Chip yang ingin saya gunakan adalah Atmel atmega328P. Saya tidak memerlukan penggunaan EEPROM.

Michael Sohnen
sumber
3
Perhatikan bahwa "Arduino" adalah nama merek sehingga mendapat modal 'A'. Ibukota penting.
Transistor
3
Mungkin jika itu sebenarnya adalah "Arduino", tetapi pertanyaannya sebenarnya adalah tentang ATmega di papan kustom yang akan lebih merupakan "arduino". Adapun topik yang sebenarnya, selain ATmega kita juga harus mempertimbangkan komponen lain yang mungkin memiliki keadaan , terutama ingatan eksternal - misalnya, jika ada kartu SD yang membutuhkan banyak pemikiran dan kepedulian. Akhirnya, beberapa catu daya melakukan hal-hal buruk saat menghidupkan / mematikan.
Chris Stratton
1
Bisakah kami menganggap Anda tidak menggunakan kartu SD juga?
UKMonkey
Ini adalah produk Anda. Apakah Anda perlu menyimpan sesuatu jika daya mati? Jawaban atas pertanyaan itu menjawab pertanyaan Anda.
StainlessSteelRat

Jawaban:

18

Ya, aman untuk mematikan Arduino secara tiba-tiba.

Yah, kebanyakan aman.

Prosesor yang digunakan dalam berbagai Arduino memiliki tiga jenis memori:

  1. Flash - Di mana program Anda disimpan. Program Anda dapat membaca hal-hal dari sini, tetapi tidak dapat menulisnya.

  2. RAM - Di mana variabel program Anda disimpan saat program sedang berjalan. Data di sini menghilang ketika Anda mematikan Arduino. Program Anda membaca dan menulis di sini terus-menerus.

  3. EEPROM - Di mana program Anda dapat menyimpan barang-barang itu akan membutuhkan waktu berikutnya dijalankan. Biasanya hal-hal yang jarang berubah, tetapi diperlukan kapan saja program berjalan. Suka data kalibrasi untuk sensor.

Sebagian besar program hanya menggunakan Flash dan RAM. Anda dapat menghidupkan dan mematikan Arduino kapan saja Anda suka dengan program-program itu.

Jika program Anda menulis ke EEPROM, maka mematikan daya saat menulis ke EEPROM dapat merusak data di sana.

Bagaimana hal itu memengaruhi program Anda tergantung pada apa datanya.

Jika merusak data kalibrasi untuk sensor, Anda akan mendapatkan pengukuran buruk untuk apa pun yang terdeteksi sensor.

Jika Anda menulis checksum dengan data EEPROM Anda, maka Anda dapat mendeteksi korupsi dan program Anda dapat dimatikan daripada menggunakan data yang buruk.

Anda, tentu saja, akan tahu jika program Anda menulis ke EEPROM - Anda harus memuat pustaka yang terpisah dan menggunakan perintah khusus untuk membaca dan menulis ke area EEPROM.

Bahayanya benar-benar hanya pada saat singkat ketika Anda menulis ke EEPROM. Karena itu jarang terjadi (dan biasanya hanya dalam kondisi yang terkendali) juga akan jarang merusak data EEPROM.


Ringkasan:

Anda dapat menghidupkan dan mematikan Arduino sesuka hati tanpa bahaya, kecuali jika Anda menggunakan EEPROM - dan meskipun demikian Anda akan selalu berhasil melakukannya.

JRE
sumber
8
"Flash - Di mana program Anda disimpan. Program Anda dapat membaca hal-hal dari sini, tetapi tidak dapat menulisnya." - Banyak chip AVR (328P sudah termasuk) dapat memprogram sendiri flash. Sebenarnya, ini adalah cara kerja siklus pemrograman Arduino; bootloader, berjalan pada 328P, memprogram 328P itu sendiri. Ini sangat tidak mungkin OP akan melakukan itu, tetapi adalah mungkin.
marcelm
2
Juga, jika Anda menggunakan Arduino dengan perangkat keras tambahan di atasnya, (seperti sensor), Anda mungkin juga menambahkan kapasitor dan menghabiskan portpin untuk mengukur daya eksternal, sehingga ketika jika menghilang, Anda dapat dengan aman menyimpan ke eeprom apa pun yang Anda inginkan. ingin. Pada ATmega, siklus penulisan EEPROM biasanya 3,4 ms. Jadi jika kapasitor Anda dapat menjaga prosesor tetap hidup selama 5 ms, dan sebelum setiap operasi penulisan eeprom Anda memeriksa daya eksternal, Anda aman.
vsz
10

Ya, Anda dapat mematikan daya dengan cepat tanpa merusaknya.

Satu-satunya alasan saya dapat melihat untuk menunda daya pada rangkaian adalah untuk alasan fungsional atau fungsional perangkat eksternal Anda.

Misalnya daya mati, perlu menyimpan data ke memori non-volatile. Atau saat daya mati, perlu memastikan mekanisme berada pada posisi aman saat daya mati.

Ini akan membutuhkan pemantauan persediaan dan memiliki kapasitas penahanan yang memadai untuk menjalankan prosesor dan fungsi apa pun yang harus dilakukan.

JCollins
sumber
6

Istilah Arduino mengacu pada spektrum yang sangat luas dari papan mikrokontroler yang memiliki berbagai chip yang berbeda, dan efek dari kehilangan daya bervariasi. Jadi, saya akan merekomendasikan Anda memasukkan nomor bagian yang tepat dari chip ATmega yang digunakan. Tapi, secara umum untuk chip seperti ATmega328, berikut ini berlaku.

Ya, Anda dapat menghapus daya dari Arduino tanpa merusak atau merusak apa pun tetapi perlu diingat hal-hal berikut:

  • Jika kode Anda menggunakan EEPROM maka flash mungkin rusak atau data mungkin tidak disimpan secara akurat ketika perangkat mem-flash data dan daya dihilangkan.

  • Satu-satunya cara kehilangan daya secara tiba-tiba dapat membahayakan selain dari EEPROM adalah dengan perangkat yang digunakan dengan Arduino (misalnya kartu SD).

Electric_90
sumber