Я использую этот код Arduino для генерации импульса 5 В, 200 кГц с шириной импульса 50%.
void setup() {
// put your setup code here, to run once:
pinMode(pwmpin, OUTPUT);
pinMode(FBo, INPUT);
pinMode(FBi, INPUT);
noInterrupts(); // disable all interrupts
TCCR0A = 0;
TCCR0B = 0;
TCNT0 = 0;
OCR0A = 40; // compare match register Duty Cycle * 16MHz/200kHz
OCR0B = 40; // compare match register 1 - Duty Cycle * 16MHz/200kHz
TIMSK0 |= (1 << OCIE0A); // enable timer compare interrupt
digitalWrite(pwmpin,HIGH);
TCCR0B |= (1 << CS00);
interrupts(); // enable all interrupts
}
ISR(TIMER0_COMPA_vect) {
digitalWrite(pwmpin, digitalRead(pwmpin) ^ 1);
//TIMSK0 |= (1 << OCIE0B); // enable timer compare interrupt
//TIMSK0 &= ~(1 << OCIE0A); // disable timer compare interrupt
}
Вместо импульса 5 В 200 кГц он показывает примерно сигнал 2 В 30 кГц. Кто-нибудь может сказать мне, в чем проблема?