Thank you very much for your answer cattledog.
Sorry to take so long to respond. The coronavirus situation has left us out of the office and now that I return to work I find myself with pending work. ![]()
Unfortunately I am not familiar with modifying registers and do not understand much of their specific functions. I have relied on copying the parameters to do this test program and I don't get the expected result.
When you say "use Timer1 in Mode 14, fast PWM with ICR1 as the top value", I don't quite understand what I should be doing.
I would appreciate if possible if you could tell me what I have to change.
Thank you very much again.
//12-Bit PWM on PIN9 using direct access to Timer1
//Fade in and out an LED connected to that pin
#define LEDValueWarm OCR1AÂ
#define LEDValueCool OCR1B
const int PWMMax = 4095;
int value = 1;
int direction = 1;
void setup() {
 pinMode(9,OUTPUT);
 pinMode(10,OUTPUT);
Â
// va bien mas o menos
 TCCR1A = (1 << COM1A1) |(1 << COM1B1) | (1 << WGM11);        // Enable Fast PWM on OC1A (Pin 9 warm) and in OC1B (Pin 10 cool)
 TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); // Mode 14 Fast PWM/ (TOP = ICR1), pre-scale = 1
 Â
 ICR1 = PWMMax; //Set the TOP value for 12-bit PWM
 LEDValueCool = 0;   //Set the PWM output to full off.
 LEDValueWarm = 0;   //Set the PWM output to full off.
}
void loop() {
 //Fade the LED between 0 and PWMMax and then back to 0
 value += direction;
 if (value <=0){
  direction = 1;
 }
 else if (value >= PWMMax){
  direction = -1;
 }
 LEDValueWarm = value;
 LEDValueCool = value;
 delay(25);
}