У меня есть инвертор переменного тока, использующий трансформатор с центральной вкладкой. Мосфеты управляются с помощью Arduino Nano с использованием ШИМ в корректном режиме P & F на таймере 0 @ 31 кГц, потому что таймер 1 делает что-то еще.
Выходной сигнал имеет мертвое время, чтобы оба мосфета не работали одновременно.
У меня вопрос, как написать тот же код, используя ядро maple ... особенно библиотеку HardwareTimer.
Вот код функции для нано:
void SetPowerFr(){
TCCR0A = 0; //reset the register
TCCR0B = 0; //reset the register
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00);//Phase-correct
TCCR0B = (TCCR0B & 0b11111000) | 0x01;//Prescaler
TCCR0A = (TCCR0A & 0x0F) | 0xB0 ; // invert Pin B
OCR0B = 255; //it is inverted!!!
CiclosReloj = round(Crystal*1000000.0/(2.0*maxPowerFr));
currPowerFr = Crystal*1000000.0/(2.0*CiclosReloj);
}
void SetPowerDC() {//duty control set
//Positive duration (Duty cycle)
CiclosPos = round(CiclosReloj * (currPowerDC/(200.0+PowerSafe)));
}
void PowerOn(){
//ICR1 = CiclosReloj; //if timer1 is used
OCR0A = CiclosPos; //Positive duration (Duty cycle)
OCR0B = CiclosReloj-CiclosPos; //Note: IRC1=OCR1A+OCR1B.
}
void PowerOff(){
//ICR1 = 0;//if timer1 is used
OCR0A = 0;
OCR0B = 255;//it is inverted!!!
}
вот видео сигнала:
Video Inverter