Есть система в которй raspberry pi передает по usb два числа на ардуино due, которые затем ардуино использует чтобы сгенерировать ШИМ сигнал для которого эти числа являются коэффициентом заполнения. При этом ШИМ сигнал не запускается. Как исправить программу? const int frequency = 60;
int kz_fb = 9; // коэффициент заполнения от 6 до 12 
int kz_lr = 9; // коэффициент заполнения от 6 до 12
int tcrc_fb = frequency * 10000 + 100000;
int tcrc_lr = frequency * 10000 + 100000;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);

  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);

  // 3 пин
  PMC->PMC_PCER1 |= PMC_PCER1_PID34;                     // Включение питания для таймера TC7 - Timer Counter 2 channel 1 IS TC7
  // 5 пин
  PMC->PMC_PCER1 |= PMC_PCER1_PID33;
  
  // 3 пин
  PIOC->PIO_PDR |= PIO_PDR_P28;                          // The pin is no more driven by GPIO
  PIOC->PIO_ABSR |= PIO_PC28B_TIOA7;                     // Periperal type B  - See page 859
  // 5 пин
  PIOC->PIO_PDR |= PIO_PDR_P25;                          
  PIOC->PIO_ABSR |= PIO_PC25B_TIOA6;

  // 3 пин
  TC2->TC_CHANNEL[1].TC_CMR = TC_CMR_TCCLKS_TIMER_CLOCK1  // MCK/2, clk on rising edge
                               | TC_CMR_WAVE               // Waveform mode
                               | TC_CMR_WAVSEL_UP_RC        // UP mode with automatic trigger on RC Compare
                               | TC_CMR_ACPA_CLEAR          // Clear TIOA7 on RA compare match  -- See page 883
                               | TC_CMR_ACPC_SET;           // Set TIOA7 on RC compare match

  // 5 пин  
  TC2->TC_CHANNEL[0].TC_CMR = TC_CMR_TCCLKS_TIMER_CLOCK1
                              | TC_CMR_WAVE
                              | TC_CMR_WAVSEL_UP_RC
                              | TC_CMR_ACPA_CLEAR
                              | TC_CMR_ACPC_SET;           

  //----------------------------------------------
  // Установка периодов и начальных коэффициентов заполнения
  TC2->TC_CHANNEL[1].TC_RC = tcrc_fb;  //<*********************  Frequency = (Mck/2)/TC_RC  Hz = 20 KHz
  TC2->TC_CHANNEL[1].TC_RA = (kz_fb * tcrc_fb) / 100;  //<********************   Duty cycle = (TC_RA/TC_RC) * 100  %

  TC2->TC_CHANNEL[0].TC_RC = tcrc_lr;  
  TC2->TC_CHANNEL[0].TC_RA = (kz_lr * tcrc_lr) / 100;

  // Разрешение прерываний по сравнению с RC
  TC2->TC_CHANNEL[1].TC_IER = TC_IER_CPCS;                 // Interrupt on RC compare match
  NVIC_EnableIRQ(TC7_IRQn);

  TC2->TC_CHANNEL[0].TC_IER = TC_IER_CPCS;
  NVIC_EnableIRQ(TC6_IRQn);

  // Запуск таймеров
  TC2->TC_CHANNEL[1].TC_CCR = TC_CCR_SWTRG | TC_CCR_CLKEN; // Software trigger TC7 counter and enable
  TC2->TC_CHANNEL[0].TC_CCR = TC_CCR_SWTRG | TC_CCR_CLKEN;
  
}

void updatePWM() {
  // 3 пин - вперёд/назад
  TC2->TC_CHANNEL[1].TC_RA = (kz_fb * tcrc_fb) / 100;  
  // 5 пин - влево/вправо
  TC2->TC_CHANNEL[0].TC_RA = (kz_lr * tcrc_lr) / 100;
}

void loop() {
  
  if (Serial.available() > 0) 
  {
    int combinedNumber  = Serial.parseInt(); 

    int number1 = (combinedNumber >> 4) & 0xF; 
    int number2 = combinedNumber & 0xF;        

    kz_fb = number1;
    kz_lr = number2;

    Serial.println(number1); 

    updatePWM();
  }
}


void TC7_Handler() {
  // Очистка прерывания
  TC_GetStatus(TC2, 1);
}

void TC6_Handler() {
  // Очистка прерывания
  TC_GetStatus(TC2, 0);
}