Tại sao một số chân GPIO CAO khi Raspberry Pi khởi động?


18

Tôi có một mạch dễ dàng được nối lên, với một đèn LED được kết nối với chân 18 trên tham chiếu BOARD. Tôi chạy một chương trình đơn giản để đặt chân 18 lên CAO, bật đèn LED và sau đó vài giây, tôi đặt chân 18 thành THẤP và cuối cùng tôi kết thúc chương trình của mình với GPIO.cleanup ().

Lúc này đèn LED tắt, có nghĩa là chân 18 đã tắt (THẤP). Bây giờ tôi khởi động lại hoặc khởi động lại Raspberry Pi của mình và khi nó khởi động lại, đèn LED trên pin 18 sẽ bật lại, mặc dù pin đã tắt trước khi tôi khởi động lại Raspberry Pi.

Tại sao điều này có thể xảy ra? Làm cách nào tôi có thể định cấu hình một pin cụ thể, như pin 18 bị tắt khi Raspberry Pi khởi động? Và tôi không muốn bất kỳ chân GPIO nào ở mức CAO khi Raspberry Pi khởi động.

Tôi lo ngại về vấn đề này, vì giả sử rằng pin 18 được kết nối với động cơ DC trên robot và khi Raspberry Pi khởi động, động cơ sẽ bật và đây không phải là điều tôi muốn vì điều đó sẽ cản trở toàn bộ cấu trúc của robot và một số động cơ có thể khởi động và các động cơ khác sẽ không hoạt động, tùy thuộc vào các chân mà chúng được kết nối. Tôi muốn tự bật tất cả các động cơ một cách đồng bộ.

Một điều khác là không phải tất cả các chân có vấn đề này. Một số ở lại khi Raspberry Pi khởi động, nhưng những người khác thì không.


Đèn LED đó có sáng như khi bạn đặt nó lên cao không, hay nó chỉ phát sáng lờ mờ?
goldilocks

Có 3,3 volt áp dụng cho nó.
Viktor Raspberry

Vì vậy, nếu bạn đi vào /sys/class/gpiovà xuất mã pin 18, hệ thống sẽ nói trạng thái nào nếu bạn không thay đổi gì?
goldilocks

Khi tôi viết "/ sys / class / gpio", nó nói "-bash: / sys / class / gpio: Là một thư mục". Tôi không chắc chắn làm thế nào để xuất một pin cụ thể.
Viktor Raspberry

Có rất nhiều lời giải thích về điều đó , vì vậy tôi sẽ không bận tâm đến việc hồi sinh. Ví dụ đó là loại nặng về echo, mà viết, tức là, đặt một cái gì đó. Sau khi bạn xuất nó, bạn muốn kiềm chế điều đó và chỉ sử dụng cat, đọc, để kiểm tra hướng và giá trị.
goldilocks

Câu trả lời:


25

Khi khởi động, GPIO được kéo lên cao hoặc thấp thông qua các điện trở bên trong. Cho dù mức độ kéo cao hay thấp đối với một GPIO cụ thể được nêu chi tiết trên trang 102 của BCM2835 Thiết bị ngoại vi ARM .

Khi nhân Linux được khởi động và nếu cây thiết bị được bật (có khả năng) thì nó sẽ cấu hình lại các GPIO theo cài đặt của cây thiết bị. Các mô-đun được tải từ /etc/modulescũng có thể cập nhật trạng thái GPIO.

Bất kỳ phần mềm nào khác mà bạn đang chạy khi khởi động đều có khả năng cấu hình lại các GPIO sau khi cài đặt cây thiết bị và tải mô-đun.

An toàn nhất là tìm một giải pháp phần cứng nếu bạn có phần cứng có thể được kích hoạt không chính xác khi khởi động hệ thống.



2

Tôi biết nó khá muộn. Để trả lời. Bạn có thể viết một tập lệnh python hoặc tập lệnh bash để đặt mã pin ở mức thấp và lên lịch cho một công việc định kỳ để chạy ở mỗi lần khởi động. Bạn sẽ không cần phải sửa đổi bất kỳ tập tin hệ thống / quan trọng. Ngoài cron

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.