Как кодировать код преобразователя питания STM32 DC-AC? - PullRequest
1 голос
/ 07 марта 2019

У меня есть инвертор переменного тока, использующий трансформатор с центральной вкладкой. Мосфеты управляются с помощью 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

...