마이크로 컨트롤러-출력 상태가 일정합니까 아니면 다중입니까?


14

PWM은 분명히 컴퓨팅 리소스를 요구하지만 (따라서 다른 프로세스와 동시에 수행 할 수는 없지만) 핀을 출력 5V 또는 0V로 설정하면이 상태가 일정하게 유지되거나 마이크로 컨트롤러가 다른 프로세스에서 작동함에 따라 반복적으로 "새로 고침"됩니다 ?

이것은 텍스트로 설명하기가 어렵 기 때문에 내 질문과 유사하다고 생각했습니다. 손에 유리가 있고 테이블 위에 놓으라고 지시 받았다고 상상해보십시오. 그런 다음 의자에 앉으라는 지시를 받았습니다.

테이블 위의 유리는 상태입니다. 유리를 탁자 위에 놓아 두었습니까, 아니면 유리를 탁자 위로 올려 놓고 앉아서 매우 빠르게 반복해서 유리가 탁자에서 제거 된 것을 깨닫지 못합니까?


또는 더 간단하게, 상태 변경을 명시 적으로 프로그래밍하지 않는 한 마이크로 컨트롤러가 핀 상태에 대해 "잊어 버렸습니까?"

잘만되면 나는 그것을 혼란스럽게했다.


4
+1 첫 번째 설명이 정확하지 않고 하드웨어 PWM에 대한 아이디어는 흥미로운 질문이지만 프로세서가 항상 관여 할 필요는 없습니다. 그러나 그렇게 놔두면 누군가 어떻게 작동하는지 잘 설명 할 수있을 것입니다.
PeterJ

PWM이 프로세서가 HIGH / LOW 사이클 시간을 변경하는 것이라고 생각했습니다. 이런 식으로, 프로세서가 적어도 상태가 변경되는 시간과 직접 관련이있는 것 같습니다.
sherrellbc

1
듀티 사이클을 10 %에서 20 %로 변경하려면 CPU가 관여해야하지만 레지스터를 변경하려면 몇 사이클 동안 만 사용해야합니다. 하드웨어 PWM의 경우 하드웨어 PWM 주파수가 1MHz 인 경우에도 20 %로 변경되면 더 이상 프로세서에 영향을 미치지 않습니다.
PeterJ

마이크로 컨트롤러가 하위 레벨에서 작동하는 방법에 대한 문서로 연결되는 링크가 있습니까? 레지스터에 대한 귀하의 언급을 이해하지 못하므로 이러한 답변을 충분히 이해할 수는 없습니다.
sherrellbc

1
별로 혼란스럽지 않습니다. 더 열심히 노력하십시오!
radagast

답변:


16

질문을 해석하는 방식은 PWM과 아무 관련이 없습니다.베이스에서 벗어나면 죄송하지만 예제로 사용하는 것처럼 들립니다.

I / O 기능이있는 거의 모든 유형의 마이크로 컨트롤러 및 장치는 래치 / FF를 사용하여 출력 회로를 구동합니다. 이것이 의미하는 것은 상태를 설정할 때 해당 상태를 유지한다는 것입니다. 상태를 유지하기 위해 출력 통계가 지속적으로 "새로 고침"되어야하는 DRAM과는 다릅니다.

유리 예제를 통해 유리를 반복해서 테이블 위에 올려 놓는 하드웨어를 본 적이 없습니다. 유리를 테이블 위에 올려 놓고 상태 변경이 요청 될 때까지 유리를 그대로 둡니다.

PWM으로 돌아 가기 (실제로 PWM에 대해 묻는 경우). 비트 뱅이나 마이크로 컨트롤러에 다른 게시물이 설명한대로 전용 하드웨어가 있는지 여부에 관계없이 I / O 블록은 코드 또는 PWM 주변 장치를 실행하여 상태 변경이 요청 된 경우에만 액세스 및 수정됩니다.


비록 내가 이해하지 못한다는 것을 깨닫지 못하는 마이크로 컨트롤러가 많이있는 것처럼 보이지만 이것은 정확히 내 질문입니다.
sherrellbc

3
코를 데이터 시트에 보관하고 실험하고 질문하십시오. 당신은 그것을 끊을 것입니다.
Kris Bahnsen

11

마이크로 컨트롤러는 출력을 새로 고칠 필요가 없습니다. 일단 설정되면 전원이 제거 될 때까지 상태를 무기한으로 유지합니다. 구형 프로세서에서는 프로세서의 상태를 유지하기 위해 클럭이 필요했지만 오늘날의 프로세서는 완전히 정적입니다. 즉, 시계가 실제로 중지되고 모든 것이 현재 상태로 유지됩니다. 이는 모든 레지스터 (I / O 포함)가 플립 플롭을 사용하여 만들어지기 때문입니다.


그리고 우리는 진보하고 있습니다! 감사합니다. 감사합니다!
sherrellbc

10

대부분의 최신 마이크로 컨트롤러는 PWM을 관리하는 전용 하드웨어 PWM 주변 장치를 가지고 있습니다.

프로세서 코어는 주변 장치에 "다른 방식으로 말할 때까지이 핀을 10kHz 및 50 % 듀티 사이클로 전환합니다"라고 알려줍니다. 그런 다음 핵심은 다른 일을 자유롭게 할 수 있습니다. 인터럽트를 설정할 수 있습니다. 즉, 관심있는 일이 발생하면 주변 장치에 알리도록 요청하십시오.
핵심은 "보스"로, 주변 장치는 전문 작업자로 생각할 수 있습니다. 코어는 전체 프로그램을 관리하고 (각 명령을 읽고 실행합니다) 주변 장치를 "요청"하여 다양한 작업을 수행하고 완료되면 알려줍니다.

당신의 비유에서, 다른 사람이 유리를 잡고있는 것처럼, 당신은 당신이 의자에 앉을 수있는 동안 테이블 위에 놓도록 지시합니다.

마이크로에 전용 주변 장치가없는 경우 "수동으로"(즉, 자체적으로) 수행하고 핀 상태와 토글 사이의 타이밍을 추적해야합니다. 이것은 단순한 주변 장치로 쉽게 처리 할 수있는 꽤 정신적 인 것들에 전념하는 많은 사이클을 의미합니다.

다음은 널리 사용되는 8 비트 마이크로 컨트롤러 인 PIC16F690 의 레이아웃 다이어그램입니다 . 아래쪽에 배열 된 주변 장치가 있습니다.

여기에 이미지 설명을 입력하십시오


그러한 주변 구성 요소가 존재한다는 것을 알지 못했습니다. 이러한 구성 요소가 작은 프로세서입니까? 그러한 것들이 존재한다는 것은 큰 의미가 있습니다.
sherrellbc

주변 장치는 특정 작업을 수행하도록 특별히 설계된 전용 하드웨어 블록과 비슷합니다. 예를 들어 일반적인 마이크로는 ADC, PWM, 타이머, UART, SPI 등과 같은 주변 장치를 가지고 있습니다.
Oli Glaser

확실히 편향된 경우 이러한 시스템에 대한 나의 이해는 있지만이 주제에 대해 더 깊이 파고들 것입니다. 나는 uC가 모든 처리를 할 것이라는 인상을 받았다. 주변 장치에 제공된 "지침"을 해석해야합니다. 나는 이것이 내가 완전히 이해하지 못하는 곳이라고 생각합니다.
sherrellbc

2
나는 전형적인 마이크로의 다이어그램을 추가했다. 읽기 시작하기에 좋은 곳은 내가 연결 한 데이터 시트이다.
Oli Glaser

@sherrellbc, 프로세서와 마이크로 프로세서가 다릅니다. µC에서 RAM, ROM, ALU, Serial Port 등이 모두 동일한 칩에 통합되어 있음을 알 수 있습니다. PC에서는 프로세서가 이러한 회로에 외부 적으로 연결되어 있음을 알고 있습니다.
chwi

5

정확히 유효하지 않은 몇 가지 가정을하고 있습니다. 또한, 당신은 질문을 가능한 한 혼란스럽게 만들었습니다. 진심으로.

PWM은 다른 프로세스와 동시에 수행 될 수 있습니다. 소프트웨어에서 수행 한 경우 타이머 인터럽트를 사용하여 GPIO 핀에서 PWM 신호를 생성합니다. 다른 인터럽트가 실행될 수 있으며 주요 프로세스는 관련이없는 작업을 수행하는 것입니다. 또한 많은 MCU가 타이머 주변 장치에서 직접 PWM을 수행하여 MCU가 다른 작업을 수행 할 수 있도록합니다.

I / O 핀은 멀티플렉싱됩니다. 그러나 다중화 방법을 제어하므로 실제로 문제가되지 않습니다.


PWM 타이머 인터럽트에 대한 귀하의 의견을 이해합니다. 이런 식으로 프로세서는 출력 상태를 변경할 때만 관련됩니다. I / O 핀이 다중화되어 있다고 말하지만 컨트롤러에 핀 HIGH를 출력하도록 프로그래밍 한 다음 관련이없는 다른 계산을 수행하면 핀이 순간적으로 LOW로 설정되어 프로세스가 수행됩니까?
sherrellbc

@sherrellbc 핀의 다중화 방식을 제어 할 수 있습니다. 일반적으로 부팅시 구성하고 그 후에는 변경하지 마십시오. 따라서 특별히 명시하지 않는 한 "순간적으로 낮지"않을 것입니다.

PWM 예제를 추가하여 혼란스러워하는 독자에게 사과합니다. 이 질문의 목적은 지시 된 I / O 핀이 HIGH로 설정된 명령이 컨트롤러에 의해 멀티플렉싱되는지 여부를 결정하는 것입니다 (즉, 핀 상태를 지속적으로 "새로 고침"하고 한 번에 하나만 수행해야하기 때문). 그러나 이제는 이해하지 못하는 마이크로 컨트롤러가 많이 있음을 알았습니다 (주변 장치). 따라서 대답이 '아니오'인 경우 출력 핀이 상태로 설정되고 변경 될 때까지 해당 상태로 유지됩니다.
sherrellbc

1

마이크로 컨트롤러의 대부분의 I / O 핀은 다기능이지만 멀티플렉싱이라고는하지 않습니다.

예를 들어 AVR의 여러 핀을 디지털 입력, 디지털 출력 또는 아날로그 입력으로 사용할 수 있습니다. 일반적으로 프로그램 초기화의 일부로 원하는 기능을 선택하고 나중에 변경하지 마십시오 (같은 신호를보기 위해 아날로그 입력을 디지털 입력으로 변경해야 할 이유가있을 수 있습니다).

디지털 출력의 경우 핀이 출력으로 설정되면 프로세서가 마지막으로 쓴 값을 유지하므로 주기적으로 "새로 고침"할 필요가 없습니다.


프로세서가 값을 설정하고 해당 값을 제거하고 다른 명령을 수행 한 다음 반복하여 원래 값을 설정하면 멀티플렉싱됩니다. 이것이 내 질문의 본질입니다. 그러나 위의 답변에서 이러한 기능을 수행하는 다양한 주변 장치가 있으며 프로세서는 별도의 지시가있을 때까지 아무런 관련이 없습니다. 나는 이것에 대해 전혀 몰랐다. 배울 것이 많다. 답변 해주셔서 감사합니다.
sherrellbc

1

마이크로 컨트롤러 하드웨어 PWM 주변 장치의 간단한 예에서, 8 비트 카운터는 8 비트 디지털 비교기에 연결될 수 있습니다. 마이크로 컨트롤러는 비교기에 숫자를로드하고 시스템 클럭 또는 프리 스케일 분할 버전으로 카운터를 증가시킵니다. 그런 다음 카운터는 0에서 255까지 세고 반복적으로 0으로 돌아 가면서 자유 실행됩니다. 비교기는 카운터 값이 비교기 값보다 큰지 또는 작은지를 나타내는 출력을 가질 것이다. 이것은 PWM 출력이됩니다. PWM의주기는 카운터가 카운트 사이클을 완료하는 데 걸리는 시간이며 듀티 사이클은 전체 카운트의 일부가 비교기 값으로 표시되는 시간입니다. 마이크로 컨트롤러 코드는 처음에 하드웨어를 설정하고 pwm 변경이 필요할 때 비교기 데이터를 변경하는 것 외에는 아무 것도 할 수 없습니다. PWM은 프로세서의주의없이 연속적인 PWM 펄스 스트림을 출력합니다.

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