Liệu một Arduino có bị hao mòn do thực hiện lệnh quá nhiều?


12

Xin lỗi nếu đó là một câu hỏi ngớ ngẩn, nhưng tôi không thể tìm thấy câu trả lời.

Tôi đã băn khoăn không biết liệu Arduino (hay nói chung là bất kỳ bộ điều khiển vi mô nào khác) có vui không nếu mã này nhẹ và nó không phải thực hiện quá nhiều thao tác. Liệu một mã có quá nhiều if, quá nhiều vòng lặp và tất cả các phép tính phức tạp sẽ làm hao mòn Arduino sớm hơn một mã chỉ nhấp nháy đèn LED?


Cũng xem các câu hỏi liên kết . . . .
James Waldby - jwpat7

Câu trả lời:


20

Không, mã không "làm hao mòn" MCU. Nói chung, bất kể bạn đang làm gì, mức độ hoạt động tương tự đang được thực hiện. Thậm chí delay()làm rất nhiều việc trong khi nó "không hoạt động".

Có các lệnh để làm cho CPU làm ít hơn - đặt nó ở chế độ IDLE hoặc SLEEP - nhưng chúng được sử dụng để tiết kiệm năng lượng hơn là để giảm "hao mòn" trên MCU.

Tất nhiên, có những thứ cụ thể có thời gian giới hạn và bạn chỉ có thể sử dụng chúng trong một số lần giới hạn - những thứ như viết cho EEPROM và viết vào bộ nhớ Flash - vì vậy bạn không muốn làm những việc đó mọi lúc. Ngoài ra, không, cho dù bạn đang làm gì thì nó cũng không làm hỏng MCU.


2
Nhưng tất cả tuổi bán dẫn, phải không? tiêm chất mang nóng và mất ổn định nhiệt độ thiên vị là những cơ chế tôi nhớ. Tất nhiên nó sẽ mất nhiều năm.
MV.

5
@MV. Có, nhưng những gì bạn chạy trên vi điều khiển không thực sự ảnh hưởng đến nó. Bất cứ điều gì bạn đang làm, bạn đang chạy CPU ở mức (khoảng) cùng mức. Bạn đang sử dụng tất cả (khá nhiều) mọi lúc.
Majenko

1
Mã không ảnh hưởng gián tiếp đến nhiệt tạo ra? Các thành phần nóng có thể mòn nhanh hơn.
Cột

3
Chỉ một lượng rất nhỏ rất nhỏ. Ngay cả khi làm "không có gì", nó vẫn hoạt động chăm chỉ và xử lý.
Majenko

Cảm ơn bạn đã trả lời của bạn. Bây giờ tôi có thể ngả lưng và viết mã phức tạp như tôi muốn và không lo lắng về tuổi thọ của Arduino của tôi! Nhưng nó cũng là trường hợp để liên tục tương tác với các thành phần bên ngoài? Đọc cảm biến, giao tiếp SPI và như vậy?
ahmadx87

6

Nó không thể. Chà, nó có thể dần bị hao mòn nếu bạn chạy nó như 20 năm .... (giống như hầu hết các sản phẩm vật lý khác)? Ít nhất nó không dựa vào độ phức tạp của mã mà có bao nhiêu thao tác ghi được thực hiện trong cùng một phần bộ nhớ. Hơn nữa, khi nó bị hao mòn, nó sẽ bị gạch và nó sẽ không trở thành một mã đơn giản hơn như nhấp nháy đèn LED.

Một Arduino (Uno) có ba phần bộ nhớ. SRAM, FLASH và EEPROM. SRAM giống như một cổng bán dẫn logic. Nó sẽ không bị hao mòn bởi việc lưu trữ các biến. FLASH và EEPROM bao gồm các cổng nổi. Chúng dần hao mòn khi bạn viết dữ liệu mới. Từ bảng dữ liệu của vi điều khiển Ateml , nó ghi:

Bộ nhớ Flash có độ bền ít nhất 10.000 chu kỳ ghi / xóa. (Từ Chương 8.2)

EEPROM có độ bền ít nhất 100.000 chu kỳ ghi / xóa. (Từ Chương 8.4)

Tuy nhiên, bộ nhớ FLASH là không gian để thực thi mã. Thao tác viết không được thực hiện trong khi Arduino đang chạy. Bạn chỉ ghi bộ nhớ FLASH khi bạn tải lên một mã mới. Vì vậy, nó sẽ bị hao mòn khi bạn tải lên mã ít nhất 10.000 lần.

Nếu bạn thực sự muốn, bạn có thể tạo một mã đặc biệt để tự lập trình lại bộ nhớ FLASH thường với mục đích giữ dữ liệu biến khi Arduino bị tắt. Khi bạn viết loại chương trình này, nó sẽ bị hao mòn chậm vì bộ nhớ FLASH không có nhiều độ bền viết. Đó là lý do tại sao bạn sẽ được đề xuất sử dụng EEPROM có tuổi thọ cao hơn nhiều, nếu bạn muốn giữ dữ liệu ngay cả khi tắt Arduino.

Tóm lại, nó sẽ bị hao mòn bằng cách viết lại bộ nhớ FLASH hoặc EEPROM, chứ không phải bằng cách thực thi mã.


6

Dành cho người có sở thích:

Về vấn đề liên quan đến phần mềm giới hạn cuộc sống duy nhất có thể được ghi vào bộ nhớ FLASH nhanh nhất có thể từ bên trong một chương trình. Nhưng rất ít chương trình sử dụng các biến cần tồn tại trong các sự kiện như thay pin.

Về vấn đề liên quan đến phần cứng giới hạn cuộc sống duy nhất là quá tải các đầu ra với tải điện trở thấp (bóng đèn sợi đốt), tải cảm ứng (như trực tiếp lái rơle cơ học) chỉ gọi tên hai. Nhưng câu hỏi chỉ là về phần mềm.


5

... (Hoặc nói chung là bất kỳ bộ điều khiển vi mô nào khác) ...

Các câu trả lời khác là tuyệt vời, nhưng có một ngoại lệ nhỏ.

RAM Ferroelectric (FRAM) là một dạng bộ nhớ kết hợp tính không biến động của flash và EEPROM, khả năng ghi của SRAM và mật độ DRAM.

Tuy nhiên , các hoạt động đọc trên FRAM bị phá hủy đối với dữ liệu được lưu trữ trong FRAM và các hoạt động ghi bị phá hủy đối với chính cấu trúc FRAM (và vì dữ liệu bị hủy bằng cách đọc nó, nên nó phải được ghi lại mỗi lần). Nếu mã của bạn nằm ở FRAM thì việc chạy nó sẽ làm hao mòn MCU kịp thời. Nhưng do FRAM có độ bền ghi trong hàng triệu tỷ, MCU sẽ không thể hoạt động được do FRAM trong vòng đời của thiết bị.

Ví dụ về MCU sử dụng FRAM bao gồm dòng MSP430FRxx của TI .


1
Nói chung nếu có FRAM thì không có bộ nhớ khác. Thậm chí không flash.
Majenko

3

Có lẽ là không ... Chip Atmel có thể ấm hơn theo thời gian (ngay cả việc trì hoãn cũng không ngăn được điều này), tuy nhiên nếu nó có khả năng giải phóng nhiệt thì tôi không thấy vấn đề gì. Nhưng chủ yếu chỉ ép xung có thể gây ra vấn đề thực sự nghiêm trọng, hoặc sử dụng Arduino trong hộp kín hoàn toàn hoặc trong môi trường nóng.

So sánh: nhiều máy tính đang chạy trong nhiều năm mà không tắt, Atmel (chip) theo nghĩa đó không có sự khác biệt, miễn là nhiệt được tạo ra có thể được giải tỏa.

Bạn có thể đọc thêm về một cảm biến nhiệt trong Atmels tại đây: Cảm biến nhiệt độ bên trong


2
Cách Arduino thực hiện sự chậm trễ, bằng cách liên tục kiểm tra nếu đủ thời gian trôi qua. Vì vậy, chạy một chương trình, hoặc có delaysử dụng cùng một sức mạnh xử lý.
Gerben

Tôi sẽ cập nhật (loại bỏ) phần đó ... cảm ơn!
Michel Keijzers

Có một sự khác biệt - hầu hết các máy tính ngày nay đều có hàng tấn các tính năng tiết kiệm năng lượng; rất nhiều thứ tắt khi không cần thiết, và điều này tự động xảy ra khá nhiều. Arduino cũng có cách để giảm việc sử dụng năng lượng, nhưng bạn cần sử dụng chúng một cách rõ ràng. Nếu bạn cần một cái gì đó được giảm sức mạnh hầu hết thời gian, hãy tìm hiểu.sparkfun.com/tutorials/reducing-arduino-power-conscharge là một cách tuyệt vời để bắt đầu. Cụ thể, giấc ngủ công suất thấp giảm mức tiêu thụ năng lượng khoảng một nghìn lần - không giống như delay, nó chỉ quay CPU. Điều này có chi phí của nó, tất nhiên :)
Luaan
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.