Saya memiliki sirkuit yang mudah terhubung, dengan LED yang terhubung ke pin 18 pada referensi PAPAN. Saya menjalankan program sederhana untuk menempatkan pin 18 ke HIGH, yang menyalakan LED, dan kemudian beberapa detik kemudian, saya mengatur pin 18 ke RENDAH, dan akhirnya saya mengakhiri program saya dengan GPIO.cleanup ().
Pada titik ini LED mati, yang berarti pin 18 mati (RENDAH). Sekarang saya me-reboot atau me-restart Raspberry Pi saya, dan ketika boot kembali, LED pada pin 18 menyala lagi, meskipun pinnya mati sebelum saya reboot Raspberry Pi.
Mengapa ini bisa terjadi? Bagaimana saya bisa mengonfigurasi pin tertentu, seperti pin 18 agar mati ketika Raspberry Pi melakukan boot? Dan saya tidak ingin pin GPIO berada pada TINGGI ketika Raspberry Pi melakukan booting.
Saya prihatin dengan masalah ini, karena katakanlah pin 18 terhubung ke motor DC pada robot, dan ketika Raspberry Pi menyala, motor akan hidup, dan ini bukan sesuatu yang saya inginkan karena akan mengganggu seluruh struktur robot, dan beberapa motor mungkin mulai dan yang lain tidak, tergantung pada pin yang terhubung dengannya. Saya ingin secara manual menyalakan semua motor secara tersinkronisasi.
Satu hal lagi adalah tidak semua pin memiliki masalah ini. Beberapa tidak aktif saat Raspberry Pi melakukan boot, tetapi yang lain tidak.
/sys/class/gpio
dan mengekspor pin 18, keadaan apa yang dilakukan sistem, lalu mengatakannya jika Anda tidak mengubah apa pun?echo
, yang menulis, yaitu, menetapkan sesuatu. Setelah Anda mengekspornya, Anda ingin menahan diri dari itu dan hanya menggunakancat
, yang berbunyi, untuk memeriksa arah dan nilai.Jawaban:
Pada powerup, GPIO ditarik baik tinggi atau rendah melalui resistor internal. Apakah tarikan tinggi atau rendah untuk GPIO tertentu dirinci pada halaman 102 dari BCM2835 ARM Peripherals .
Ketika kernel Linux dimulai dan jika pohon perangkat diaktifkan (kemungkinan) maka itu akan mengkonfigurasi ulang GPIO sesuai dengan pengaturan pohon perangkat. Modul yang diambil dari
/etc/modules
juga dapat memperbarui status GPIO.Perangkat lunak lain yang Anda jalankan saat start up berpotensi mengkonfigurasi ulang GPIO setelah pengaturan bagan perangkat dan memuat modul.
Paling aman untuk menemukan solusi perangkat keras jika Anda memiliki perangkat keras yang dapat dipicu secara salah pada startup sistem.
sumber
Ketika Raspberry Pi mem-boot garis GPIO diatur ulang ke default chip, maka OS dimuat dan me-reset mereka ke default OS. Tidak ada cara untuk "mengingat" pengaturan di reboot. Lihat juga Apa kekuatan pada keadaan GPIO? dan status GPIO setelah boot .
sumber
Aku tahu ini sudah terlambat. Untuk menjawab. Anda dapat menulis skrip python atau skrip bash yang secara manual mengatur pin ke rendah dan menjadwalkan tugas cron untuk dijalankan pada setiap boot. Anda tidak perlu mengubah sistem / file penting apa pun. Terlepas dari cron
sumber