Я пытаюсь отправить сигнал ШИМ на OC0A (PB2) с ATTiny2313, но по какой-то причине на порте B2 ничего не происходит.Мой код выглядит следующим образом:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
/**
* Initialize fast pwm on PB2 (OC0A)
*/
void pwmInit() {
// Setup the output for PWM
DDRB |= (1 << DDB2);
// Set Timer/Counter0 prescaler to clock/1.
// At 8MHz this is 8MHz.
TCCR0B |= (1 << CS00);
// Set to 'Fast PWM' mode
TCCR0A |= (1 << WGM01) | (1 << WGM00);
// Clear OC0A output on compare match, upwards counting.
TCCR0A |= (1 << COM0A1);
// If the value '128' is reached, the PWM signal will set to LOW
OCR0A=128; // 128 = 50% duty cycle
}
void setup() {
pwmInit();
DDRB |= (1 << DDB0); // Setup the Output fon port B0
}
int main(void) {
setup();
while(1) {
PORTB |= (1<<PB0);
_delay_ms(500);
PORTB &= ~(1<<PB0);
_delay_ms(500);
}
return 0;
}
Светодиод на PB0 мигает, но на осциллографе не отображается сигнал ШИМ (на PB2), а светодиод на PB2 по-прежнему выключен.Я неправильно настроил MCU?
Аналогичный код на ATTiny13A все еще работает.