마이크로 컨트롤러를 임의의 낮은 클럭 주파수에서 실행할 수 있습니까?


103

예를 들어 ATTiny13A의 데이터 시트에는 최소 주파수 0MHz가 나열되어 있습니다. 이것은 어떤 영향도없이 임의의 저주파에서 클럭을 실행할 수 있다는 것을 의미합니까? 낮은 클럭 속도에서 더 낮은 전류를 소비한다고 가정합니까? 0 MHz는 클럭을 완전히 멈출 수 있다는 것을 의미하며, 전원이 계속 공급되는 한 그 상태를 무기한으로 기억합니까?


34
추가하고 싶은데 이것은 훌륭한 질문입니다. 대부분의 선임 EE는 실제로 데이터 시트를 읽고 생각하는 데 시간이 걸리지 않습니다. 이는 데이터 시트를 보완하거나 모욕하는 것입니다. 두 가지를 모두 암시하고 싶습니다.
Kortuk

(다양한 절전 옵션을 통해) 특별히 지시하지 않는 한 내부 RC 발진기가 종료되었는지 확실하지 않습니다. 그것이 무엇을 사용하는지 확실하지 않지만 적어도 EEPROM 및 아마도 ADC에 사용됩니다.
jippie

1
@jippie 무슨 내부 RC 말입니까? 예를 들어 ATMegaX는 시스템 클록 (일반적으로 8Mhz, 옵션 div 8 프리스케일러 포함)을위한 내부 RC가 있으며 워치 독 발진기가 있습니다. 시스템 시계가 퓨즈로 선택되어 있으며 외부 시계를 사용할 때 꺼져있을 수 있습니다. 당신이 말한 다른 것들은 절전 모드에 의해 비활성화 될 수 있지만 시스템 시계에 의해 멈추게 될 것입니다.
Diego C Nascimento

답변:


73

예. 데이터 시트에 "완전히 정적 인 작동"이 표시되면 0Hz까지 어떤 속도로든 클럭 할 수 있습니다. "동적"칩은 특정 속도로 클럭을 가져야하거나 상태를 잃습니다.


1
이것을 허용하는 마이크로의 예가 있습니까?
MrEvil 2009

4
온칩 플래시가 포함 된 마이크로 컨트롤러는 플래시에 기록 할 때 최소 (및 최대) 플래시 클럭 속도를 지정할 수 있습니다. 그러나 플래시에서 읽을 때는 적용되지 않습니다.
Steve Melnikoff 2009

8
MrEvil, Atmel AVR ATtiny 시리즈는 대부분의 Atmel AVR 칩이라고 생각하기 때문에 완전히 정적 인 것입니다. 그리고 저는 대부분의 모든 Microchip의 PIC 마이크로 컨트롤러를 생각합니다.
todbot

7
실제로, ATTiny13A의 ADC는 샘플 앤 홀드 커패시터의 붕괴로 인해 저주파에서 작동하지 않는다고 생각합니까? "기본적으로 연속 근사 회로에는 최대 분해능을 얻기 위해 50kHz ~ 200kHz 사이의 입력 클록 주파수가 필요합니다. ... ADC 모듈에는 프리스케일러가 포함되어 있으며 100kHz 이상의 모든 CPU 주파수에서 허용 가능한 ADC 클록 주파수를 생성합니다."
endolith

8
endolith-나는 ADC가 일반적으로 저주파에서 작동하지 않는다는 것에 동의한다. 내가 알 수있는 한, 실제로 모든 현대식 마이크로 컨트롤러의 다른 모든 것들은 "무한한 일시 정지"인 "0 Hz"까지 계속 잘 작동합니다. 특히, 많은 마이크로 컨트롤러에는 "저전력 절전"모드가있어 일반적으로 버튼을 누르는 사람이 무언가를 깨울 때까지 모든 시계를 멈출 수 있습니다. en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary 2016 년

23

마지막 질문에 이전에 답변하지 않았기 때문에 다른 답변을 게시하고 있습니다.

Todbot이 완전히 정확합니다. 또한 낮은 속도에서 더 낮은 전력을 소비합니다. 예를 들어, 다른 프로세서에서 클럭을 공급하는 경우 최대 속도보다 빠르지 않으면 언제든지 공급을 중단 한 다음 나중에 클럭을 시작할 수 있습니다.

필자는 32768Hz 오실레이터와 1MHz 오실레이터 사이에서 크기 변화가 발생했습니다. 나는 속도가 필요없는 응용 프로그램을 가지고 있었고, 나를 위해 기본적인 데이터 처리를하는 다른 작은 사람이 필요했습니다.

도움이 되었기를 바랍니다.


9
저는 항상 푸시 버튼으로 마이크로 컨트롤러의 클럭 라인을 실행하고 싶었습니다. 인간이 시계가되게하십시오. :) 진지하게, 이러한 정적 디자인에 대한 정말 좋은 점은 소비 전력이 클럭 속도와 선형이라는 것입니다. 클럭 속도를 늦추고 전력을 덜 사용하십시오. 이것은 정말 편리 할 수 ​​있습니다.
todbot 2009

5
그렇습니다. 그러나 전력 소비는 클록이 없어도 여전히 전력을 소비하지만, 특히 출력이 구동되는 경우에도 오프셋이있는 선형 기능입니다. 우리는 직장에서 새로운 인턴을 얻었습니다. 푸시 버튼을 사용하고 어떤 일이 일어나는지 볼 것을 제안합니다.
Kortuk

13
@todbot 좋은 생각입니다. :-) 그러나 푸시 버튼을 디 바운스해야합니다.
starblue

4
Jargon 의미에서와 같이 "grind crank"를 사용해보십시오 ( jargon.net/jargonfile/g/grindcrank.html ) :-)) (예, 수년 전에 Turbo Pascal을 사용할 때 코드를 통해 단계별로 빌드했습니다. 학교에서 :-)
Axeman

@todbot 거친 추상화를 받아 들일 수 있다면 실제로 가져 오거나 어렵지는 않습니다. 이러한 장치를 사용하여 컴퓨터 작동 방식을 가르치는 사람들의 몇 가지 예가 있습니다. Myke Predko는 정말 좋은 책을 가지고 있으며, 심지어 PCB와 함께 제공됩니다 (컴퓨터 프로젝트는 아니지만) : amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/…
Lou

17

대부분의 최신 마이크로 컨트롤러 디자인은 클록 입력의 모든 패턴에서 작동합니다. 단, 높은 펄스가 특정 최소 길이 미만이 아니고, 낮은 펄스가 특정 최소 길이 미만이 아니며, 저고 / 저 또는 고 / 저가 없음 펄스 쌍이 특정 길이 미만입니다. 본질적으로 발생하는 일은 칩이 특정 클럭 에지와 관련된 모든 작업을 수행 한 후 칩이 다음 클럭 에지를 기다리는 것 외에는 아무 것도하지 않는 상태입니다. 다음 클럭 에지가 10 일 동안 도착하지 않으면 (칩에 외부 감시 장치가없는 경우) 칩은 칩이 준비된 순간에 에지가 도착한 것과 동일한 상태가됩니다.

일반적으로 마이크로 컨트롤러에서 클록을 일시 정지하면 전류 소비가 실질적으로 줄어들지 만 "슬립"기능을 사용하는 것만 큼은 아닙니다. "실행"모드에서 대부분의 마이크로 컨트롤러의 전류 소비는 일정한 대기 전류와 초당 사이클 당 일정량의 전류 (사이클 당 충전으로 '보다 자연스럽게'표현 될 수 있음)로 추정 할 수 있습니다. 예를 들어, 칩의 대기 전류는 10uA이고 전류는 0.1mA / MHz (100pC / 사이클)입니다. 이러한 칩을 10MHz에서 실행하면 1.01mA의 전류가 생성됩니다. 1MHz에서 실행하면 0.11mA가 생성됩니다. 100KHz에서 실행하면 0.02mA가 생성됩니다. 1Hz woudl에서 실행하면 0.0100001mA가 생성됩니다. 한편, 칩은 1uA의 슬립 전류를 제공 할 수있다. 일반적으로, 슬립 모드로 들어가면 칩이 슬립 상태 일 때 유용한 기능을 수행하지 않는 칩 영역의 전원이 완전히 꺼 지므로 해당 영역에서 발생할 수있는 누설 전류를 피할 수 있습니다. 경우에 따라 레지스터 파일과 같은 영역의 전압을 레지스터 파일이 내용을 보유 할 수있는 수준으로 낮추지 만 매우 빠르게 액세스 할 수는 없습니다 (아무 액세스하지 않기 때문에 액세스 속도는 중요하지 않습니다) .

일부 구형 마이크로 프로세서, 마이크로 컨트롤러 및 기타 장치는 최대 클록 높이 및 / 또는 클록 로우 시간을가집니다. 이러한 프로세서는 회로를 절약하기 위해 동적 로직을 사용했습니다. 동적 로직의 예로, 시프트 레지스터를 고려하십시오. 일반적인 정적 레지스터 비트는 값을 유지하기 위해 2- 트랜지스터 회로가 필요하지만 동적 레지스터 비트는 판독 트랜지스터의 게이트에서 값을 유지합니다. 2 상 클록 동적 시프트 레지스터는 비트 당 4 개의 NFET 및 2 개의 저항을 사용하여 NMOS에서 실현 될 수있다. 정적 시프트 레지스터에는 비트 당 8 개의 NFET와 4 개의 저항이 필요합니다. 오늘날 동적 로직 접근 방식은 그리 일반적이지 않습니다. 1970 년대에, 게이트 커패시턴스는 상당했고 그것을 제거 할 수 없었습니다. 따라서 그것을 이용하지 않는 특별한 이유는 없었다. 오늘, 게이트 커패시턴스는 일반적으로 훨씬 낮으며, 칩 제조업체는이를 적극적으로 줄이기 위해 노력하고 있습니다. 동적 로직을 안정적으로 작동 시키려면 종종 게이트 커패시턴스를 높이기 위해 의도적으로 작동해야합니다. 대부분의 경우, 커패시턴스를 증가시키는 데 필요한 여분의 칩 영역은 커패시턴스를 불필요하게 만들기 위해 더 많은 트랜지스터를 추가하는 데 효과적으로 사용될 수 있습니다.


NMOS와 IIRC에 대해 언급했지만 동적 로직의 인기와 아직 사용 가능하지 않은 CMOS (Complementary MOS) 사이에는 연결이 있습니다.
jpc

@jpc : 저는 다양한 NMOS 칩의 회로도를 검토했습니다. 실제로 천재의 실제 작업 인 Atari 2600 TIA를 포함하여 매우 자세하게는 30 년이 지난 후에도 사람들은 여전히 ​​새로운 것을 찾고 있습니다. 디자인 편의성 측면에서 NMOS 대 CMOS의 한 가지 장점은 '슈트 스루'(높은 쪽과 낮은 쪽 드라이브의 우발적 인 동시 활성화)가 중요하지 않다고 생각하지만 이유에 대해 약간의 호기심을 표명합니다. CMOS는 입력의 크로스 오버 포인트가 둘 다 활성화하지 않고 하이 사이드 드라이버와 로우 사이드 드라이버를 끈 상태로 유지하기에 충분한 낮은 전압에서 실행되지 않습니다.
supercat

@jpc : NMOS에서는 입력이 충분히 "강한"경우 2 개의 트랜지스터와 2 개의 저항으로 XOR 게이트를 구현할 수 있습니다. 두 입력에 모두 인버터를 추가해야하더라도 4- 트랜지스터 4- 레지스터 xor 게이트는 다른 많은 방법보다 낫습니다. 1978 년경 BJT를 사용하여 유사한 회로를 설계했지만 사용 된 접근 방식을 본 적이 없습니다 (설계 개념은 MOSFETS에서 더 잘 작동하지만 그에 대해서는 아무것도 몰랐습니다).
supercat

2
+1-여기서 언급 한 진짜 보석 인 것 같습니다. 클럭 속도가 낮을수록 전력을 절약 할 수 있지만 절전을 최적화하도록 특별히 설계된 절전 모드 만큼은 아닙니다. 내 직감은 실제로 저주파에서 지속적으로 실행하는 것보다 수면 모드를 신중하게 사용하여 빠른 발진기를 실행하여 더 많은 전력을 절약 할 수 있다고 말합니다.
Joel B

@JoelB : 많은 요소에 따라 다릅니다. 많은 프로세서에서 빠른 클럭을 켜고 실제로 사용할 수있게 될 때까지 지연이 있습니다. 이 기간 동안 전력을 낭비하게됩니다. 예를 들어 100x / 초로 깨어나야하는 경우 지속적으로 시작하고 중지하는 것보다 천천히 계속 실행하는 것이 좋습니다. 반면에 빠른 클럭을 시작 및 중지하려는 경우 추가 에너지를 낭비하지 않고 실행 가능한 시간을 최소화하는 것이 좋습니다. 예를 들어 ...
supercat

12

예, 시계를 완전히 멈추고 나중에 아무런 결과없이 시계를 다시 시작할 수 있습니다. 푸시 버튼으로 시계를 교체하고 문자 그대로 단계별로 프로그램을 진행할 수도 있습니다 (주파수 : 약 0.1Hz).

전력은 주파수와 거의 선형입니다. 10MHz에서는 마이크로 컨트롤러가 1MHz보다 10 배 많은 전력을 소비합니다. 그렇다고 0Hz에서 소비가 완전히 0임을 의미하지는 않습니다. 정적 소산은 항상 있지만 일반적으로 1uA 이하로 매우 낮습니다.

PS : ADC는 최소 작동 주파수를 가지고 있습니다. 주파수가 너무 낮 으면 전압이 측정되는 커패시터가 너무 많이 방전되어 측정이 잘못됩니다.


누름 단추? 수신 거부는 어떻습니까?
피터 Mortensen

1
탈퇴가 필요합니다.
Vovanium

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.