두 개의 서로 다른 ADC에서 두 개의 측정 값과 두 개의 서로 다른 PWM 신호가 필요합니다. 측정 된 값은 freq
및 duty
변수에 저장됩니다. 이름에서 알 수 있듯이, 하나의 PWM 신호의 주파수는 freq
의 값에 따라 달라지며, 다른 하나는 duty
에 따라 듀티 사이클을 변경해야합니다. 문제는 첫 번째 신호가 올바르게 작동하지만 두 번째 신호는 작동하지 않는다는 것입니다.왜 PWM 신호가 나오지 않습니까?
저는 ATmega328p를 사용하고 있습니다. 나는 변수 duty
대신에 상수 값을 사용하려했지만 똑같은 일이 발생했다. PWM 신호 대신에, 출력 핀 (OC0B
)은 계속해서 하이, 즉 5V DC로 설정된다. 이 기능은 정말 간단하다 : 나는 트리플 체크 TCCR0
레지스터의 값을하지만 모든 것이 올바른 것 같다했습니다
//Timer0 configuration
TCCR0A = 0b00100011;
TCCR0B = 0b00001001; //Fast PWM, no prescaler, non-inverted, out OC0B
OCR0B = duty;
. 이 문제의 원인은 무엇입니까?
[웹 페이지]에 대한 광범위한 토론이 있습니다 (http://www.avrfreaks.net/forum/solved-atmega328p-output-pwm-oc0a-and-oc0b). –
아마도 모드 7 대신에 모드 3을 사용하기를 원할 것입니다. 그렇지 않으면'OCR0A'를 설정하는 것을 잊었습니다. –
@EdgarBonet 내 무지 죄송하지만, 무슨 뜻이야? "모드 3"또는 7로 무엇을 의미하는지 이해하지 못합니다. 또한 B 출력을 사용하려면 왜 'OCR0A'를 설정해야합니까? – Tendero