Pwm 16 bits en arduino mega

hOLA, HE ESTADO PROBANDO LAS SALIDAS PWM DE 16 BITS DEL mega 2560 Y ME HE ENCONTRADO CON UNA INQUIETUD; POE EJEMPLO HE INTENTADO OBTENER LA MISMA SEÑAL PWM YA PREVIAMENTE SETEADA POR LOS PINES CORRESPONDIENTES A oc1a, oc1b Y oc1c, YA QUE POR ESTOS 3 SEGUN EL MANUAL DEL ATMEGA2560 SE PUEDE TENES DICHA SEÑAL, PERO POR EL PIN DE oc1c NO HE PODIDO OBTENER DICHA SEÑAL NO ASI EN LOS oc1a Y oc1b QUE INCLUSO AL MISMO TIEMPO ME ENTREGAN SEÑAL PWM DE 16 BITS.

sI ALGUIEN TIENE LA RESPUESTA MUCHAS GRACIAS.

eSTE ES PARTE DEL SKETCH

pinMode(11, OUTPUT); //habilita pin11 OC1A COMO SALIDA

pinMode(12, OUTPUT); //HABILITA PIN 12 OC1B COMO SALIDA

pinMode(13, OUTPUT); //HABILITA PIN 13 OC1C COMO SALIDA

// Timer/Counter 1 initialization

TCCR1A = 0xA2; //borrado de OC1A OC1B y OC1CB en match,SET de estos registros al alcanzar BOTTOM(modo no invertido)

TCCR1B = 0x19; //modo operacion FAST PWM TOP= ICR1 y clk_i/o/1 es decir no preescalado

TCNT1H = 0x00; //carga valores iniciales a registros del contador1 H

TCNT1L = 0x00; //carga valores iniciales a registros del contador1 L

duty_cycle = 0; // Change this value to the desired duty cycle (0-100 %)

icr = F / fr - 1; // icr and frecuency values are set to generate a 25 kHZ signal 640=icr

frecuency = 16000000 / (1 + icr);

ICR1H = icr >> 8; //carga valores de ICRH ALTOS

ICR1L = icr & 0x00ff; //carga valores de ICRl BAJOS

// Sets the duty cycle with the value entered in line 12

delay(1500);

}

void loop() {

for (int i = 0; i < 1000; i++) {

temperature = analogRead(A0);

media = temperature + media;

delay(5);

}

temperature = media / 1000;

media = R * (1023.0 - temperature) / temperature;

media = 1 / (((log(media) - log(Rth)) / B_A) + (1 / 298.15)) - 273.15;

if (media >= 18 && media <= 22)

duty_cycle = (25 \* media - 450);

else if (media < 18)

duty_cycle = 0;

else duty_cycle = 100;

OCR1A = icr * (duty_cycle / 100.0);

OCR1B = icr * (duty_cycle / 100.0);

OCR1C = icr * (duty_cycle / 100.0);

//analogWrite(11, 255*duty_cycle/100);

Tu tema ha sido movido a la sección en español del foro. Utiliza el inglés en las secciones en inglés del foro.

Hazte un favor a ti mismo, edita tu post y cambia todo el texto en mayúsculas a minúsculas, como corresponde, también publica el código completo y de acuerdo a las Normas del foro.

Normas del foro en Español

Sobre escribir todo en mayúsculas