너무 많은 명령 실행으로 Arduino가 마모됩니까?


12

어리석은 질문이라면 실례지만 답변을 찾지 못했습니다.

코드가 가볍고 너무 많은 작업을 수행 할 필요가 없다면 Arduino (또는 일반적으로 다른 마이크로 컨트롤러)가 행복해 질지 궁금합니다. 너무 많은 if, 너무 많은 루프 및 모든 종류의 복잡한 계산이있는 코드는 단지 LED를 깜박이는 코드보다 Arduino를 빨리 소모합니까?


관련 질문도 참조하십시오 . . . .
James Waldby-jwpat7 2016 년

답변:


20

아니요, 코드는 MCU를 "마모"하지 않습니다. 일반적으로 당신이하는 일에 관계없이 거의 같은 수준의 활동이 수행되고 있습니다. delay()"유휴"상태 일 때도 많은 작업을 수행합니다.

CPU가 IDLE 또는 SLEEP 모드에 배치하는 작업을 줄 이도록하는 명령이 있지만 MCU의 "마모"를 줄이기보다는 전력을 절약하는 데 사용됩니다.

물론 수명이 제한된 특정 사항이 있으며 EEPROM에 쓰는 것과 플래시 메모리에 쓰는 것과 같이 제한된 횟수 만 사용할 수 있으므로 항상 그런 일을하고 싶지는 않습니다. 그 외에는, 당신이 무엇을하든 MCU가 마모되지 않습니다.


2
그러나 모든 반도체 시대는 그렇지 않습니까? 핫 캐리어 주입과 바이어스 온도 불안정성은 내가 기억하는 메커니즘입니다. 물론 몇 년이 걸릴 것입니다.
MV.

5
@MV. 예. 그러나 마이크로 컨트롤러에서 실행하는 것은 실제로 영향을 미치지 않습니다. 당신이 무엇을 하든지 당신은 거의 같은 수준에서 CPU를 실행하고 있습니다. 당신은 항상 모든 것을 사용하고 있습니다.
Majenko

1
코드가 생성 된 열에 간접적으로 영향을 미치지 않습니까? 뜨거운 부품은 빨리 마모 될 수 있습니다.
마스트

3
아주 작은 양입니다. '아무것도'하지 않더라도 열심히 노력하고 처리 중입니다.
Majenko

당신의 답변에 감사드립니다. 이제 원하는만큼 복잡하게 코드를 작성하고 작성할 수 있으며 Arduino의 수명에 대해 걱정하지 않아도됩니다! 그러나 외부 구성 요소와 지속적으로 상호 작용하는 경우도 있습니까? 판독 센서, SPI 통신 등?
ahmadx87

6

그렇지 않습니다. 글쎄, 20 년 정도 달리면 천천히 마모 될 수 있습니다. (대부분의 다른 물리적 제품처럼)? 적어도 코드 복잡성에 의존하는 것이 아니라 동일한 메모리 섹션에서 수행 된 쓰기 작업 수입니다. 또한 마모되면 벽돌이 깨져서 LED 깜박임과 같은 간단한 코드가되지 않습니다.

Arduino (Uno)에는 3 개의 메모리 부분이 있습니다. SRAM, FLASH 및 EEPROM. SRAM은 논리적 트랜지스터 게이트와 비슷합니다. 변수를 저장해도 마모되지 않습니다. FLASH 및 EEPROM은 플로팅 게이트로 구성됩니다. 새 데이터를 쓸 때 천천히 마모됩니다. Ateml microcontroller의 데이터 시트에서 다음 과 같이 말합니다.

플래시 메모리의 내구성은 10,000 회 이상의 쓰기 / 삭제주기입니다. (8 장에서)

EEPROM의 내구성은 최소 100,000 쓰기 / 삭제주기입니다. (8 장부터)

그러나 플래시 메모리는 코드 실행을위한 공간입니다. Arduino가 실행 중일 때는 쓰기 작업이 수행되지 않습니다. 새 코드를 업로드 할 때만 플래시 메모리를 작성하십시오. 따라서 코드를 10,000 번 이상 업로드하면 마모됩니다.

정말로 원한다면 Arduino가 꺼져있을 때 가변 데이터를 유지하기 위해 FLASH 메모리를 자체 재 프로그래밍하는 특수 코드를 만들 수 있습니다. 이러한 종류의 프로그램을 작성할 때는 FLASH 메모리에 쓰기 내구성이 많지 않기 때문에 느리게 마모됩니다. 그렇기 때문에 Arduino가 꺼져 있어도 데이터를 유지하려면 수명이 훨씬 더 긴 EEPROM을 사용하는 것이 좋습니다.

요약하면 코드 실행이 아닌 FLASH 또는 EEPROM 메모리를 다시 작성하여 마모됩니다.


6

애호가를 위해 :

수명 제한 소프트웨어와 관련된 유일한 문제는 프로그램 내부에서 가능한 한 빨리 플래시 메모리에 쓰는 것입니다. 그러나 배터리 교환과 같은 이벤트에서 살아남 아야하는 변수를 사용하는 프로그램은 거의 없습니다.

수명 제한 하드웨어와 관련된 유일한 문제는 저 저항 부하 (백열 전구), 유도 성 부하 (기계식 계전기 직접 구동 등)로 출력을 과부하로로드하는 것입니다. 그러나 문제는 소프트웨어에 관한 것입니다.


5

... (또는 일반적으로 다른 마이크로 컨트롤러) ...

다른 답변은 훌륭하지만 한 가지 작은 예외가 있습니다.

FRAM (Ferroelectric RAM) 은 플래시와 EEPROM의 비 휘발성, SRAM의 쓰기 가능성 및 DRAM의 밀도를 결합한 메모리 형태입니다.

그러나 FRAM의 읽기 작업은 FRAM에 저장된 데이터를 파괴하고 쓰기 작업은 FRAM 구성 자체를 파괴합니다 (데이터를 읽음으로써 데이터가 파괴되므로 매번 다시 기록해야 함). 코드가 FRAM에 있으면 코드를 실행하면 MCU가 제 시간에 마모됩니다. 그러나 FRAM의 쓰기 내구성이 수백만 억에 달하기 때문에 장치 수명 기간 동안 FRAM으로 인해 MCU가 작동하지 않을 가능성이 낮습니다.

FRAM을 사용하는 MCU의 예로는 TI의 MSP430FRxx 라인이 있습니다.


1
일반적으로 FRAM이 있으면 다른 메모리가 없습니다. 심지어 플래시도 아닙니다.
Majenko

3

아마도 ... ... Atmel 칩은 시간이 지남에 따라 더워질 수 있지만 (지연이 이것을 막지 못하더라도) 열을 방출 할 가능성이 있다면 문제가 없습니다. 그러나 대부분 오버 클러킹만으로도 심각한 문제가 발생하거나 완전히 닫힌 상자 또는 더운 환경에서 Arduino를 사용할 수 있습니다.

이에 비해 많은 컴퓨터가 전원을 끄지 않고 몇 년 동안 작동하고 있기 때문에 Atmel (칩)은 발열이 완화 될 수있는 한 차이가 없습니다.

Atmels의 열 센서에 대한 자세한 내용은 다음을 참조하십시오. 내부 온도 센서


2
Arduino가 지연을 구현하는 방법은 충분한 시간이 지 났는지 지속적으로 확인하는 것입니다. 따라서 프로그램을 실행하거나 delay동일한 양의 처리 능력을 사용합니다.
Gerben

나는 그 부분을 업데이트 (제거) 할 것이다 ... 감사합니다!
Michel Keijzers

차이점이 있습니다. 오늘날 대부분의 컴퓨터에는 수많은 절전 기능이 있습니다. 불필요 할 때 많은 것들이 꺼지고, 이것은 거의 자동적으로 일어난다. Arduino에는 전력 소비량을 줄일 수있는 방법이 있지만 명시 적으로 사용해야합니다. 대부분의 시간에 전원이 꺼진 무언가가 필요한 경우 learn.sparkfun.com/tutorials/reducing-arduino-power-consumption 을 시작하는 것이 좋습니다. 특히, 저전력 절전 모드 delay는 CPU를 회전시키는 것과 달리 전력 소비를 약 1,000 배 줄 입니다. 이것은 물론 비용이 있습니다 :)
Luaan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.